中文分词工具比较 6大中文分词器测试(哈工大LTP、中科院计算所NLPIR、清华大学THULAC和jieba、FoolNLTK、HanLP)_中文分词ltp和jieba哪个更好-程序员宅基地

技术标签: python自然语言  python模块  日常学习小点  THULAC  分词器比较  中科院  HANLP  Python  

中文分词工具比较 6大中文分词器测试(jieba、FoolNLTK、HanLP、THULAC、nlpir、ltp)

哈工大LTP、中科院计算所NLPIR、清华大学THULAC和jieba
个人接触的分词器
安装
调用
jieba“结巴”中文分词:做最好的 Python 中文分词组件https://github.com/fxsjy/jieba

THULAC清华大学:一个高效的中文词法分析工具包
https://github.com/thunlp/THULAC-Python

FoolNLTK可能不是最快的开源中文分词,但很可能是最准的开源中文分词
https://github.com/rockyzhengwu/FoolNLTK
教程:FoolNLTK 及 HanLP使用

HanLP最高分词速度2,000万字/秒 https://github.com/hankcs/HanLP/wiki/角色标注命名实体
pip install pyhanlp

**中科院 Ictclas 分词系统 - NLPIR汉语分词系统 http://ictclas.nlpir.org/

哈工大 LTP https://www.ltp-cloud.com/
LTP安装教程[python 哈工大NTP分词 安装pyltp 及配置模型(新)]**(https://blog.csdn.net/shuihupo/article/details/81545335)
如下是测试代码及结果

#!/ Mypython
# -*- coding: utf-8 -*-
# @Time    : 2018/12/5 22:19
# @Author  : LinYimeng
# @File    : fenci_ceshi.py
# @Software: PyCharm

下面测试的文本上是极易分词错误的文本,分词的效果在很大程度上就可以提现分词器的分词情况。接下来验证一下,分词器的宣传语是否得当吧。

import time

testCases=["结婚的和尚未结婚的确实在干扰分词啊",
           "汽水不如果汁好喝 ",
           "小白痴痴地在门前等小黑回来" ,
          "本月4日晚被人持刀捅伤,犯罪嫌疑人随身携带凶器。 伤口在胳膊上,神经受损,住院15天。 目前犯罪嫌疑人仍旧逍遥法外,请问当地派出所是否失职?",
          "改判被告人死刑立即执行",
          "宣判后,王小军提出上诉。江西省高级人民法院经依法开庭审理,于2013年3月14日以(2012)赣刑一终字第131号刑事裁定,驳回上诉,维持原判,并依法报请本院核准。本院依法组成合议庭,对本案进行了复核,并依法讯问了被告人。现已复核终结。",
          "王小军持一把螺丝刀朝陈某某的胸部戳刺两下,陈某某受伤后逃跑。王小军从旁边卖肉店砧板上拿起一把菜刀追赶未及,将菜刀扔向陈某某,未击中,后逃离现场。"
           ]

jieba 中文分词

print("_____________jieba___________")
import  jieba

t1 =time.time()
# 精确模式
for sentence in testCases:
    seg_list = jieba.cut(sentence)
    print("/ ".join(seg_list)) # 精确模式
t2 = time.time()
print("jieba time",t2-t1)
_____________jieba___________
结婚/ 的/ 和/ 尚未/ 结婚/ 的/ 确实/ 在/ 干扰/ 分词/ 啊
汽水/ 不如/ 果汁/ 好喝/  
小白/ 痴痴地/ 在/ 门前/ 等/ 小黑/ 回来
本月/ 4/ 日晚/ 被/ 人/ 持刀/ 捅/ 伤/ ,/ 犯罪/ 嫌疑人/ 随身携带/ 凶器/ 。/  / 伤口/ 在/ 胳膊/ 上/ ,/ 神经/ 受损/ ,/ 住院/ 15/ 天/ 。/  / 目前/ 犯罪/ 嫌疑人/ 仍旧/ 逍遥法外/ ,/ 请问/ 当地/ 派出所/ 是否/ 失职/ ?
改判/ 被告人/ 死刑/ 立即/ 执行
宣判/ 后/ ,/ 王小军/ 提出/ 上诉/ 。/ 江西省/ 高级人民法院/ 经/ 依法/ 开庭审理/ ,/ 于/ 2013/ 年/ 3/ 月/ 14/ 日以/ (/ 2012/ )/ 赣刑/ 一终/ 字/ 第/ 131/ 号/ 刑事/ 裁定/ ,/ 驳回上诉/ ,/ 维持原判/ ,/ 并/ 依法/ 报请/ 本院/ 核准/ 。/ 本院/ 依法/ 组成/ 合议庭/ ,/ 对/ 本案/ 进行/ 了/ 复核/ ,/ 并/ 依法/ 讯问/ 了/ 被告人/ 。/ 现已/ 复核/ 终结/ 。
王小军持/ 一把/ 螺丝刀/ 朝/ 陈/ 某某/ 的/ 胸部/ 戳/ 刺/ 两下/ ,/ 陈/ 某某/ 受伤/ 后/ 逃跑/ 。/ 王小军/ 从/ 旁边/ 卖/ 肉店/ 砧板/ 上/ 拿/ 起/ 一把/ 菜刀/ 追赶/ 未及/ ,/ 将/ 菜刀/ 扔/ 向/ 陈/ 某某/ ,/ 未/ 击中/ ,/ 后/ 逃离现场/ 。
jieba time 0.01699233055114746

thulac 中文分词

print("_____________thulac___________")
import thulac
t1 =time.time()
thu1 = thulac.thulac()  # 默认模式
for sentence in testCases:
    text = thu1.cut(sentence, text=True)  # 进行一句话分词
    print(text)
t2 = time.time()
print("thulac time",t2-t1)
_thulac___________
Model loaded succeed
结婚_v 的_u 和_c 尚未_d 结婚_v 的_u 确实_a 在_p 干扰_v 分词_n 啊_u
不_d 如果_c :_w  _v 汽水_n 不_d 如果_c 汁_v 好_a 喝_v  _u
小白_np 痴痴_a 地_u 在_p 门前_s 等_u 小_a 黑回_n 来_f
本月_t 4日_t 晚_g 被_p 人_n 持_v 刀_n 捅_v 伤_v ,_w 犯罪_v 嫌疑人_n 随身_d 携带_v 凶器_n 。_w  _a 伤口_n 在_p 胳膊_n 上_f ,_w 神经_n 受损_v ,_w 住院_v 15_m 天_q 。_w  _v 目前_t 犯罪_v 嫌疑人_n 仍旧_d 逍遥法外_id ,_w 请问_v 当地_s 派出所_n 是_v 否_g 失职_v ?_w
改判_v 被告人_n 死刑_n 立即_d 执行_v
宣判_v 后_f ,_w 王小军_np 提出_v 上诉_v 。_w 江西省_ns 高级_a 人民法院_id 经_p 依法_d 开庭_v 审理_v ,_w 于_p 2013年_t 3月_t 14日_t 以_p (_w 2012_m )_w 赣刑_v 一_m 终_q 字_n 第131_m 号_q 刑事_a 裁定_v ,_w 驳回_v 上诉_v ,_w 维持_v 原判_n ,_w 并_c 依法_d 报请_v 本院_r 核准_v 。_w 本院_r 依法_d 组成_v 合议庭_n ,_w 对_p 本案_r 进行_v 了_u 复核_v ,_w 并_c 依法_d 讯问_v 了_u 被告人_n 。_w 现_g 已_d 复核_v 终结_v 。_w
王小军_np 持_v 一_m 把_q 螺丝刀_n 朝_p 陈_np 某某_r 的_u 胸部_n 戳刺_v 两_m 下_q ,_w 陈_np 某某_r 受伤_v 后_f 逃跑_v 。_w 王小军_np 从_p 旁边_f 卖_v 肉店_n 砧板_n 上_f 拿_v 起_v 一_m 把_q 菜刀_n 追赶_v 未_d 及_v ,_w 将_p 菜刀_n 扔_v 向_p 陈_np 某某_r ,_w 未_d 击中_v ,_w 后_f 逃离_v 现场_s 。_w
thulac time 10.118737936019897在这里插入代码片

fool 中文分词

print("_____________fool___________")
import fool
t1 =time.time()
for sentence in testCases:
    print(fool.cut(sentence))
t2 = time.time()
print("fool time",t2-t1)
_____________fool___________
[['结婚', '的', '和', '尚未', '结婚', '的', '确实', '在', '干扰分词', '啊']]
[['汽水', '不如', '果汁', '好喝', ' ']]
[['小白', '痴痴地', '在', '门前', '等', '小黑', '回来']]
[['本月', '4日', '晚', '被', '人', '持刀', '捅伤', ',', '犯罪', '嫌疑人', '随身', '携带', '凶器', '。', ' ', '伤口', '在', '胳膊', '上', ',', '神经', '受损', ',', '住院', '15', '天', '。', ' ', '目前', '犯罪', '嫌疑人', '仍旧', '逍遥法外', ',', '请问', '当地', '派出所', '是否', '失职', '?']]
[['改判', '被告人', '死刑', '立即', '执行']]
[['宣判', '后', ',', '王小军', '提出', '上诉', '。', '江西省', '高级', '人民法院', '经', '依法', '开庭', '审理', ',', '于', '2013年', '3月', '14日', '以', '(', '2012', ')', '赣刑', '一', '终', '字', '第131', '号', '刑事', '裁定', ',', '驳回', '上诉', ',', '维持', '原判', ',', '并', '依法', '报请', '本院', '核准', '。', '本院', '依法', '组成', '合议庭', ',', '对', '本案', '进行', '了', '复核', ',', '并', '依法', '讯问', '了', '被告人', '。', '现', '已', '复核', '终结', '。']]
[['王小军', '持', '一', '把', '螺丝', '刀', '朝', '陈某某', '的', '胸部', '戳刺', '两', '下', ',', '陈某某', '受伤', '后', '逃跑', '。', '王小军', '从', '旁边', '卖', '肉店', '砧板', '上', '拿', '起', '一', '把', '菜', '刀', '追', '赶', '未', '及', ',', '将', '菜', '刀', '扔', '向', '陈某某', ',', '未', '击中', ',', '后', '逃离', '现场', '。']]
fool time 3.6987085342407227

HanLP 中文分词

print("_____________HanLP___________")
from pyhanlp import *
t1 =time.time()
for sentence in testCases:
    print(HanLP.segment(sentence))
t2 = time.time()
print("HanLP_ time",t2-t1)
_____________HanLP___________
[结婚/vi, 的/ude1, 和/cc, 尚未/d, 结婚/vi, 的/ude1, 确实/ad, 在/p, 干扰/vn, 分词/n, 啊/y]
[汽水/nf, 不如/v, 果汁/nf, 好喝/nz,  /w]
[小白/nz, 痴痴地/z, 在/p, 门前/s, 等/udeng, 小黑/nz, 回来/v]
[本月/r, 4/m, 日/b, 晚/t, 被/pbei, 人/n, 持刀/nz, 捅/v, 伤/v, ,/w, 犯罪嫌疑人/nz, 随身携带/nz, 凶器/n, 。/w,  /w, 伤口/n, 在/p, 胳膊/n, 上/f, ,/w, 神经/n, 受损/vi, ,/w, 住院/vn, 15/m, 天/qt, 。/w,  /w, 目前/t, 犯罪嫌疑人/nz, 仍旧/d, 逍遥法外/vl, ,/w, 请问/v, 当地/s, 派出所/nis, 是否/v, 失职/vi, ?/w]
[改判/v, 被告人/n, 死刑/n, 立即/d, 执行/v]
[宣判/v, 后/f, ,/w, 王小军/nr, 提出/v, 上诉/vn, 。/w, 江西省高级人民法院/nt, 经/p, 依法/d, 开庭审理/nz, ,/w, 于/p, 2013/m, 年/qt, 3月/t, 14/m, 日/b, 以/p, (/w, 2012/m, )/w, 赣/b, 刑/n, 一/m, 终/d, 字/n, 第/mq, 131/m, 号/q, 刑事/b, 裁定/vn, ,/w, 驳回上诉/nz, ,/w, 维持原判/nz, ,/w, 并/cc, 依法/d, 报请/v, 本院/n, 核准/v, 。/w, 本院/n, 依法/d, 组成/v, 合议庭/n, ,/w, 对/p, 本案/r, 进行/vn, 了/ule, 复核/vn, ,/w, 并/cc, 依法/d, 讯问/vn, 了/ule, 被告人/n, 。/w, 现已/v, 复核/vn, 终结/vi, 。/w]
[王小军/nr, 持/v, 一/m, 把/pba, 螺丝刀/n, 朝/t, 陈某某/nr, 的/ude1, 胸部/n, 戳/v, 刺/v, 两/m, 下/f, ,/w, 陈某某/nr, 受伤/vi, 后/f, 逃跑/v, 。/w, 王小军/nr, 从/p, 旁边/f, 卖/v, 肉店/nis, 砧板/n, 上/f, 拿起/v, 一/m, 把/pba, 菜刀/n, 追赶/v, 未及/v, ,/w, 将/d, 菜刀/n, 扔向/nz, 陈某某/nr, ,/w, 未/d, 击中/v, ,/w, 后/f, 逃离现场/n, 。/w]
HanLP_ time 2.227612018585205   

中科院分词 nlpir

print("_____________中科院nlpir___________")
import pynlpir  # 引入依赖包
pynlpir.open()  # 打开分词器
t1 =time.time()
for sentence in testCases:
    print(pynlpir.segment(sentence, pos_tagging=False) )  # 使用pos_tagging来关闭词性标注
t2 = time.time()
print("中科院nlpir time",t2-t1)
#使用结束后释放内存:
pynlpir.close()
_____________中科院nlpir___________
['结婚', '的', '和', '尚未', '结婚', '的', '确实', '在', '干扰', '分词', '啊']
['汽水', '不如', '果汁', '好', '喝']
['小', '白', '痴痴', '地', '在', '门前', '等', '小', '黑', '回来']
['本月', '4日', '晚', '被', '人', '持', '刀', '捅', '伤', ',', '犯罪', '嫌疑人', '随身', '携带', '凶器', '。', '伤口', '在', '胳膊', '上', ',', '神经', '受损', ',', '住院', '15', '天', '。', '目前', '犯罪', '嫌疑人', '仍旧', '逍遥法外', ',', '请问', '当地', '派出所', '是否', '失职', '?']
['改判', '被告人', '死刑', '立即', '执行']
['宣判', '后', ',', '王小军', '提出', '上诉', '。', '江西省', '高级人民法院', '经', '依法', '开庭', '审理', ',', '于', '2013年', '3月', '14日', '以', '(', '2012', ')', '赣', '刑', '一', '终', '字', '第131', '号', '刑事', '裁定', ',', '驳回', '上诉', ',', '维持', '原判', ',', '并', '依法', '报请', '本', '院', '核准', '。', '本', '院', '依法', '组成', '合议庭', ',', '对', '本案', '进行', '了', '复核', ',', '并', '依法', '讯问', '了', '被告人', '。', '现', '已', '复核', '终结', '。']
['王小军', '持', '一', '把', '螺丝刀', '朝', '陈', '某某', '的', '胸部', '戳', '刺', '两', '下', ',', '陈', '某某', '受伤', '后', '逃跑', '。', '王小军', '从', '旁边', '卖', '肉', '店', '砧板', '上', '拿', '起', '一', '把', '菜刀', '追赶', '未', '及', ',', '将', '菜刀', '扔', '向', '陈', '某某', ',', '未', '击中', ',', '后', '逃离', '现场', '。']
中科院nlpir time 0.003996372222900391

哈工大ltp

文档链接:https://pyltp.readthedocs.io/zh_CN/latest/api.html#id13


print("_____________哈工大ltp___________")
from pyltp import Segmentor
LTP_DATA_DIR = 'E:\MyLTP\ltp_data'  # ltp模型目录的路径、
cws_model_path = os.path.join(LTP_DATA_DIR, 'cws.model')  # 分词模型路径,模型名称为`cws.model`
segmentor = Segmentor()  # 初始化实例
segmentor.load(cws_model_path)  # 加载模型
t1 =time.time()
for sentence in
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/shuihupo/article/details/81540433

智能推荐

攻防世界_难度8_happy_puzzle_攻防世界困难模式攻略图文-程序员宅基地

文章浏览阅读645次。这个肯定是末尾的IDAT了,因为IDAT必须要满了才会开始一下个IDAT,这个明显就是末尾的IDAT了。,对应下面的create_head()代码。,对应下面的create_tail()代码。不要考虑爆破,我已经试了一下,太多情况了。题目来源:UNCTF。_攻防世界困难模式攻略图文

达梦数据库的导出(备份)、导入_达梦数据库导入导出-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏10次。偶尔会用到,记录、分享。1. 数据库导出1.1 切换到dmdba用户su - dmdba1.2 进入达梦数据库安装路径的bin目录,执行导库操作  导出语句:./dexp cwy_init/[email protected]:5236 file=cwy_init.dmp log=cwy_init_exp.log 注释:   cwy_init/init_123..._达梦数据库导入导出

js引入kindeditor富文本编辑器的使用_kindeditor.js-程序员宅基地

文章浏览阅读1.9k次。1. 在官网上下载KindEditor文件,可以删掉不需要要到的jsp,asp,asp.net和php文件夹。接着把文件夹放到项目文件目录下。2. 修改html文件,在页面引入js文件:<script type="text/javascript" src="./kindeditor/kindeditor-all.js"></script><script type="text/javascript" src="./kindeditor/lang/zh-CN.js"_kindeditor.js

STM32学习过程记录11——基于STM32G431CBU6硬件SPI+DMA的高效WS2812B控制方法-程序员宅基地

文章浏览阅读2.3k次,点赞6次,收藏14次。SPI的详情简介不必赘述。假设我们通过SPI发送0xAA,我们的数据线就会变为10101010,通过修改不同的内容,即可修改SPI中0和1的持续时间。比如0xF0即为前半周期为高电平,后半周期为低电平的状态。在SPI的通信模式中,CPHA配置会影响该实验,下图展示了不同采样位置的SPI时序图[1]。CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。_stm32g431cbu6

计算机网络-数据链路层_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏8次。数据链路层习题自测问题1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与”数据链路接通了”的区别何在?2.数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。3.网络适配器的作用是什么?网络适配器工作在哪一层?4.数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?5.如果在数据链路层不进行帧定界,会发生什么问题?6.PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输

软件测试工程师移民加拿大_无证移民,未受过软件工程师的教育(第1部分)-程序员宅基地

文章浏览阅读587次。软件测试工程师移民加拿大 无证移民,未受过软件工程师的教育(第1部分) (Undocumented Immigrant With No Education to Software Engineer(Part 1))Before I start, I want you to please bear with me on the way I write, I have very little gen...

随便推点

Thinkpad X250 secure boot failed 启动失败问题解决_安装完系统提示secureboot failure-程序员宅基地

文章浏览阅读304次。Thinkpad X250笔记本电脑,装的是FreeBSD,进入BIOS修改虚拟化配置(其后可能是误设置了安全开机),保存退出后系统无法启动,显示:secure boot failed ,把自己惊出一身冷汗,因为这台笔记本刚好还没开始做备份.....根据错误提示,到bios里面去找相关配置,在Security里面找到了Secure Boot选项,发现果然被设置为Enabled,将其修改为Disabled ,再开机,终于正常启动了。_安装完系统提示secureboot failure

C++如何做字符串分割(5种方法)_c++ 字符串分割-程序员宅基地

文章浏览阅读10w+次,点赞93次,收藏352次。1、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include <string.h>#include <stdio.h&_c++ 字符串分割

2013第四届蓝桥杯 C/C++本科A组 真题答案解析_2013年第四届c a组蓝桥杯省赛真题解答-程序员宅基地

文章浏览阅读2.3k次。1 .高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记_2013年第四届c a组蓝桥杯省赛真题解答

基于供需算法优化的核极限学习机(KELM)分类算法-程序员宅基地

文章浏览阅读851次,点赞17次,收藏22次。摘要:本文利用供需算法对核极限学习机(KELM)进行优化,并用于分类。

metasploitable2渗透测试_metasploitable2怎么进入-程序员宅基地

文章浏览阅读1.1k次。一、系统弱密码登录1、在kali上执行命令行telnet 192.168.26.1292、Login和password都输入msfadmin3、登录成功,进入系统4、测试如下:二、MySQL弱密码登录:1、在kali上执行mysql –h 192.168.26.129 –u root2、登录成功,进入MySQL系统3、测试效果:三、PostgreSQL弱密码登录1、在Kali上执行psql -h 192.168.26.129 –U post..._metasploitable2怎么进入

Python学习之路:从入门到精通的指南_python人工智能开发从入门到精通pdf-程序员宅基地

文章浏览阅读257次。本文将为初学者提供Python学习的详细指南,从Python的历史、基础语法和数据类型到面向对象编程、模块和库的使用。通过本文,您将能够掌握Python编程的核心概念,为今后的编程学习和实践打下坚实基础。_python人工智能开发从入门到精通pdf

推荐文章

热门文章

相关标签