对php的pscws4中文分词进行分词和关键词扩展
最近需要对中文文本内容,进行关键词提取,然后但是公司的关键字不认识无法提取出来,于是便去找寻解决的办法,根据文档得知set_dict方法设置的是分词关键字,而 dict.utf8.xdb 文件是词库。那么只需要向这个文件增加词汇即可。
但是这个文件并不是我们一般看到的文本内容,而是其他进制的编码文件,因此我们需要反编译会文本内容,然后新增词汇,再编译成xdb文件才行。
我们需要使用一个工具来对dict.utf8.xdb进行编译和反编译,这里把我找到的gitee和composer包的地址放在这里。
pscws中文分词: pscws 中文分词扩展 (gitee.com)
composer包的页面地址:gaolei/pscws - Packagist
php的pscws4中文分词扩展教程步骤:
1:安装composer工具包
composer require gaolei/pscws
2:不论你是使用框架或者是原生的,编译和反编译的代码就是这个,怎么用向下看。
public function fenci()
{
$xdbTool = \Gaolei\Pscws\tools\XdbTool::init();
// txt 文件编译 xdb
// $xdbTool->make('./dict/dict.utf8.txt', './dict/dict.utf8.xdb');
// xdb 反编译到 txt
// $xdbTool->dump('./dict/dict.utf8.xdb', './dict/dict.utf8.txt');
die('ok');
}
3:这里要在访问的项目运行根目录中,也就是你入口文件index.php所在目录,创建一个文件目录 dict ,然后找到文件:dict.utf8.xdb,这个文件无论你用的什么pscws4的包,只要是基于这个的,就会有这个,找到这个文件,比如代码是这样的:
$cws = new PSCWS4('utf8');
$cws->set_dict(__DIR__ . '/etc/dict.utf8.xdb');
$cws->set_rule(__DIR__ . '/etc/rules.utf8.ini');
4:然后把他复制到目录 dict 中,然后把 xdb 反编译到 txt 的代码解开注释执行一下代码,便会得到文件dict.utf8.txt,然后打开这个文件
5:往这个文件中添加新的词汇即可,文件格式说明在下面,这里说一下最后一列的Attr,你需要根据你添加的关键词来写,如果你是名词就写 n ,如果是公司名就是机构团体写 nt 如果是人名就是 nr,具体的可以看下面的对照表。
编辑完成之后,然后把的刚才解开注释的再次注释了,现在把txt 文件编译 xdb 这行代码的注释解开并执行得到一个新的dict.utf8.xdb文件,把这个丢回词库目录的位置覆盖掉,但是覆盖之前做好备份哦,然后就可以去尝试自定义的名词是否有效(注意:我这里的新增的关键词是我用来写教程的,并不是我实际开发要用到的)。
6:关于txt 文件格式说明
关于文本文件的说明,每行一条记录,#开头表示注释,每条记录由 word
(词)、TF
(词频系数)、IDF
(逆词频率系数)、Attr
(北大标注法的词性)组成。
7:北大词性标注版本:Attr
Ag
形语素
形容词性语素。形容词代码为a,语素代码g前面置以A。
a
形容词
取英语形容词adjective的第1个字母。
ad
副形词
直接作状语的形容词。形容词代码a和副词代码d并在一起。
an
名形词
具有名词功能的形容词。形容词代码a和名词代码n并在一起。
b
区别词
取汉字“别”的声母。
c
连词
取英语连词conjunction的第1个字母。
Dg
副语素
副词性语素。副词代码为d,语素代码g前面置以D。
d
副词
取adverb的第2个字母,因其第1个字母已用于形容词。
e
叹词
取英语叹词exclamation的第1个字母。
f
方位词
取汉字“方”
g
语素
绝大多数语素都能作为合成词的“词根”,取汉字“根”的声母。
h
前接成分
取英语head的第1个字母。
i
成语
取英语成语idiom的第1个字母。
j
简称略语
取汉字“简”的声母。
k
后接成分
l
习用语
习用语尚未成为成语,有点“临时性”,取“临”的声母。
m
数词
取英语numeral的第3个字母,n,u已有他用。
Ng
名语素
名词性语素。名词代码为n,语素代码g前面置以N。
n
名词
取英语名词noun的第1个字母。
nr
人名
名词代码n和“人(ren)”的声母并在一起。
ns
地名
名词代码n和处所词代码s并在一起。
nt
机构团体
“团”的声母为t,名词代码n和t并在一起。
nz
其他专名
“专”的声母的第1个字母为z,名词代码n和z并在一起。
o
拟声词
取英语拟声词onomatopoeia的第1个字母。
ba 介词 把、将
bei 介词 被
p
介词
取英语介词prepositional的第1个字母。
q
量词
取英语quantity的第1个字母。
r
代词
取英语代词pronoun的第2个字母,因p已用于介词。
s
处所词
取英语space的第1个字母。
Tg
时语素
时间词性语素。时间词代码为t,在语素的代码g前面置以T。
t
时间词
取英语time的第1个字母。
dec 助词 的、之
deg 助词 得
di 助词 地
etc 助词 等、等等
as 助词 了、着、过
msp 助词 所
u
其他助词
取英语助词auxiliary
Vg
动语素
动词性语素。动词代码为v。在语素的代码g前面置以V。
v
动词
取英语动词verb的第一个字母。
vd
副动词
直接作状语的动词。动词和副词的代码并在一起。
vn
名动词
指具有名词功能的动词。动词和名词的代码并在一起。
w
其他标点符号
x
非语素字
非语素字只是一个符号,字母x通常用于代表未知数、符号。
y
语气词
取汉字“语”的声母。
z
状态词
取汉字
文笔不好,如果有疑问可以提出,我会改进文章让更多人看懂 --博客园的wekyun
本文来自博客园,作者:wekyun,转载请注明原文链接:https://www.cnblogs.com/wekyun/articles/15699253.html