53

五款中文分词工具在线PK: Jieba, SnowNLP, PkuSeg, THULAC, HanLP

 5 years ago
source link: http://www.52nlp.cn/五款中文分词工具线上pk-jieba-snownlp-pkuseg-thulac-hanlp?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

FnuMBbj.png!web

最近玩公众号会话停不下来: 玩转腾讯词向量:Game of Words(词语的加减游戏) ,准备把NLP相关的模块搬到线上,准确的说,搬到AINLP公众号后台对话,所以,趁着劳动节假期,给AINLP公众号后台聊天机器人添加了一项新技能:中文分词线上PK,例如在AINLP公众号后台对话输入:中文分词 我爱自然语言处理,就可以得到五款分词工具的分词结果:

AnyMri7.png!web

现在的开源中文分词工具或者模块已经很丰富了,并且很多都有一些在封闭测试集上的效果对比数据,不过这仅仅只能展现这些分词工具在这个封闭测试集上的效果,并不能全面说明问题,个人觉得,选择一个适合自己业务的分词器可能更重要,有的时候,还需要加一些私人定制的词库。

这次首先选了5款中文分词工具,严格的来说,它们不完全是纯粹的中文分词工具,例如SnowNLP, Thulac, HanLP都是很全面的中文自然语言处理工具,这次,先试水它们的中文分词模块。安装这些模块其实很简单,只要按官方文档的方法安装即可,以下做个简单介绍,在Python3.x的环境下测试,Ubuntu16.04 或 MacOS 测试成功。

1) Jieba : https://github.com/fxsjy/jieba

“结巴”中文分词:做最好的 Python 中文分词组件

"Jieba" (Chinese for "to stutter") Chinese text segmentation: built to be the best Python Chinese word segmentation module.

特点

支持三种分词模式:

精确模式,试图将句子最精确地切开,适合文本分析;

全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;

搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

支持繁体分词

支持自定义词典

MIT 授权协议

安装:

代码对 Python 2/3 均兼容

全自动安装:easy_install jieba 或者 pip install jieba / pip3 install jieba

半自动安装:先下载 http://pypi.python.org/pypi/jieba/ ,解压后运行 python setup.py install

手动安装:将 jieba 目录放置于当前目录或者 site-packages 目录

中文分词示例:

In [6]: import jieba                                                            
 
In [7]: seg_list = jieba.cut("我爱自然语言处理", cut_all=True)                  
 
In [8]: print("Full Mode: " + " ".join(seg_list)) # 全模式                      
Full Mode: 我 爱 自然 自然语言 语言 处理
 
In [9]: seg_list = jieba.cut("我爱自然语言处理", cut_all=False)                 
 
In [10]: print("Default Mode: " + " ".join(seg_list)) # 默认模式/精确模式       
Default Mode: 我 爱 自然语言 处理
 
In [11]: seg_list = jieba.cut("我爱自然语言处理")                               
 
In [12]: print("Default Mode: " + " ".join(seg_list)) # 默认精确模式            
Default Mode: 我 爱 自然语言 处理
 
In [13]: seg_list = jieba.cut_for_search("我爱自然语言处理") # 搜索引擎模式     
 
In [14]: print("Search Mode: " + " ".join(seg_list)) # 搜索引擎模式              
Search Mode: 我 爱 自然 语言 自然语言 处理

2) SnowNLP : https://github.com/isnowfy/snownlp

SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和TextBlob不同的是,这里没有用NLTK,所有的算法都是自己实现的,并且自带了一些训练好的字典。注意本程序都是处理的unicode编码,所以使用时请自行decode成unicode。
Features  中文分词(Character-Based Generative Model)  词性标注(TnT 3-gram 隐马)  情感分析(现在训练数据主要是买卖东西时的评价,所以对其他的一些可能效果不是很好,待解决)  文本分类(Naive Bayes)  转换成拼音(Trie树实现的最大匹配)  繁体转简体(Trie树实现的最大匹配)  提取文本关键词(TextRank算法)  提取文本摘要(TextRank算法)  tf,idf  Tokenization(分割成句子)  文本相似(BM25)  支持python3(感谢erning)

安装:

$ pip install snownlp

中文分词示例:

In [18]: from snownlp import SnowNLP                                            
 
In [19]: s = SnowNLP("我爱自然语言处理")                                        
 
In [20]: print(' '.join(s.words))                                               
我 爱 自然 语言 处理

3) PkuSeg : https://github.com/lancopku/pkuseg-python

pkuseg多领域中文分词工具; The pkuseg toolkit for multi-domain Chinese word segmentation

主要亮点

pkuseg具有如下几个特点:

多领域分词。不同于以往的通用中文分词工具,此工具包同时致力于为不同领域的数据提供个性化的预训练模型。根据待分词文本的领域特点,用户可以自由地选择不同的模型。 我们目前支持了新闻领域,网络领域,医药领域,旅游领域,以及混合领域的分词预训练模型。在使用中,如果用户明确待分词的领域,可加载对应的模型进行分词。如果用户无法确定具体领域,推荐使用在混合领域上训练的通用模型。各领域分词样例可参考 example.txt。

