中文分词:分词工具及使用实践总结
引子: 前几篇文章我们介绍了,中文分词的历程,从机械分词、机器学习分词、深度学习分词方面,讲解了分词算法以及相应的代码实践。今天,我们主要去看看在开源工作中,有哪些在中文场景下,进行中文分词的工具,能够让我们在自己的项目中,快速上手并应用。
回顾:
中文分词总结:历程、问题、发展中文分词:机械分词算法详解与实践总结中文分词:机器学习分词算法详解与实践总结【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
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
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支持细分领域模型的分词
{
"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,尾大不掉,在各个开源上摆烂了)
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
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
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
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
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
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
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
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
总结
目前是对中文分词的工具进行了简单测评,并没有形成一个完整的测评标准,后续考虑进行测评框架,进行批量测试。
若是从速度上来说的话,可以优先看jieba分词,毕竟这个项目算是最稳定的项目了。在自己的垂域上,最好的方法是添加自己垂域的数据,而后进行训练;或者也可以增加相应的词典,不过这都是一个人工性比较重的工作了。