php实现自动获取生成关键词功能

tag什么的都是要求使用程序的人自行输入,对于某些懒人及为了程序的体验,则是希望可以有自动生成文章关键词,自动获取文章tag的类似功能,这次为了迎接新的项目,所以捣鼓了一晚上,研究了一下这个功能。

要实现自动获取关键词的功能,大概可以分成三步

1,通过分词算法将标题和内容分别进行分割,提取出关键词和频度。当前主要的两个算法是中科院的ICTCLAS和隐马尔可夫模型。但这两个都太高端,有一定的门槛,且都是只支持C++/JAVA。基于PHP的当前有两个是值得推荐的PSCWS和HTTPCWS。 SCWS于2008-03-08发布1.0.0 正式版,到现在最新版本已经到了1.0.4。PSCWS是它的PHP版。而HTTPCWS是张宴开发的,之前叫PHPCWS。PHPCWS 先使用“ICTCLAS 3.0 共享版中文分词算法”的API进行初次分词处理,再使用自行编写的“逆向最大匹配算法”对分词和进行词语合并处理,并增加标点符号过滤功能,得出分词结果。不过很遗憾目前仅支持Linux系统,尚未移植到win平台上。

2,将提取结果与现有词库进行比较,处理,去除无用的词得到最符合规则的关键词。这里主要就是要看词库了,我们可以自己定义词库,也可以使用现有的成熟词库。比如新浪和网易博客都有这个功能,。他们分词应该有不错的词库,因为他们都是大网站,而我呢,区区一个小程序员,不可能搞到什么权威的词库,所以只能从现有的开源程序上入手,看看他们的词库。

3,在处理后的提取结果中选择适当的作为最终的关键词,得到最符合当前内容的关键词,在这个阶段就是具体情况具体分析了,无论如何也不可能达到人的那种智能化。最多是。当前PHP类CMS都自有自己的提取关键词系统。

目前在网络上流传最广的是DEDECMS的分词源码,我做了测试,发现相当的呆,效果很不好。它先设置一个关键词长度,确定获取关键词的数量,然后取词,它认为标题分好的词就是所需关键词,在加上从正文中读取关键词只到达到这个所设置的长度,就是最终关键词了。另外类似“我们”等无意义的词也没有去除掉提取并被列为关键词的频率太高,甚至有时候还会把空格的HTML提出来做为关键词,亟待改进。不过如果作为辅助功能,它已经很好了。而discuz的稍微好一些,但是discuz并没有提供源码,只是提供了一个在线api。

而dede的分词也有好几个版本,最好的应该是最新版的吧,出现频率什么都有了,下面就以dede5.7的分词和discuz的api的结果对比下

测试例子:

$title="THINKPHP官方即将停止对2.0版本的支持";

$body="了更好地做好ThinkPHP框架的开发、维护和支持工作,官方宣布从2012年5月1日起s对2.0及之前版本的维护和支持,为了节能低碳考虑,同时也取消官网的相应版本和文档下载。

就此缅怀那些年,曾经一起开发的ThinkPHP版本吧!

关于ThinkPHP 2.0版本

ThinkPHP 诞生于2006年,致力于WEB应用的快速开发,其2.0版本发布于2009年10月1日 ,在之前的1.*版本上完成新的重构和飞跃,当时是一次划时代的版本,为新版奠定了基础,同时也积累了较多的用户群和网站,随着框架的快速更新,和新版 2.1、2.2和3.0版本的陆续发布,预示着ThinkPHP的3.0时代到来了,2.0的生命周期宣告结束。但基本上2.0的很多功能都延续或者完善到2.1版本中了,从2.0版本升级到2.1和2.2版本也相对轻松。2.2版本是2.*版本的最终版本,不再更新功能,仅做BUG修复。";

一、dede分词

将结果排序后如下

标题Array

(

[THINKPHP] => 1

[官方] => 1

[即将] => 1

[停止] => 1

[对] => 1

[2.0] => 1

[版本] => 1

[的] => 1

[支持] => 1

)

内容Array

