资料来源:AINLP
作者:52nlp
本文其实整合了之前文章的相关介绍,增加了一些其他Python中文分词相关资源,甚至是非Python中文分词工具,仅供参考。
首先介绍了之前测试过的8款中文分词工具,可以在AINLP微信官方账号后台直接在线测试。严格来说,它们并不是完全纯中文的分词工具,比如SnowNLP、Thulac、HanLP、LTP、CoreNLP,都是综合性(中文)自然语言处理工具。其实这些模块的安装很简单,只要按照官方文件的方法安装就可以了。下面简单介绍一下,主要是在Python3.x Ubuntu16.04环境下测试安装这些中文分词设备。
然后介绍其他12个中文分词工具或中文分词模块。最后两个fnlp和ansj是优秀的java中文分词工具。好像还没有python接口。录下来。我没有测试这些中文分词工具。感兴趣的同学可以试用一下。
1)https://github.com/fxsjy/jieba捷霸:
“口吃”中文分词:做最好的Python中文分词组件
Jieba(中文意思是“结巴”)中文文本分割:是最好的Python中文分词模块。
特性
支持三种分词模式:
精确模式,尽量把句子切得最准确,适合文本分析;
全模式,扫描出一句话中所有可以当词用的词,速度很快,但解决不了歧义;
搜索引擎模式,在精确模式的基础上,对长词进行再次切分,提高召回率,适合搜索引擎切分。
支持传统分词
支持自定义词典
麻省理工学院授权协议
安装:
代码与Python 2/3兼容
自动安装:easy_install jieba或pip install Jie ba/pip 3 install Jie ba
半自动安装:首先下载http://pypi.python.org/pypi/jieba/,解压,然后运行pythonsetup.pyinstall。
手动安装:将jieba目录放在当前目录或站点包目录中。
中文分词示例:
2)https://github.com/isnowfy/snownlp斯诺NLP:
SnowNLP是python编写的类库,可以方便地处理中文文本内容。它的灵感来自TextBlob。由于大部分自然语言处理库基本都是针对英语的,所以我写了一个类库,可以方便的处理中文。不像TextBlob,这里不用NLTK,所有算法都是我自己实现的,还带了一些训练好的字典。请注意,这个程序处理unicode编码,所以使用时请自行解码成unicode。
特征
中文分词(基于字符的生成模型)
词性标注(TnT 3克隐藏马)
情感分析(现在的训练数据主要是买卖东西时的评价,对其他一些可能的结果不是很有效,需要解决)
文本分类(朴素贝叶斯)
转换为拼音(通过Trie树实现最大匹配)
将传统转换为简化(通过Trie树实现最大匹配)
提取文本关键词(文本排名算法)
提取文本摘要(TextRank算法)
以色列国防军
标记化(分成句子)
文本相似度(BM25)
Python3支持(感谢宁儿)
安装:
$ pip安装snownlp
中文分词示例:
3)https://github.com/lancopku/pkuseg-python pkuseg :
Pkuseg多领域中文分词工具;多领域中文分词的pkuseg工具包
主要亮点
Pkuseg具有以下特征:
多域分割。与以往通用的中文分词工具不同,该工具包还致力于为不同领域的数据提供个性化的预训练模型。根据待分割文本的领域特征,用户可以自由选择不同的模型。目前支持新闻、网络、医药、旅游、混合领域的细分预训练模型。在使用中,如果用户定义了要分割的字段,则可以加载相应的模型进行分割。如果用户无法确定具体的字段,建议使用在混合字段中训练的通用模型。各个领域的分词示例可以参考示例。
.txt。更高的分词准确率。相比于其他的分词工具包,当使用相同的训练数据和测试数据,pkuseg可以取得更高的分词准确率。
支持用户自训练模型。支持用户使用全新的标注数据进行训练。
支持词性标注。
编译和安装
目前仅支持python3
为了获得好的效果和速度,强烈建议大家通过pip install更新到目前的最新版本
通过PyPI安装(自带模型文件):
pip3 install pkuseg
之后通过import pkuseg来引用
建议更新到最新版本以获得更好的开箱体验:
pip3 install -U pkuseg
中文分词示例:
4) THULAC: https://github.com/thunlp/THULAC-Python
THULAC:一个高效的中文词法分析工具包
THULAC(THU Lexical Analyzer for Chinese)由清华大学自然语言处理与社会人文计算实验室研制推出的一套中文词法分析工具包,具有中文分词和词性标注功能。THULAC具有如下几个特点:
能力强。利用我们集成的目前世界上规模最大的人工分词和词性标注中文语料库(约含5800万字)训练而成,模型标注能力强大。
准确率高。该工具包在标准数据集Chinese Treebank(CTB5)上分词的F1值可达97.3%,词性标注的F1值可达到92.9%,与该数据集上最好方法效果相当。
速度较快。同时进行分词和词性标注速度为300KB/s,每秒可处理约15万字。只进行分词速度可达到1.3MB/s。
编译和安装
python版(兼容python2.x版和python3.x版)
从github下载(需下载模型文件,见获取模型)
将thulac文件放到目录下,通过 import thulac 来引用
thulac需要模型的支持,需要将下载的模型放到thulac目录下。
pip下载(自带模型文件)
pip install thulac
通过 import thulac 来引用
中文分词示例:
5) pyhanlp: https://github.com/hankcs/pyhanlp
pyhanlp: Python interfaces for HanLP
自然语言处理工具包HanLP的Python接口, 支持自动下载与升级HanLP,兼容py2、py3。
安装
pip install pyhanlp
注意pyhanlp安装之后使用的时候还会自动下载相关的数据文件,zip压缩文件600多M,速度有点慢,时间有点长
中文分词示例:
6)FoolNLTK:https://github.com/rockyzhengwu/FoolNLTK
特点
可能不是最快的开源中文分词,但很可能是最准的开源中文分词
基于BiLSTM模型训练而成
包含分词,词性标注,实体识别, 都有比较高的准确率
用户自定义词典
可训练自己的模型
批量处理
定制自己的模型
get clone https://github.com/rockyzhengwu/FoolNLTK.git
cd FoolNLTK/train
详细训练步骤可参考文档
仅在linux Python3 环境测试通过
安装,依赖TensorFlow, 会自动安装:
pip install foolnltk
中文分词示例:
7) LTP: https://github.com/HIT-SCIR/ltp
pyltp: https://github.com/HIT-SCIR/pyltp
pyltp 是 语言技术平台(Language Technology Platform, LTP) 的 Python 封装。
安装 pyltp
注:由于新版本增加了新的第三方依赖如dynet等,不再支持 windows 下 python2 环境。
使用 pip 安装
使用 pip 安装前,请确保您已安装了 pip
$ pip install pyltp
接下来,需要下载 LTP 模型文件。
下载地址 - `模型下载 http://ltp.ai/download.html`_
当前模型版本 - 3.4.0
注意在windows下 3.4.0 版本的 语义角色标注模块 模型需要单独下载,具体查看下载地址链接中的说明。
请确保下载的模型版本与当前版本的 pyltp 对应,否则会导致程序无法正确加载模型。
从源码安装
您也可以选择从源代码编译安装
$ git clone https://github.com/HIT-SCIR/pyltp
$ git submodule init
$ git submodule update
$ python setup.py install
安装完毕后,也需要下载相应版本的 LTP 模型文件。
这里使用"pip install pyltp"安装,安装完毕后在LTP模型页面下载模型数据:http://ltp.ai/download.html,我下载的是 ltp_data_v3.4.0.zip ,压缩文件有600多M,解压后1.2G,里面有不同NLP任务的模型。
中文分词示例:
8) Stanford CoreNLP: https://stanfordnlp.github.io/CoreNLP/
stanfordcorenlp: https://github.com/Lynten/stanford-corenlp
这里用的是斯坦福大学CoreNLP的python封装:stanfordcorenlp
stanfordcorenlp is a Python wrapper for Stanford CoreNLP. It provides a simple API for text processing tasks such as Tokenization, Part of Speech Tagging, Named Entity Reconigtion, Constituency Parsing, Dependency Parsing, and more.
安装很简单,pip即可:
pip install stanfordcorenlp
但是要使用中文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
前者解压后把后者也要放进去,否则指定中文的时候会报错。
中文分词使用示例:
9) NLPIR: NLPIR大数据语义智能分析平台
https://github.com/NLPIR-team/NLPIR
Python接口:https://github.com/tsroten/pynlpir
10)DeepNLP: Deep Learning NLP Pipeline implemented on Tensorflow
深度学习中文(分词)NLP工具
https://github.com/rockingdingo/deepnlp
11) kcws: Deep Learning Chinese Word Segment
深度学习中文分词
https://github.com/koth/kcws
12) ID-CNN-CWS: Source codes and corpora of paper "Iterated Dilated Convolutions for Chinese Word Segmentation"
基于迭代卷积神经网络的中文分词
https://github.com/hankcs/ID-CNN-CWS
13)Genius: a chinese segment base on crf
中文分词 (Python) Genius是一个开源的python中文分词组件,采用 CRF(Conditional Random Field)条件随机场算法。
https://github.com/duanhongyi/genius
14)YaYaNLP:Pure python NLP toolkit
纯python编写的中文自然语言处理包
https://github.com/Tony-Wang/YaYaNLP
15)xndztNLP:提供中文分词, 词性标注, 拼写检查,文本转拼音,情感分析,文本摘要,偏旁部首
https://github.com/SeanLee97/xmnlp
16)loso: Chinese segmentation library
https://github.com/fangpenlin/loso
17) yaha:"哑哈"中文分词
更快或更准确,由你来定义。通过简单定制,让分词模块更适用于你的需求。"Yaha" You can custom your Chinese Word Segmentation efficiently by using Yaha
https://github.com/jannson/yaha
18) ChineseWordSegmentation:无需语料库的中文分词
https://github.com/Moonshile/ChineseWordSegmentation
19) fnlp: 中文自然语言处理工具包 Toolkit for Chinese natural language processing
https://github.com/FudanNLP/fnlp
这一款出自复旦NLP组,Java实现,貌似还没有Python接口。
20)ansj分词
ict的真正java实现.分词效果速度都超过开源版的ict. 中文分词,人名识别,词性标注,用户自定义词典
这一款也是一个很棒的中文分词工具,不过貌似也没有很好的Python接口。
The End