中文分词工具使用方法及比较
中文分词工具分词背景介绍安装及介绍(jieba、pyhanlp、pkuseg、thulac、snownlp、nlpir)windowst系统分词工具安装Linux系统分词工具安装数据集介绍实验结果及比较参考文献分词背景介绍 不管在平时的实验还是比赛中,NLP的绝大多数任务(情感分析、阅读理解、对话系统、文本分类、..
中文分词工具
分词背景介绍
不管在平时的实验还是比赛中,NLP的绝大多数任务(情感分析、阅读理解、对话系统、文本分类、信息抽取、机器翻译等等)都需要在词的基础上进行。因此,中文分词作为这些任务的底层任务之一,一定程度上决定了这些任务的上限。通常我们在英文中使用空格分隔,但是在中文中就有很大的不同,其难点在中文的歧义现象以及一些新词汇的出现(如一些网络词汇)。本文将介绍当前主流的分词工具及其用法,并在icwb2数据集上做一个小实验,验证分词工具的性能,最后得出各分词工具的优缺点。
安装及介绍(jieba、hanlp、pkuseg、thulac、snownlp、nlpir)
当下主流的分词工具一般分为jieba、hanlp、pkuseg、thulac、snownlp、nlpir几种,其运行环境通常划分为windows与linux,下面分别介绍。
windowst系统分词工具安装
pip3 install jieba
在安装速度极其慢的情况下,如果你未安装代理,最好使用pip的清华源,如果你想要更换安装源,请移步更换安装源如果你不想切换,可以添加参数(下同)
-i https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install hanlp
如安装出错,请移步windows hanlp安装问题
3. pkuseg
pip3 install pkuseg
pip3 install thulac
pip3 install snownlp
pip3 install pynlpir
安装错误,请移步错误分析及其解决方案
Linux系统分词工具安装
sudo pip3 install jieba
在安装速度极其慢的情况下,如果你未安装代理,最好使用pip的清华源,如果你想要更换安装源,请移步更换安装源如果你不想切换,可以添加参数(下同)
-i https://pypi.tuna.tsinghua.edu.cn/simple
sudo pip3 install hanlp
sudo pip3 install pkuseg
sudo pip3 install thulac
sudo pip3 install snownlp
sudo pip3 install pynlpir
安装错误,请移步[错误分析及其解决方案](https://blog.csdn.net/ykf173/article/details/105601612)。
使用方法介绍
# encoding=utf-8
import jieba
jieba.enable_paddle()# 启动paddle模式。 0.40版之后开始支持,早期版本不支持
strs=["我来到北京清华大学","乒乓球拍卖完了","中国科学技术大学"]
for string in strs:
seg_list = jieba.cut(string,use_paddle=True) # 使用paddle模式
print("Paddle Mode: " + '/'.join(list(seg_list)))
seg_list = jieba.cut("我来到北京清华大学", cut_all=True)
print("Full Mode: " + "/ ".join(seg_list)) # 全模式
seg_list = jieba.cut("我来到北京清华大学", cut_all=False)
print("Default Mode: " + "/ ".join(seg_list)) # 精确模式
seg_list = jieba.cut("他来到了网易杭研大厦") # 默认是精确模式
print(", ".join(seg_list))
seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造") # 搜索引擎模式
print(", ".join(seg_list))
import hanlp
han_tokenizer = hanlp.load('PKU_NAME_MERGED_SIX_MONTHS_CONVSEG')
sentences = ['萨哈夫说,伊拉克将同联合国销毁伊拉克大规模杀伤性武器特别委员会继续保持合作。',
'上海华安工业(集团)公司董事长谭旭光和秘书张晚霞来到美国纽约现代艺术博物馆参观。',
'HanLP支援臺灣正體、香港繁體,具有新詞辨識能力的中文斷詞系統']
print(tokenizer(sentences))
# pkuseg分词
# pkuseg.pkuseg(model_name="default", user_dict="default", postag=False)
# model_name
# 模型路径。
# "default",默认参数,表示使用我们预训练好的混合领域模型(仅对pip下载的用户)。
# "news", 使用新闻领域模型。
# "web", 使用网络领域模型。
# "medicine", 使用医药领域模型。
# "tourism", 使用旅游领域模型。
# model_path, 从用户指定路径加载模型。
# user_dict
# 设置用户词典。
# "default", 默认参数,使用我们提供的词典。
# None, 不使用词典。
# dict_path, 在使用默认词典的同时会额外使用用户自定义词典,可以填自己的用户词典的路径,词典格式为一行一个词。
# postag
# 是否进行词性分析。
# False, 默认参数,只进行分词,不进行词性标注。
# True, 会在分词的同时进行词性标注。
import pkuseg
sentence = '萨哈夫说,伊拉克将同联合国销毁伊拉克大规模杀伤性武器特别委员会继续保持合作。'
seg = pkuseg.pkuseg(postag=False) # 以默认配置加载模型,不进行词性分析
sentence = seg.cut(sentence) # 进行分词
print(' '.join(sentence))
import thulac
sentence = '萨哈夫说,伊拉克将同联合国销毁伊拉克大规模杀伤性武器特别委员会继续保持合作。'
#seg_only设置词性标注与否,deli设置分词以后以什么分隔
thu = thulac.thulac(seg_only=True, deli=' ')
text = thu.cut(sentence, text=True)
print('thulac分词:', sentence)
import snownlp
sentence = '萨哈夫说,伊拉克将同联合国销毁伊拉克大规模杀伤性武器特别委员会继续保持合作。'
sentence = SnowNLP(sentence).words
print(' '.join(sentence))
# -*- coding: utf-8 -*-
import pynlpir
sentence = '萨哈夫说,伊拉克将同联合国销毁伊拉克大规模杀伤性武器特别委员会继续保持合作。'
pynlpir.open()
#pos_tagging:是否进行词性标注
tag_seg = pynlpir.segment(sentence, pos_tagging=False)
print('pynlpir分词:',tag_seg)
tag_word = pynlpir.segment(sentence, pos_tagging=True)
print('pynlpir词性标注:',tag_word)
pynlpir.close()
数据集介绍
使用The Second International Chinese Word Segmentation Bakeoff in SIGHAN 2005 Workshop (Emerson, 2005)提供的数据集icwb2-data. 提取码:yyke
icwb2 包含4个数据集,繁体中文数据集2个:AS, CityU; 简体中文数据集2个:PK, MSR.
评价指标
F1-Score
真实: 共同 创造 美好 的 新 世纪 —— 二○○一年 新年 贺词
预测: 共同 创造 美 好 的 新 世纪 —— 二○○一年 新年 贺词
Precision = 9 / 11 = 0.818
Recall = 9 / 10 = 0.9
F1 = 0.857
实验结果及比较
笔者从F1-score及时间效率两个方面进行了比较
时间表格中各单位秒(s),分(m),时(h)
结论
从分词性能上来说,hanlp与pkuseg两大工具取得了极其优异的效果,但是耗费时间太多,因此作为NLP底层的分词工具,并不是可靠的工具。但是值得一提的是,这两个工具可以作为针对专业领域中文分词的分词工具。
从时间与分词性能的综合角度来看,thulac与jieba分词工具性能虽然不是最好,但是其耗费的时间却是最少的。对于大多数以中文分词作为底层工作的NLP任务,这两个工具应该作为首选。
github项目地址
参考文献
[1]https://www.cnblogs.com/maxxu11/p/12615112.html
[2]https://chinesenlp.xyz/#/zh/docs/word_segmentation
更多推荐
所有评论(0)