(

[版本] => 12

[的] => 12

[和] => 8

[ThinkPHP] => 5

[2.0] => 5

[也] => 3

[2.2] => 3

[2.1] => 3

[开发] => 3

[3.0] => 2

[是] => 2

[快速] => 2

[到] => 2

[发布] => 2

[维护] => 2

[之前] => 2

[了] => 2

[新版] => 2

[支持] => 2

[框架] => 2

[同时] => 2

[从] => 2

*******

对此如何取出最终的需要的关键词呢? 初步思路是先去除“的”,“些”这些词,再按照内容的排序顺序,依次看分到是否出现在标题中出现即为所需的,这样可以取出一定量的词最为最终关键词。如上结果我们可以得到

版本 thinkphp 2.0 支持 停止

五个关键词。看起来结果还是可以接受的。

二、在来看discuz的,利用api得到的是一个xml文档,解析后得到的关键词是

的、快速、版本升级、开发、用户

五个词,第一个是“的”......

对比这两种方式发现第一种dede+后续处理的较为接近文档的内容,应该是稍好一些,而discuz的偏离了文章的主题,但是其取到词有一定的热门性。

作者:zdrjlamp

/phprm/15580.htmlwww.phpzy.comtrue/phprm/15580.htmlTechArticlephp实现自动获取生成关键词功能 tag什么的都是要求使用程序的人自行输入,对于某些懒人及为了程序的体验,则是希望可以有自动生成文章关键词,自动获取文章tag的类似功能,这次为...

php 自动关键词,php实现自动获取生成关键词功能相关推荐

  1. python关键词大全_Python 批量获取Baidu关键词的排名并入库

    1.[代码][Python]代码 #-*- coding: UTF-8 -*- #Python UTF-8 抓取百度关键词V1.0 #key.txt是抓取文件配置 #author PHPer.yang ...

  2. 自动生成文章的html,文章自动更新工具|自动生成文件|自动伪原创|文章自动插入关键词工具...

    概念网络发布一款自动更新文章的工具, 该套工具可用概念的文章站程序, 概念的发布站程序, 概念的企业站程序, 只要在服务器一直开着这个工具, 工具会更具配置文件的配置, 每天定时的更新网站的文章, 文 ...

  3. jeecg-boot自动生成代码_无代码实现销售系统自动判定并生成订单功能

    ERP项目中,业务员创建销售单后,还需要确认产品库存是否充足,如不充足,还需要手动创建生成订单通知车间进行生产,比较麻烦,客户希望系统可以自动进行判断,自动根据现有库存生成生产订单. 目标: 新建销售 ...

  4. html5自动生成图片,HTML5拖放API如何实现自动生成相框功能 HTML5拖放API实现自动生成相框功能代码...

    HTML5拖放API如何实现自动生成相框功能?下面小编给大家分享一下HTML5拖放API实现自动生成相框功能代码,代码很详细,小编觉得挺不错的,有需要的小伙伴们可以来看看. 实现功能: 将桌面图片拖入 ...

  5. 织梦全站自动关键词内链插件可指定关键词批量插入内链

    织梦网站内链插件对网站优化排名的好处 1.织梦网站内部链结构有助于提高搜索引擎的爬行效率,从而增强网站的包容性.搜索引擎根据页面中的链接从一个页面爬行到另一个页面. 2.织梦网站内部链接则代表网站页面 ...

  6. 关键词抽取与自动文摘

    关键词抽取与自动文摘 在自然语言处理中对于关键词抽取与自动文摘这两个主题,有着多种多样的方式去解决它们,这里将介绍一种叫做TextRank的方法,就可以解决这两个问题.我将结合具体的代码,试图将算法解 ...

  7. html相框自动生成功能,网页制作HTML5拖放API实现自动生成相框功能

    实现功能: 将桌面图片拖入指定地方,生成相框和相关信息. 相框需要自己配置,设置为背景,在CSS中设置. 效果如图: html部分: H5拖放API之图片相框效果 > 请将图片拖放至此处 CSS ...

  8. HTML5自动生成相框,HTML5拖放API实现自动生成相框功能

    实现功能: 将桌面图片拖入指定地方,生成相框和相关信息. 相框需要自己配置,设置为背景,在CSS中设置. 效果如图: html部分: H5拖放API之图片相框效果 > 请将图片拖放至此处 CSS ...

  9. 自动登录TP-LINK路由器,获取所有信息,重启等等,实用方法

    用Python自动登录TP-LINK路由器,获取信息,重启等操作 思路:想获取TP-LINK里面的所有信息,必须首先登录,然后提交相应的操作(比如重启) 1. 做任何操作,首先得登录到路由器 界面上面 ...

最新文章

  1. 使用命令wsimport构建WebService客户端
  2. 限定项目的 Node.js 版本
  3. java.lang.VerifyError解决方案 Android
  4. 利用邻接表完成图的BFS和DFS
  5. GDCM:rle转img文件的测试程序
  6. Ubuntu下共享目录的设置
  7. 软件推荐---站长查询工具
  8. Spring-JDBC通用Dao
  9. 开发日志_Jan.8.2017
  10. $Django Paginator分页器 批量创建数据
  11. SpringCloud学习笔记027---SpringBoot集成MyBatis_实现多数据源_可以自定义数据库类型
  12. LeetCode(509)——斐波那契数(JavaScript)
  13. 你们一般持有几支基金?怎么管理的?
  14. end_request: I/O error
  15. 根据秒数返回(天,小时,分钟,秒)
  16. java类 家族成员 姓氏_中国史上十大家族,占据中国九大姓,看看有没有你的姓氏...
  17. html中的排名怎么写,html制作畅销书排行榜
  18. 【Strategy模式】C++设计模式——策略模式
  19. 【时间之外】几张图说清楚供应链金融赚钱方法
  20. PrinTao CANON Home Studio Edition 8.0r12 17 Mac 佳能专业打印软件

热门文章

  1. 【龙讯module小课堂】“光”怪陆离:PWmat计算光学性质(三)
  2. PHP解析js的escape()函数编码数据
  3. 说说Linux的用途
  4. python之最大公约数
  5. 冰河亲自整理的Git命令汇总,悄悄努力,然后惊艳所有人
  6. SpringMVC前端控制器的配置理解
  7. Mapbox使用详解
  8. 论文期刊快速发表的方法
  9. egret白鹭引擎基础介绍
  10. 2023大数据技术应用的五个主要场景总结