热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

最近玩公众号会话停不下来:

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

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

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

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

这次首先选了5款中文分词工具,严格的来说,它们不完全是纯粹的中文分词工具,例如SnowNLP, Thulac, HanLP都是很全面的中文自然语言处理工具,这次,先试水它们的中文分词模块。安装这些模块其实很简单,只要按官方文档的方法安装即可,以下做个简单介绍,在 Python 3.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公众号后台输入:中文分词 需要分词的内容,或者可以用语音输入: 来,试试语音(识别)聊天(机器人)

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

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

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


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 我们


推荐阅读
  • 2018年热门趋势:轻松几步构建高效智能聊天机器人
    2018年,构建高效智能聊天机器人的简易步骤成为行业焦点。作为AI领域的关键应用,聊天机器人不仅被视为企业市场智能化转型的重要工具,也是技术变现的主要途径之一。随着自然语言处理技术的不断进步,越来越多的企业开始重视并投资于这一领域,以期通过聊天机器人提升客户服务体验和运营效率。 ... [详细]
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • 利用 Python 管道实现父子进程间高效通信 ... [详细]
  • 掌握PHP编程必备知识与技巧——全面教程在当今的PHP开发中,了解并运用最新的技术和最佳实践至关重要。本教程将详细介绍PHP编程的核心知识与实用技巧。首先,确保你正在使用PHP 5.3或更高版本,最好是最新版本,以充分利用其性能优化和新特性。此外,我们还将探讨代码结构、安全性和性能优化等方面的内容,帮助你成为一名更高效的PHP开发者。 ... [详细]
  • 本文介绍了如何在 PyCharm 中高效利用 Anaconda 管理项目环境配置。首先,确保已安装必要的软件。以 Windows 10 64位专业版为例,建议使用 PyCharm 2018.2 或更高版本。通过 Anaconda 创建和管理虚拟环境,可以显著提升开发效率,确保项目依赖的一致性和隔离性。文章详细阐述了从安装到配置的每一步操作,帮助开发者快速上手并充分利用这些工具的优势。 ... [详细]
  • 掌握DSP必备的56个核心问题,我已经将其收藏以备不时之需! ... [详细]
  • 如何在MAC上配置Python和Appium开发环境
    一、需要安装的软件二、下载安装步骤2.1、安装jdk2.1.1JDK下载地址:https:www.oracle.comjavatechnologiesjavase-download ... [详细]
  • 在Java编程中,初始化List集合有多种高效的方法。本文介绍了六种常见的技术,包括使用常规方式、Arrays.asList、Collections.addAll、Java 8的Stream API、双重大括号初始化以及使用List.of。每种方法都有其特定的应用场景和优缺点,开发者可以根据实际需求选择最合适的方式。例如,常规方式通过直接创建ArrayList对象并逐个添加元素,适用于需要动态修改列表的情况;而List.of则提供了一种简洁的不可变列表初始化方式,适合于固定数据集的场景。 ... [详细]
  • 如何使用mysql_nd:Python连接MySQL数据库的优雅指南
    无论是进行机器学习、Web开发还是爬虫项目,数据库操作都是必不可少的一环。本文将详细介绍如何使用Python通过 `mysql_nd` 库与 MySQL 数据库进行高效连接和数据交互。内容涵盖以下几个方面: ... [详细]
  • Netty框架中运用Protobuf实现高效通信协议
    在Netty框架中,通过引入Protobuf来实现高效的通信协议。为了使用Protobuf,需要先准备好环境,包括下载并安装Protobuf的代码生成器`protoc`以及相应的源码包。具体资源可从官方下载页面获取,确保版本兼容性以充分发挥其性能优势。此外,配置好开发环境后,可以通过定义`.proto`文件来自动生成Java类,从而简化数据序列化和反序列化的操作,提高通信效率。 ... [详细]
  • 在使用 `requests` 库进行 HTTP 请求时,如果遇到 `requests.exceptions.SSLError: HTTPSConnectionPool` 错误,通常是因为 SSL 证书验证失败。解决这一问题的方法包括:检查目标网站的 SSL 证书是否有效、更新本地的 CA 证书库、禁用 SSL 验证(不推荐用于生产环境)或使用自定义的 SSL 上下文。此外,确保 `requests` 库和相关依赖项已更新到最新版本,以避免潜在的安全漏洞。 ... [详细]
  • 基于 Bottle 框架构建的幽默应用 —— Python 实践 ... [详细]
  • 利用树莓派畅享落网电台音乐体验
    最近重新拾起了闲置已久的树莓派,这台小巧的开发板已经沉寂了半年多。上个月闲暇时间较多,我决定将其重新启用。恰逢落网电台进行了改版,回忆起之前在树莓派论坛上看到有人用它来播放豆瓣音乐,便萌生了同样的想法。通过一番调试,终于实现了在树莓派上流畅播放落网电台音乐的功能,带来了全新的音乐享受体验。 ... [详细]
  • PyTorch 使用问题:解决导入 torch 后 torch.cuda.is_available() 返回 False 的方法
    在配置 PyTorch 时,遇到 `torch.cuda.is_available()` 返回 `False` 的问题。本文总结了多种解决方案,并分享了个人在 PyCharm、Python 和 Anaconda3 环境下成功配置 CUDA 的经验,以帮助读者避免常见错误并顺利使用 GPU 加速。 ... [详细]
  • Python学习:环境配置与安装指南
    Python作为一种跨平台的编程语言,适用于Windows、Linux和macOS等多种操作系统。为了确保本地已成功安装Python,用户可以通过终端或命令行界面输入`python`或`python3`命令进行验证。此外,建议使用虚拟环境管理工具如`venv`或`conda`,以便更好地隔离不同项目依赖,提高开发效率。 ... [详细]
author-avatar
书友53537817
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有