龙空技术网

pkuseg,准确率比jieba还高的分词工具库

科技K视界 1705

前言:

此时朋友们对“分词软件有哪些”大约比较注意,同学们都需要分析一些“分词软件有哪些”的相关内容。那么小编也在网上收集了一些关于“分词软件有哪些””的相关知识,希望你们能喜欢,咱们快快来了解一下吧!

pkuseg,准确率比jieba还高的分词工具库

我是@老K玩代码,专注分享实战项目和最新行业资讯,已累计分享超1000实战项目!

前言

老K最近在做一个医药领域的项目,在进行分词任务的时候遇到了极大的困难,对于那些“莫名其妙”的药品名称和专业术语,用jieba的分词效果十分堪忧,于是就在万能的交友网站github上寻求解决方案。 正是这个契机,老K发现了一个十分优秀的分词工具——pkuseg

这是一个由北京大学语言计算与机器学习研究组进行开发并开源的项目,名称中的pku就是北京大学的英文缩写,而seg是分词任务segment的缩写。

pkuseg是一个十分优秀的分词工具库,它对于中文分词的准确率高达95%左右,这个准确率甚至高过大名鼎鼎的jiebaTHULAC工具包。

它还有一个十分出色的优点,就是它还匹配了专业领域的分词模型,目前提供的专业领域包括: - 新闻领域 - 医药领域 - 网络领域 - 旅游领域

而且相信在未来,这个库还会不断更新更多应用场景和专业领域。我们今天就来一起了解一下这个工具库该如何使用吧!

安装

首先,我们需要通过pippkuseg安装到本地:

pip install pkuseg

一般来说,通过以上语句就能完成pkuseg的安装了。

不过考虑到目前这个工具库还在不断更新,未来可能会优化模型和专业领域,所以建议大家时不时用以下命令更新:

pip install -U pkuseg
基本分词

使用默认配置对文本进行分词操作。

import pkusegseg = pkuseg.pkuseg()text = seg.cut('中国经济高速发展,成为世界第二大经济体。')print(text)

使用默认配置,对上述语句进行分词,会得到以下结果:

['中国', '经济', '高速', '发展', ',', '成为', '世界', '第二', '大', '经济体', '。']
专业领域分词

当可以确定当前语句属于某个特定专业领域时,可以通过定义model_name来实现专业分词;

我们用默认模型和专业领域模型对同一语句进行分词,看看得到的结果有什么不同:

import pkusegsent = '不含预处理的同基因外周血造血干细胞移植治疗重型再生障碍性贫血获得长期缓解一例'seg1 = pkuseg.pkuseg()text1 = seg1.cut(sent)seg2 = pkuseg.pkuseg(model_name='medicine')text2 = seg2.cut(sent)print("默认模型得到的结果:", text1)print("医药模型得到的结果", text2)

上述代码得到的结果是:

默认模型得到的结果: ['不', '含', '预', '处理', '的', '同', '基因', '外', '周血', '造血', '干细胞', '移植', '治疗', '重型', '再生', '障碍性', '贫血', '获得', '长期', '缓解', '一', '例']医药模型得到的结果 ['不', '含', '预处理', '的', '同', '基因', '外周', '血', '造血干细胞', '移植', '治疗', '重型', '再生障碍性贫血', '获得', '长期', '缓解', '一', '例']

可以看到,用专业领域模型进行分词,得到的分词结果更有针对性,更准确。

词性标注

在实例化分词器的时候,可以通过定义参数postag的值为True,来开启词性标注的功能

import pkusegseg = pkuseg.pkuseg(postag=True)text = seg.cut('中国经济高速发展,成为世界第二大经济体。')print(text)

通过上述代码,会得到以下结果:

[('中国', 'ns'), ('经济', 'n'), ('高速', 'd'), ('发展', 'v'), (',', 'w'), ('成为', 'v'), ('世界', 'n'), ('第二', 'm'), ('大', 'a'), ('经济体', 'n'), ('。', 'w')]
添加自定义单词

pkuseg这个工具库还可以十分便捷地在分词时添加自定义单词。方法如下:

首先,你需要有一个自定义的词典文档,每一行定义一个单词;

然后在user_dict参数里定义你的自定义词典文档所在路径即可。

import pkusegseg = pkuseg.pkuseg(user_dict="dict_file.txt")text = seg.cut('中国经济高速发展,成为世界第二大经济体。')
对文档内容进行分词

pkuseg工具库还可以对文档进行分词,通过test方法,并定义好input_fileoutupt_file,能非常方便快捷地对文档文本分词并输出新文档

import pkusegpkuseg.test('input.txt', 'output.txt', nthread=20)

关于test方法中其它参数的说明:

- nthread: 由于文档的文本内容可能比较大,造成分词时间比较长,这时候可以定义nthread来增加线程,提高性能;

- model_name:这里的model_name和之前cut方法的参数有着相同的功能,可以使用专业领域的分词模型进行分词;

- user_dict:和cut方法一样,通过user_dict参数的设置,可以给分词模型添加自定义的单词;

- postag:用来控制输出结果是否需要进行词性标注。

总结

总体来说,pkuseg对于有分词需求的小伙伴来说,是十分实用且有效率的工具;

对于那些在指定专业领域下进行文字工作的小伙伴来说,pkuseg更是不可多得的神兵利器。

虽然pkuseg已经十分出色了,但并不是说这就是完美无缺了,pkuseg还是有一些值得改进的地方:

- 功能过于单一,应用场景仅限分词一处,可以考虑进一步完善其它nlp基础功能;

- 专业模型可以继续增加,拓展到更多专业领域;

- 词性标注的模型可以继续优化,目前的准确率仍有提高余地,尤其是专业领域模型;

我是@老K玩代码,专注分享实战项目和最新行业资讯,已累计分享超1000实战项目!

私信回复/ nlp /,获得相关学习资源。

标签: #分词软件有哪些