Python中文分词工具大合集:安装、使用和测试 - 我爱自然语言 ...

文章推薦指數: 80 %
投票人數:10人

再附加介绍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



請為這篇文章評分?