Live2D

对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

 

posted @ 2021-12-16 17:35  wekyun  阅读(708)  评论(0编辑  收藏  举报