欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

ThinkPHP 3.2 中文分词 提取关键字

程序员文章站 2022-06-11 10:24:08
...
由于业务的需求,公司研发团队正在基于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元