更高的分词准确率。相比于其他的分词工具包,当使用相同的训练数据和测试数据,pkuseg可以取得更高的分词准确率。

支持用户自训练模型。支持用户使用全新的标注数据进行训练。

支持词性标注。

编译和安装

目前仅支持python3

为了获得好的效果和速度,强烈建议大家通过pip install更新到目前的最新版本

通过PyPI安装(自带模型文件):

pip3 install pkuseg

之后通过import pkuseg来引用

建议更新到最新版本以获得更好的开箱体验:

pip3 install -U pkuseg

中文分词示例:

In [23]: import pkuseg                                                               
 
In [24]: pku_seg = pkuseg.pkuseg()                                                   
 
In [25]: print(' '.join(pku_seg.cut('我爱自然语言处理')))                            
我 爱 自然 语言 处理

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 来引用

中文分词示例:

In [31]: import thulac                                                               
 
In [32]: thu_lac = thulac.thulac(seg_only=True)                                      
Model loaded succeed
 
In [33]: thu_result = thu_lac.cut("我爱自然语言处理", text=True)                     
 
In [34]: print(thu_result)                                                           
我 爱 自然 语言 处理

5) pyhanlp : https://github.com/hankcs/pyhanlp

pyhanlp: Python interfaces for HanLP

自然语言处理工具包HanLP的Python接口, 支持自动下载与升级HanLP,兼容py2、py3。

安装

pip install pyhanlp

注意pyhanlp安装之后使用的时候还会自动下载相关的数据文件,zip压缩文件600多M,速度有点慢,时间有点长

中文分词示例:

In [36]: from pyhanlp import HanLP                                                   
 
In [37]: han_word_seg = HanLP.segment('我爱自然语言处理')                            
 
In [38]: print(' '.join([term.word for term in han_word_seg]))                       
我 爱 自然语言处理

现在,可以拿起你的手机,对着AINLP公众号后台输入:中文分词 需要分词的内容,或者可以用语音输入: 来,试试语音(识别)聊天(机器人)

77f6NfU.png!web

注:原创文章,转载请注明出处及保留链接“我爱自然语言处理”: http://www.52nlp.cn

本文链接地址: 五款中文分词工具在线PK: Jieba, SnowNLP, PkuSeg, THULAC, HanLP http://www.52nlp.cn/?p=11747


Recommend

  • 92
    • Github github.com 7 years ago
    • Cache

    GitHub - fxsjy/jieba: 结巴中文分词

    jieba “结巴”中文分词:做最好的 Python 中文分词组件 "Jieba" (Chinese for "to stutter") Chinese text segmentation: built to be the best Python Chinese word segmentation module. Scroll down for English documentation.

  • 71

    昨天在AINLP公众号上分享了乐雨泉同学的投稿文章:《 分词那些事儿 》,有...

  • 60

    这篇文章事实上整合了前面两篇文章的相关介绍,同时添加一些其他的Python中文分词相关资源,甚至非Python的中文分词工具,仅供参考。

  • 55
    • www.52nlp.cn 5 years ago
    • Cache

    中文分词工具评估

    最近我们分享了一些关于分词的事情,对于琳琅满目的分词工具,我们到底该选择哪个呢? 这里有一个Java开源项目

  • 33
    • www.tuicool.com 5 years ago
    • Cache

    结巴中文分词原理分析4

    作者: 白宁超,工学硕士,现工作于四川省计算机研究院,著有《自然语言处理理论与实战》一书, 点击阅读原文可直达原文链接, 作者公众号: 机器...

  • 35

    推荐系统三十六式:用知识去对抗技术不平等 上周给AINLP公众号对话增加了百度中文情感分析接口:

  • 41
    • www.biaodianfu.com 5 years ago
    • Cache

    中文分词工具之哈工大LTP

    LTP是哈工大出品的自然语言处理工具箱, LTP提供了一系列中文自然语言处理工具,用户可以使用这些工具对于中文文本进行分词、词性标注、句法分析等等工作。pyltp是python下对ltp(c++)的封装。 Pyltp在linux环境下安装非常的简单,仅...

  • 34

    在搜索项目中,对于中文语境必须选择一个中文分词器,目前选择的是hanlp,选择它来源于官方介绍: HanLP希望兼顾学术界的精准与工业界的效率,在两者之间取一个平衡,真正将自然语言处理普及到生产环境中去。 1:英语因为...

  • 13
    • jdhao.github.io 4 years ago
    • Cache

    几种中文分词工具对比

    几种中文分词工具对比2020-11-20Note538 words 2 mins read 127 times read对几种中文分词工具进行了调研,简单总结一下。这里只用了三种开源的分词工具,...

  • 6

    SnowNLP 使用自定义语料进行模型训练2021-05-1930 17 min.SnowNLP 是一个功能强大的中文文本处理库,它囊括了中文分词、词性标注、情感分析、文本分类、关键字/摘要提取、TF/IDF

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK