Python中文分词工具大合集:安装、使用和测试 - 我爱自然语言 ...
文章推薦指數: 80 %
再附加介绍12款其他的中文分词工具或者中文分词模块,最后的两款fnlp和ansj是比较棒的java中文分词工具,貌似还没有python接口,记录一下。
这些中文分词工具我没有测试,感 ...
跳至内容
中文信息处理
中文分词
深度学习
自然语言处理
Python中文分词工具大合集:安装、使用和测试
作者52nlp
5月11,2019
AINLP,ansj,CoreNLP,DeepNLP,fnlp,FoolNLTK,Genius,HanLP,HITLTP,ID-CNN-CWS,Java,Java中文分词,Jieba,Jieba中文分词,kcws,LTP,NLPIR,PkuSeg,python,Python3,Python中文分词,SnowNLP,StanfordCoreNLP,THULAC,YaYaNLP,中文分词,中文分词Python,中文分词原理,中文分词工具,分词,在线中文分词,微信中文分词,斯坦福中文分词,斯坦福中文分词器,深度学习,深度学习中文分词,结巴中文分词,自然语言处理
这篇文章事实上整合了前面两篇文章的相关介绍,同时添加一些其他的Python中文分词相关资源,甚至非Python的中文分词工具,仅供参考。
首先介绍之前测试过的8款中文分词工具,这几款工具可以直接在AINLP公众号后台在线测试,严格的说,它们不完全是纯粹的中文分词工具,例如SnowNLP,Thulac,HanLP,LTP,CoreNLP都是很全面的(中文)自然语言处理工具。
安装这些模块其实很简单,只要按官方文档的方法安装即可,以下做个简单介绍,在Python3.x的环境下测试,Ubuntu16.04或MacOS测试成功。
再附加介绍12款其他的中文分词工具或者中文分词模块,最后的两款fnlp和ansj是比较棒的java中文分词工具,貌似还没有python接口,记录一下。
这些中文分词工具我没有测试,感兴趣的同学可以动手试试。
1)Jieba:https://github.com/fxsjy/jieba
“结巴”中文分词:做最好的Python中文分词组件
"Jieba"(Chinesefor"tostutter")Chinesetextsegmentation:builttobethebestPythonChinesewordsegmentationmodule.
特点
支持三种分词模式:
精确模式,试图将句子最精确地切开,适合文本分析;
全模式,把句子中所有的可以成词的词语都扫描出来,速度非常快,但是不能解决歧义;
搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
支持繁体分词
支持自定义词典
MIT授权协议
安装:
代码对Python2/3均兼容
全自动安装:easy_installjieba或者pipinstalljieba/pip3installjieba
半自动安装:先下载http://pypi.python.org/pypi/jieba/,解压后运行pythonsetup.pyinstall
手动安装:将jieba目录放置于当前目录或者site-packages目录
中文分词示例:
In[6]:importjieba
In[7]:seg_list=jieba.cut("我爱自然语言处理",cut_all=True)
In[8]:print("FullMode:"+"".join(seg_list))#全模式
FullMode:我爱自然自然语言语言处理
In[9]:seg_list=jieba.cut("我爱自然语言处理",cut_all=False)
In[10]:print("DefaultMode:"+"".join(seg_list))#默认模式/精确模式
DefaultMode:我爱自然语言处理
In[11]:seg_list=jieba.cut("我爱自然语言处理")
In[12]:print("DefaultMode:"+"".join(seg_list))#默认精确模式
DefaultMode:我爱自然语言处理
In[13]:seg_list=jieba.cut_for_search("我爱自然语言处理")#搜索引擎模式
In[14]:print("SearchMode:"+"".join(seg_list))#搜索引擎模式
SearchMode:我爱自然语言自然语言处理In[6]:importjieba
In[7]:seg_list=jieba.cut("我爱自然语言处理",cut_all=True)
In[8]:print("FullMode:"+"".join(seg_list))#全模式
FullMode:我爱自然自然语言语言处理
In[9]:seg_list=jieba.cut("我爱自然语言处理",cut_all=False)
In[10]:print("DefaultMode:"+"".join(seg_list))#默认模式/精确模式
DefaultMode:我爱自然语言处理
In[11]:seg_list=jieba.cut("我爱自然语言处理")
In[12]:print("DefaultMode:"+"".join(seg_list))#默认精确模式
DefaultMode:我爱自然语言处理
In[13]:seg_list=jieba.cut_for_search("我爱自然语言处理")#搜索引擎模式
In[14]:print("SearchMode:"+"".join(seg_list))#搜索引擎模式
SearchMode:我爱自然语言自然语言处理
2)SnowNLP:https://github.com/isnowfy/snownlp
SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和TextBlob不同的是,这里没有用NLTK,所有的算法都是自己实现的,并且自带了一些训练好的字典。
注意本程序都是处理的unicode编码,所以使用时请自行decode成unicode。
Features
中文分词(Character-BasedGenerativeModel)
词性标注(TnT3-gram隐马)
情感分析(现在训练数据主要是买卖东西时的评价,所以对其他的一些可能效果不是很好,待解决)
文本分类(NaiveBayes)
转换成拼音(Trie树实现的最大匹配)
繁体转简体(Trie树实现的最大匹配)
提取文本关键词(TextRank算法)
提取文本摘要(TextRank算法)
tf,idf
Tokenization(分割成句子)
文本相似(BM25)
支持python3(感谢erning)
安装:
$pipinstallsnownlp
中文分词示例:
In[18]:fromsnownlpimportSnowNLP
In[19]:s=SnowNLP("我爱自然语言处理")
In[20]:print(''.join(s.words))
我爱自然语言处理In[18]:fromsnownlpimportSnowNLP
In[19]:s=SnowNLP("我爱自然语言处理")
In[20]:print(''.join(s.words))
我爱自然语言处理
3)PkuSeg:https://github.com/lancopku/pkuseg-python
pkuseg多领域中文分词工具;Thepkusegtoolkitformulti-domainChinesewordsegmentation
主要亮点
pkuseg具有如下几个特点:
多领域分词。
不同于以往的通用中文分词工具,此工具包同时致力于为不同领域的数据提供个性化的预训练模型。
根据待分词文本的领域特点,用户可以自由地选择不同的模型。
我们目前支持了新闻领域,网络领域,医药领域,旅游领域,以及混合领域的分词预训练模型。
在使用中,如果用户明确待分词的领域,可加载对应的模型进行分词。
如果用户无法确定具体领域,推荐使用在混合领域上训练的通用模型。
各领域分词样例可参考example.txt。
更高的分词准确率。
相比于其他的分词工具包,当使用相同的训练数据和测试数据,pkuseg可以取得更高的分词准确率。
支持用户自训练模型。
支持用户使用全新的标注数据进行训练。
支持词性标注。
编译和安装
目前仅支持python3
为了获得好的效果和速度,强烈建议大家通过pipinstall更新到目前的最新版本
通过PyPI安装(自带模型文件):
pip3installpkuseg
之后通过importpkuseg来引用
建议更新到最新版本以获得更好的开箱体验:
pip3install-Upkuseg
中文分词示例:
In[23]:importpkuseg
In[24]:pku_seg=pkuseg.pkuseg()
In[25]:print(''.join(pku_seg.cut('我爱自然语言处理')))
我爱自然语言处理In[23]:importpkuseg
In[24]:pku_seg=pkuseg.pkuseg()
In[25]:print(''.join(pku_seg.cut('我爱自然语言处理')))
我爱自然语言处理
4)THULAC:https://github.com/thunlp/THULAC-Python
THULAC:一个高效的中文词法分析工具包
THULAC(THULexicalAnalyzerforChinese)由清华大学自然语言处理与社会人文计算实验室研制推出的一套中文词法分析工具包,具有中文分词和词性标注功能。
THULAC具有如下几个特点:
能力强。
利用我们集成的目前世界上规模最大的人工分词和词性标注中文语料库(约含5800万字)训练而成,模型标注能力强大。
准确率高。
该工具包在标准数据集ChineseTreebank(CTB5)上分词的F1值可达97.3%,词性标注的F1值可达到92.9%,与该数据集上最好方法效果相当。
速度较快。
同时进行分词和词性标注速度为300KB/s,每秒可处理约15万字。
只进行分词速度可达到1.3MB/s。
编译和安装
python版(兼容python2.x版和python3.x版)
从github下载(需下载模型文件,见获取模型)
将thulac文件放到目录下,通过importthulac来引用
thulac需要模型的支持,需要将下载的模型放到thulac目录下。
pip下载(自带模型文件)
pipinstallthulac
通过importthulac来引用
中文分词示例:
In[31]:importthulac
In[32]:thu_lac=thulac.thulac(seg_only=True)
Modelloadedsucceed
In[33]:thu_result=thu_lac.cut("我爱自然语言处理",text=True)
In[34]:print(thu_result)
我爱自然语言处理In[31]:importthulac
In[32]:thu_lac=thulac.thulac(seg_only=True)
Modelloadedsucceed
In[33]:thu_result=thu_lac.cut("我爱自然语言处理",text=True)
In[34]:print(thu_result)
我爱自然语言处理
5)pyhanlp:https://github.com/hankcs/pyhanlp
pyhanlp:PythoninterfacesforHanLP
自然语言处理工具包HanLP的Python接口,支持自动下载与升级HanLP,兼容py2、py3。
安装
pipinstallpyhanlp
注意pyhanlp安装之后使用的时候还会自动下载相关的数据文件,zip压缩文件600多M,速度有点慢,时间有点长
中文分词示例:
In[36]:frompyhanlpimportHanLP
In[37]:han_word_seg=HanLP.segment('我爱自然语言处理')
In[38]:print(''.join([term.wordforterminhan_word_seg]))
我爱自然语言处理In[36]:frompyhanlpimportHanLP
In[37]:han_word_seg=HanLP.segment('我爱自然语言处理')
In[38]:print(''.join([term.wordforterminhan_word_seg]))
我爱自然语言处理
6)FoolNLTK:https://github.com/rockyzhengwu/FoolNLTK
特点
可能不是最快的开源中文分词,但很可能是最准的开源中文分词
基于BiLSTM模型训练而成
包含分词,词性标注,实体识别, 都有比较高的准确率
用户自定义词典
可训练自己的模型
批量处理
定制自己的模型
getclonehttps://github.com/rockyzhengwu/FoolNLTK.git
cdFoolNLTK/train
详细训练步骤可参考文档
仅在linuxPython3 环境测试通过
安装,依赖TensorFlow,会自动安装:
pipinstallfoolnltk
中文分词示例:
In[1]:importfool
In[2]:text="我爱自然语言处理"
In[3]:print(fool.cut(text))
[['我','爱','自然','语言','处理']]
In[4]:print(''.join(fool.cut(text)[0]))
我爱自然语言处理In[1]:importfool
In[2]:text="我爱自然语言处理"
In[3]:print(fool.cut(text))
[['我','爱','自然','语言','处理']]
In[4]:print(''.join(fool.cut(text)[0]))
我爱自然语言处理
7)LTP:https://github.com/HIT-SCIR/ltp
pyltp:https://github.com/HIT-SCIR/pyltp
pyltp是语言技术平台(LanguageTechnologyPlatform,LTP)的Python封装。
安装pyltp
注:由于新版本增加了新的第三方依赖如dynet等,不再支持windows下python2环境。
使用pip安装
使用pip安装前,请确保您已安装了pip
$pipinstallpyltp
接下来,需要下载LTP模型文件。
下载地址-`模型下载http://ltp.ai/download.html`_
当前模型版本-3.4.0
注意在windows下3.4.0版本的语义角色标注模块模型需要单独下载,具体查看下载地址链接中的说明。
请确保下载的模型版本与当前版本的pyltp对应,否则会导致程序无法正确加载模型。
从源码安装
您也可以选择从源代码编译安装
$gitclonehttps://github.com/HIT-SCIR/pyltp
$gitsubmoduleinit
$gitsubmoduleupdate
$pythonsetup.pyinstall
安装完毕后,也需要下载相应版本的LTP模型文件。
这里使用"pipinstallpyltp"安装,安装完毕后在LTP模型页面下载模型数据:http://ltp.ai/download.html,我下载的是ltp_data_v3.4.0.zip,压缩文件有600多M,解压后1.2G,里面有不同NLP任务的模型。
中文分词示例:
In[5]:frompyltpimportSegmentor
In[6]:segmentor=Segmentor()
#分词模型路径,依据你下载后放得位置而定
In[7]:segmentor.load('./data/ltp/ltp_data_v3.4.0/cws.model')
In[8]:print(''.join(segmentor.segment('我爱自然语言处理')))
我爱自然语言处理In[5]:frompyltpimportSegmentor
In[6]:segmentor=Segmentor()
#分词模型路径,依据你下载后放得位置而定
In[7]:segmentor.load('./data/ltp/ltp_data_v3.4.0/cws.model')
In[8]:print(''.join(segmentor.segment('我爱自然语言处理')))
我爱自然语言处理
8)StanfordCoreNLP:https://stanfordnlp.github.io/CoreNLP/
stanfordcorenlp:https://github.com/Lynten/stanford-corenlp
这里用的是斯坦福大学CoreNLP的python封装:stanfordcorenlp
stanfordcorenlpisaPythonwrapperforStanfordCoreNLP.ItprovidesasimpleAPIfortextprocessingtaskssuchasTokenization,PartofSpeechTagging,NamedEntityReconigtion,ConstituencyParsing,DependencyParsing,andmore.
安装很简单,pip即可:
pipinstallstanfordcorenlp
但是要使用中文NLP模块需要下载两个包,在CoreNLP的下载页面下载模型数据及jar文件,目前官方是3.9.1版本:
https://nlp.stanford.edu/software/corenlp-backup-download.html
第一个是:stanford-corenlp-full-2018-02-27.zip
第二个是:stanford-chinese-corenlp-2018-02-27-models.jar
前者解压后把后者也要放进去,否则指定中文的时候会报错。
中文分词使用示例:
In[11]:fromstanfordcorenlpimportStanfordCoreNLP
In[12]:stanford_nlp=StanfordCoreNLP('./data/corenlp/stanford-corenlp-full-201
...:8-02-27',lang='zh')
In[13]:seg_results=stanford_nlp.word_tokenize('我爱自然语言处理')
In[14]:print(''.join(seg_results))
我爱自然语言处理In[11]:fromstanfordcorenlpimportStanfordCoreNLP
In[12]:stanford_nlp=StanfordCoreNLP('./data/corenlp/stanford-corenlp-full-201
...:8-02-27',lang='zh')
In[13]:seg_results=stanford_nlp.word_tokenize('我爱自然语言处理')
In[14]:print(''.join(seg_results))
我爱自然语言处理
9)NLPIR:NLPIR大数据语义智能分析平台
https://github.com/NLPIR-team/NLPIR
Python接口:https://github.com/tsroten/pynlpir
10)DeepNLP:DeepLearningNLPPipelineimplementedonTensorflow
深度学习中文(分词)NLP工具
https://github.com/rockingdingo/deepnlp
11)kcws:DeepLearningChineseWordSegment
深度学习中文分词
https://github.com/koth/kcws
12)ID-CNN-CWS:Sourcecodesandcorporaofpaper"IteratedDilatedConvolutionsforChineseWordSegmentation"
基于迭代卷积神经网络的中文分词
https://github.com/hankcs/ID-CNN-CWS
13)Genius:achinesesegmentbaseoncrf
中文分词(Python)Genius是一个开源的python中文分词组件,采用CRF(ConditionalRandomField)条件随机场算法。
https://github.com/duanhongyi/genius
14)YaYaNLP:PurepythonNLPtoolkit
纯python编写的中文自然语言处理包
https://github.com/Tony-Wang/YaYaNLP
15)小明NLP:提供中文分词,词性标注,拼写检查,文本转拼音,情感分析,文本摘要,偏旁部首
https://github.com/SeanLee97/xmnlp
16)loso:Chinesesegmentationlibrary
https://github.com/fangpenlin/loso
17)yaha:"哑哈"中文分词
更快或更准确,由你来定义。
通过简单定制,让分词模块更适用于你的需求。
"Yaha"YoucancustomyourChineseWordSegmentationefficientlybyusingYaha
https://github.com/jannson/yaha
18)ChineseWordSegmentation:无需语料库的中文分词
https://github.com/Moonshile/ChineseWordSegmentation
19)fnlp:中文自然语言处理工具包ToolkitforChinesenaturallanguageprocessing
https://github.com/FudanNLP/fnlp
这一款出自复旦NLP组,Java实现,貌似还没有Python接口。
20)ansj分词
ict的真正java实现.分词效果速度都超过开源版的ict.中文分词,人名识别,词性标注,用户自定义词典
这一款也是一个很棒的中文分词工具,不过貌似也没有很好的Python接口。
参考:
五款中文分词工具在线PK:Jieba,SnowNLP,PkuSeg,THULAC,HanLP
中文分词工具在线PK新增:FoolNLTK、HITLTP、StanfordCoreNLP
注:原创文章,转载请注明出处及保留链接“我爱自然语言处理”:https://www.52nlp.cn
本文链接地址:Python中文分词工具大合集:安装、使用和测试https://www.52nlp.cn/?p=11789
相关文章:
中文分词工具在线PK新增:FoolNLTK、HITLTP、StanfordCoreNLP
五款中文分词工具在线PK:Jieba,SnowNLP,PkuSeg,THULAC,HanLP
中文分词工具评估
自然语言处理工具包spaCy介绍
文章导航
中文分词工具在线PK新增:FoolNLTK、HITLTP、StanfordCoreNLP中文分词工具评估
作者52nlp
相关文章
深度学习
Transformer中的缓存机制
5月8,2022
52nlp
AINLP
人工智能
机器翻译
翻译模型
自然语言处理
文言文白话文互转:文言文转白话文(现代文),白话文(现代文)转文言文
2月5,2022
52nlp
自然语言处理
Transformer的注意力头越多越好么
11月17,2021
sunkailiang
发表评论您的电子邮箱地址不会被公开。
必填项已用*标注评论*显示名称*
电子邮箱地址*
网站地址
在此浏览器中保存我的显示名称、邮箱地址和网站地址,以便下次评论时使用。
Δ点击取消回复
关注我们的微信公众号AINLP
近期文章
Transformer中的缓存机制
文言文白话文互转:文言文转白话文(现代文),白话文(现代文)转文言文
Transformer的注意力头越多越好么
教师节,“写”一首藏头诗或者藏尾诗给恩师
自动作文生成器:来试试用预训练模型自动写中文作文
分类
AINLP
MIT自然语言处理
NLP开源工具
PRML
TopicModel
wordpress
专利挖掘
专题
中文信息处理
中文分词
人工智能
公开课
命名实体识别
对话系统
并行算法
情感分析
招聘
推荐系统
数学
数据挖掘
数据科学
数据竞赛
文本分类
文本处理演示系统
智能问答
最大熵模型
机器学习
机器翻译
条件随机场
标注
深度学习
科学计算
统计学
翻译模型
聊天机器人
自然语言处理
自然语言生成
计算语言学
词典
词性标注
语义学
语义相似度
语义网
语料库
语言模型
语音识别
贝叶斯模型
转载
问答系统
阅读理解
随笔
隐马尔科夫模型
预训练模型
TextMiningOnline
TextAnalysisOnline
WordSimilarity
KeywordExtraction
TextSummarization
Youmissed
深度学习
Transformer中的缓存机制
5月8,2022
52nlp
AINLP
人工智能
机器翻译
翻译模型
自然语言处理
文言文白话文互转:文言文转白话文(现代文),白话文(现代文)转文言文
2月5,2022
52nlp
自然语言处理
Transformer的注意力头越多越好么
11月17,2021
sunkailiang
AINLP
文本处理演示系统
自然语言处理
自然语言生成
预训练模型
教师节,“写”一首藏头诗或者藏尾诗给恩师
9月10,2021
52nlp
延伸文章資訊
- 1自然语言处理中的中英文分词工具 - CSDN博客
jieba中文分词. jieba 是目前最好的Python 中文分词组件,它主要有三种分词模式:精确模式、全模式、搜索引擎模式。
- 2“结巴”中文分词:做最好的Python 中文分词组件 - 51CTO博客
结巴”中文分词:做最好的Python 中文分词组件,由于中文文本中的单词不像英文那样靠空格来分割,因此中文存在一个重要的分词问题,像昨天我发表的文本 ...
- 3基于Python 的中文分词方案那种比较好? - 知乎
欢迎尝试我们thunlp组发布的THULAC中文词法分析工具包,包括中文分词和词性标注功能,目前包括C++、Python和Java版本。与各常用工具包的性能和效果比较可以参考:.
- 4fxsjy/jieba: 结巴中文分词
“结巴”中文分词:做最好的Python 中文分词组件. "Jieba" (Chinese for "to stutter") Chinese text segmentation: built t...
- 5Jieba、NLTK等中英文分词工具进行分词 - CSDN博客
实验目的:利用给定的中英文文本序列(见Chinese.txt 和English.txt),分别利用以下给定的中英文分词工具进行分词并对不同分词工具产生的结果进行 ...