中文分词:分词工具及使用实践总结
中文分词:分词工具及使用实践总结
引子: 前几篇文章我们介绍了,中文分词的历程,从机械分词、机器学习分词、深度学习分词方面,讲解了分词算法以及相应的代码实践。今天,我们主要去看看在开源工作中,有哪些在中文场景下,进行中文分词的工具,能够让我们在自己的项目中,快速上手并应用。
回顾:
- 中文分词总结:历程、问题、发展
- 中文分词:机械分词算法详解与实践总结
- 中文分词:机器学习分词算法详解与实践总结【ing】
- 中文分词:深度学习分词算法详解与实践总结【ing】
中文分词(Chinese Word Segmentation,CWS)是自然语言处理(NLP)的基础任务之一,其效果直接影响文本分析、情感分析、机器学习等下游任务的质量。本次对 13 种主流中文分词工具 进行总结并简单测评,涵盖通用工具与垂域能力,旨在为开发者提供选型参考。
01-jieba
具体实践与说明,可看项目:https://github.com/liu673/Awesome-Chinese-Word-Segmentation-Tools
- 简介:jieba是Python中文分词库,支持精确、全模式和搜索引擎模式,基于统计词典与动态规划算法实现高效分词。
- github地址:https://github.com/fxsjy/jieba
- 开源协议:MIT license
- 下载:
pip install jieba
- 测试案例及使用说明:01-jieba.py
- 测试案例中jieba版本为
0.42.1
- 测试案例中jieba版本为
02-cutword
具体实践与说明,可看项目:https://github.com/liu673/Awesome-Chinese-Word-Segmentation-Tools
- 简介:cutword 是一个中文分词库,字典文件根据截止到2024年1月份的最新数据统计得到,词频更加合理。
基于ac自动机实现的分词算法,分词速度是jieba的两倍。 - github地址:https://github.com/liwenju0/cutword
- 开源协议:Apache-2.0 license
- 下载:
pip install cutword
- 测试案例及使用说明:02-cutword.py
- 测试案例中cutword版本为
0.1.1
- 测试案例中cutword版本为
03-pkuseg
具体实践与说明,可看项目:https://github.com/liu673/Awesome-Chinese-Word-Segmentation-Tools
-
简介:pkuseg
是基于论文Luo et. al, 2019
的工具包。其简单易用,支持细分领域分词,有效提升了分词准确度。 -
github地址:https://github.com/lancopku/pkuseg-python
-
开源协议:MIT license
-
下载:
pip install pkuseg
-
测试案例及使用说明:03-pkuseg.py
- 测试案例中pkuseg版本为
0.0.25
- 测试案例中pkuseg版本为
-
目前pkuseg支持细分领域模型的分词
{"mixed": "混合领域,默认模型", "default_v2": "领域自适应通用模型,相较于默认模型规模更大,但泛化性能更好","medicine": "医药领域模型", "news": "MSRA(新闻语料)模型","web": "微博(网络文本语料)模型","tourism": "旅游领域模型","art": "艺术领域模型","entertainment": "娱乐体育领域模型","science": "科技领域模型","postag": "词性标注模型,这个在参数postag=True时使用" }
细分领域模型下载地址:https://github.com/lancopku/pkuseg-python/releases
04-baidu lac
具体实践与说明,可看项目:https://github.com/liu673/Awesome-Chinese-Word-Segmentation-Tools
-
简介:LAC全称Lexical Analysis of Chinese,是百度自然语言处理部研发的一款联合的词法分析工具,实现中文分词、词性标注、专名识别等功能。
-
github地址:https://github.com/baidu/lac
-
开源协议:Apache-2.0 license
-
下载:
pip install lac
-
测试案例及使用说明:04-baidu_lac.py
- 测试案例中lac版本为
2.1.2
TIPS:
注意paddlepaddle版本(paddlepaddle为2.5.2)、python版本(python为3.10.18)、lac版本(lac为2.1.2)
,得三者匹配(在这吐槽baidu,尾大不掉,在各个开源上摆烂了) - 测试案例中lac版本为
05-jiagu
具体实践与说明,可看项目:https://github.com/liu673/Awesome-Chinese-Word-Segmentation-Tools
- 简介:Jiagu使用大规模语料训练而成。将提供中文分词、词性标注、命名实体识别、情感分析、知识图谱关系抽取、关键词抽取、文本摘要、新词发现、情感分析、文本聚类等常用自然语言处理功能。
- github地址:https://github.com/ownthink/Jiagu
- 开源协议:MIT license
- 下载:
pip install jiagu
- 测试案例及使用说明:05-jiagu.py
- 测试案例中jiagu版本为
0.2.3
- 测试案例中jiagu版本为
06-HanLP
具体实践与说明,可看项目:https://github.com/liu673/Awesome-Chinese-Word-Segmentation-Tools
- 简介:HanLP覆盖新闻、社交媒体、金融、法律等多个领域,在分词标准上,HanLP提供细粒度和粗粒度两种颗粒度,细粒度适合搜索引擎业务,粗粒度适合文本挖掘业务。
- github地址:https://github.com/hankcs/HanLP
- pyhanlp:https://github.com/hankcs/pyhanlp
- 开源协议:Apache-2.0 license
- 下载:
pip install pyhanlp
- 测试案例及使用说明:06-pyhanlp.py
- 测试案例中pyhanlp版本为
0.1.89
- 测试案例中pyhanlp版本为
07-jiojio
具体实践与说明,可看项目:https://github.com/liu673/Awesome-Chinese-Word-Segmentation-Tools
- 简介:基于 CPU 的高性能、持续优化 中文分词器,支持中文分词、词性标注、添加自定义词典(静态、动态)
- github地址:https://github.com/dongrixinyu/jiojio
- 开源协议:GPL-3.0 license
- 下载:
pip install jiojio
- 测试案例及使用说明:07-jiojio.py
- 测试案例中jiojio版本为
1.2.8
- 测试案例中jiojio版本为
08-HarvestText
具体实践与说明,可看项目:https://github.com/liu673/Awesome-Chinese-Word-Segmentation-Tools
- 简介:HarvestText是一个专注无(弱)监督方法,能够整合领域知识(如类型,别名)对特定领域文本进行简单高效地处理和分析的库。其中分词器用的应该是jieba分词。
- github地址:https://github.com/blmoistawinde/HarvestText
- 开源协议:MIT license
- 下载:
pip install harvesttext
- 测试案例及使用说明:08-harvesttext.py
- 测试案例中harvesttext版本为
0.8.2.1
- 测试案例中harvesttext版本为
09-pynlpir
具体实践与说明,可看项目:https://github.com/liu673/Awesome-Chinese-Word-Segmentation-Tools
- 简介:NLPIR大数据语义智能分析平台是针对大数据内容处理的需要,融合了网络精准采集、自然语言理解、文本挖掘和网络搜索技术的十三项功能:精准采集、文档转换、新词发现、批量分词、语言统计、文本聚类、文本分类、摘要实体、情感分析、智能过滤、文档去重、全文检索、编码转换。
- github地址:https://github.com/tsroten/pynlpir
- 开源协议:MIT license
- 下载:
pip install pynlpir
,然后魔法运行pynlpir update
- 测试案例及使用说明:09-pynlpir.py
- 测试案例中pynlpir版本为
0.6.1
- 测试案例中pynlpir版本为
10-THULAC
具体实践与说明,可看项目:https://github.com/liu673/Awesome-Chinese-Word-Segmentation-Tools
- 简介:一个高效的中文词法分析工具包,具有中文分词和词性标注功能。
- github地址:https://github.com/thunlp/THULAC-Python
- 开源协议:MIT license
- 下载:
pip install thulac
- 测试案例及使用说明:10-thulac.py
- 测试案例中thulac版本为
0.2.2
- 测试案例中thulac版本为
11-macropodus
具体实践与说明,可看项目:https://github.com/liu673/Awesome-Chinese-Word-Segmentation-Tools
- 简介:Macropodus是一个以Albert+BiLSTM+CRF网络架构为基础,用大规模中文语料训练的自然语言处理工具包。将提供中文分词、词性标注、命名实体识别、关键词抽取、文本摘要、新词发现、文本相似度、计算器、数字转换、拼音转换、繁简转换等常见NLP功能。
- github地址:https://github.com/yongzhuo/Macropodus
- 开源协议:MIT license
- 下载:
pip install macropodus
- 测试案例及使用说明:11-macropodus.py
- 测试案例中macropodus版本为
0.0.7
- 测试案例中macropodus版本为
12-pyltp & ltp
具体实践与说明,可看项目:https://github.com/liu673/Awesome-Chinese-Word-Segmentation-Tools
- 简介:LTP(Language Technology Platform) 提供了一系列中文自然语言处理工具,用户可以使用这些工具对于中文文本进行分词、词性标注、句法分析等等工作。
- github地址:https://github.com/HIT-SCIR/pyltp
- 开源协议:MIT license
- 测试案例及使用说明:12-pyltp.py
- 测试案例中pyltp版本为
0.4.0
- 测试案例中pyltp版本为
总结
目前是对中文分词的工具进行了简单测评,并没有形成一个完整的测评标准,后续考虑进行测评框架,进行批量测试。
若是从速度上来说的话,可以优先看jieba分词,毕竟这个项目算是最稳定的项目了。在自己的垂域上,最好的方法是添加自己垂域的数据,而后进行训练;或者也可以增加相应的词典,不过这都是一个人工性比较重的工作了。