首頁 >php教程 >php手册 >ThinkPHP 3.2 中文分词 提取关键字

ThinkPHP 3.2 中文分词 提取关键字

WBOY
WBOY原創
2016-06-07 11:38:581149瀏覽

由于业务的需求,公司研发团队正在基于ThinkPHP为底层框架的CMS系统。今天遇到了提取标题中的关键词这一个功能,我们在一起研究了很长时间。决定用Pscws4中文分词开源系统。中建出了一些小小的问题,所以委托小编我在此记录一下,为各位PHPer提供一下参考。
由于业务的需求,公司研发团队正在基于ThinkPHP为底层框架的CMS系统。今天遇到了提取标题中的关键词这一个功能,我们在一起研究了很长时间。决定用Pscws4中文分词开源系统。中建出了一些小小的问题,所以委托小编我在此记录一下,为各位PHPer提供一下参考。

SCWS 中文分词

SCWS 是 Simple Chinese Word Segmentation 的首字母缩写(即:简易中文分词系统)。

这是一套基于词频词典的机械式中文分词引擎,它能将一整段的中文文本基本正确地切分成词。 词是中文的最小语素单位,但在书写时并不像英语会在词之间用空格分开, 所以如何准确并快速分词一直是中文分词的攻关难点。

SCWS 采用纯 C 语言开发,不依赖任何外部库函数,可直接使用动态链接库嵌入应用程序, 支持的中文编码包括 GBK、UTF-8 等。此外还提供了 PHP 扩展模块, 可在 PHP 中快速而方便地使用分词功能。

分词算法上并无太多创新成分,采用的是自己采集的词频词典,并辅以一定的专有名称,人名,地名, 数字年代等规则识别来达到基本分词,经小范围测试准确率在 90% ~ 95% 之间, 基本上能满足一些小型搜索引擎、关键字提取等场合运用。首次雏形版本发布于 2005 年底。

第一步:准备好Pscws4资料

下载 XDB 词典文件 【简体中文(UTF-8)】
下载PSCWS4【pscws4-20081221.tar.bz2】
下载规则集文件【rules.tgz】

第二步:将下载的文件解压,其中的 dict.utf8.xdb 和 规则集文件 按照下图放置



第三步:将解压出来的PSCWS4类Pscws4.class.php 和 xdb_r.class.php 放到 ThinkPHP/Library/Vendor/Pscws下

第四步:在控制器里面实力类。

function get_tags($title,$num){
import("Vendor.Pscws.Pscws4");
$pscws = new \PSCWS4('utf8');
$pscws->set_dict(CONF_PATH . 'etc/dict.utf8.xdb');
$pscws->set_rule(CONF_PATH . 'etc/rules.utf8.ini');
$pscws->set_ignore(true);
$pscws->send_text($title);
$words = $pscws->get_tops($num);
$pscws->close();

$tags = array();
foreach ($words as $val) {
$tags[] = $val['word'];
}

return implode(',', $tags);
}
本来到这个时候就应该做好了,实现我们需要的分词功能了,但是却出现乱码了。这个问题折腾我们技术很长时间,怎么调试都不对,什么文件的读取权限之类的,全部都试一遍都不行。最后只好看源码。最终发现问题
在PSCWS4的构造函数中。

将构造函数修改为:function __construct($charset = 'gbk') { $this->PSCWS4($charset); }

ThinkPHP整合PSCWS4到此完满结束。

本文转载自:西安网站建设-陕西企尚网络科技有限公司 http://www.sxqswl.net/show-22-107-1.html

AD:真正免费,域名+虚机+企业邮箱=0元

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn