赞
踩
哈工大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号刑事裁定,驳回上诉,维持原判,并依法报请本院核准。本院依法组成合议庭,对本案进行了复核,并依法讯问了被告人。现已复核终结。",
"王小军持一把螺丝刀朝陈某某的胸部戳刺两下,陈某某受伤后逃跑。王小军从旁边卖肉店砧板上拿起一把菜刀追赶未及,将菜刀扔向陈某某,未击中,后逃离现场。"
]
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
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
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
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
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
文档链接: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 testCases:
words = segmentor.segment(sentence) # 分词结果,pyltp.VectorOfString object
# s_fenci = list(words)
# print('分词结果',list(words))
s_fenci_str = '\t'.join(words) # str
print("哈工大",s_fenci_str)
t2 = time.time()
segmentor.release() # 释放模型
结果
哈工大 结婚 的 和 尚未 结婚 的 确实 在 干扰 分词 啊
哈工大 汽水 不 如果 汁 好 喝
哈工大 小白痴痴 地 在 门前 等 小黑 回来
哈工大 本月 4日 晚 被 人 持 刀 捅 伤 , 犯罪 嫌疑人 随身 携带 凶器 。 伤口 在 胳膊 上 , 神经 受损 , 住院 15 天 。 目前 犯罪 嫌疑人 仍旧 逍遥法外 , 请问 当地 派出所 是否 失职 ?
哈工大 改判 被告人 死刑 立即 执行
哈工大 宣判 后 , 王小军 提出 上诉 。 江西省 高级 人民法院 经 依法 开庭 审理 , 于 2013年 3月 14日 以 ( 2012 ) 赣刑 一 终字 第131 号 刑事 裁定 , 驳回 上诉 , 维持 原判 , 并 依法 报请 本院 核准 。本院 依法 组成 合议庭 , 对 本案 进行 了 复核 , 并 依法 讯问 了 被告人 。 现 已 复核 终结 。
哈工大 王小军 持 一 把 螺丝刀 朝 陈 某某 的 胸部 戳 刺 两 下 , 陈 某某 受伤 后 逃跑 。 王小军 从 旁边 卖 肉店 砧板 上 拿 起 一 把 菜刀 追赶 未 及 , 将 菜刀 扔 向 陈 某某 , 未 击中 , 后 逃离 现场 。
哈工大ltp time 0.09294390678405762
以上可以看出分词的时间,为了方便比较进行如下操作:
#!/ 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号刑事裁定,驳回上诉,维持原判,并依法报请本院核准。本院依法组成合议庭,对本案进行了复核,并依法讯问了被告人。现已复核终结。", "王小军持一把螺丝刀朝陈某某的胸部戳刺两下,陈某某受伤后逃跑。王小军从旁边卖肉店砧板上拿起一把菜刀追赶未及,将菜刀扔向陈某某,未击中,后逃离现场。" ] #中文分词 print("_____________jieba___________") import jieba t1 =time.time() # 精确模式 for sentence in testCases: seg_list = jieba.cut(sentence) print(seg_list ) print("Default Mode: " + "/ ".join(seg_list)) # 精确模式 t2 = time.time() print("jieba time",t2-t1) 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) print("_____________fool___________") import fool t1 =time.time() for sentence in testCases: print(fool.cut(sentence)) t2 = time.time() print("fool time",t2-t1) print("_____________HanLP___________") from pyhanlp import * t1 =time.time() for sentence in testCases: print(HanLP.segment(sentence)) t2 = time.time() print("hanlp time",t2-t1) 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() 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 testCases: words = segmentor.segment(sentence) # 分词结果,pyltp.VectorOfString object # s_fenci = list(words) # print('分词结果',list(words)) s_fenci_str = '\t'.join(words) # str print("哈工大",s_fenci_str) t2 = time.time() print("哈工大ltp",) segmentor.release() # 释放模型 thu1 = thulac.thulac() # 默认模式 pynlpir.open() # 打开中科院分词器 segmentor = Segmentor() # 哈工大分词器初始化实例 segmentor.load(cws_model_path) # 加载模型 for sentence in testCases: print("_______****___________") seg_list = jieba.cut(sentence) print("jieba: " + "/ ".join(seg_list)) # 精确模式 text = thu1.cut(sentence, text=True) # 进行一句话分词 print("thulac",text) print("fool",fool.cut(sentence)) print("HanLP",HanLP.segment(sentence)) print("中科院",pynlpir.segment(sentence, pos_tagging=False)) # 使用pos_tagging来关闭词性标注 #哈工大 words = segmentor.segment(sentence) # 分词结果,pyltp.VectorOfString object s_fenci_str = '\t'.join(words) # str print("哈工大",s_fenci_str) pynlpir.close() segmentor.release() # 释放模型
结果
_______****___________ jieba: 结婚/ 的/ 和/ 尚未/ 结婚/ 的/ 确实/ 在/ 干扰/ 分词/ 啊 thulac 结婚_v 的_u 和_c 尚未_d 结婚_v 的_u 确实_a 在_p 干扰_v 分词_n 啊_u fool [['结婚', '的', '和', '尚未', '结婚', '的', '确实', '在', '干扰分词', '啊']] HanLP [结婚/vi, 的/ude1, 和/cc, 尚未/d, 结婚/vi, 的/ude1, 确实/ad, 在/p, 干扰/vn, 分词/n, 啊/y] 中科院 ['结婚', '的', '和', '尚未', '结婚', '的', '确实', '在', '干扰', '分词', '啊'] 哈工大 结婚 的 和 尚未 结婚 的 确实 在 干扰 分词 啊 _______****___________ jieba: 汽水/ 不如/ 果汁/ 好喝/ thulac 汽水_n 不_d 如果_c 汁_v 好_a 喝_v _u fool [['汽水', '不如', '果汁', '好喝', ' ']] HanLP [汽水/nf, 不如/v, 果汁/nf, 好喝/nz, /w] 中科院 ['汽水', '不如', '果汁', '好', '喝'] 哈工大 汽水 不 如果 汁 好 喝 _______****___________ jieba: 小白/ 痴痴地/ 在/ 门前/ 等/ 小黑/ 回来 thulac 小白_np 痴痴_a 地_u 在_p 门前_s 等_u 小_a 黑回_n 来_f fool [['小白', '痴痴地', '在', '门前', '等', '小黑', '回来']] HanLP [小白/nz, 痴痴地/z, 在/p, 门前/s, 等/udeng, 小黑/nz, 回来/v] 中科院 ['小', '白', '痴痴', '地', '在', '门前', '等', '小', '黑', '回来'] 哈工大 小白痴痴 地 在 门前 等 小黑 回来 _______****___________ jieba: 本月/ 4/ 日晚/ 被/ 人/ 持刀/ 捅/ 伤/ ,/ 犯罪/ 嫌疑人/ 随身携带/ 凶器/ 。/ / 伤口/ 在/ 胳膊/ 上/ ,/ 神经/ 受损/ ,/ 住院/ 15/ 天/ 。/ / 目前/ 犯罪/ 嫌疑人/ 仍旧/ 逍遥法外/ ,/ 请问/ 当地/ 派出所/ 是否/ 失职/ ? thulac 本月_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 fool [['本月', '4日', '晚', '被', '人', '持刀', '捅伤', ',', '犯罪', '嫌疑人', '随身', '携带', '凶器', '。', ' ', '伤口', '在', '胳膊', '上', ',', '神经', '受损', ',', '住院', '15', '天', '。', ' ', '目前', '犯罪', '嫌疑人', '仍旧', '逍遥法外', ',', '请问', '当地', '派出所', '是否', '失职', '?']] HanLP [本月/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] 中科院 ['本月', '4日', '晚', '被', '人', '持', '刀', '捅', '伤', ',', '犯罪', '嫌疑人', '随身', '携带', '凶器', '。', '伤口', '在', '胳膊', '上', ',', '神经', '受损', ',', '住院', '15', '天', '。', '目前', '犯罪', '嫌疑人', '仍旧', '逍遥法外', ',', '请问', '当地', '派出所', '是否', '失职', '?'] 哈工大 本月 4日 晚 被 人 持 刀 捅 伤 , 犯罪 嫌疑人 随身 携带 凶器 。 伤口 在 胳膊 上 , 神经 受损 , 住院 15 天 。 目前 犯罪 嫌疑人 仍旧 逍遥法外 , 请问 当地 派出所 是否 失职 ? _______****___________ jieba: 改判/ 被告人/ 死刑/ 立即/ 执行 thulac 改判_v 被告人_n 死刑_n 立即_d 执行_v fool [['改判', '被告人', '死刑', '立即', '执行']] HanLP [改判/v, 被告人/n, 死刑/n, 立即/d, 执行/v] 中科院 ['改判', '被告人', '死刑', '立即', '执行'] 哈工大 改判 被告人 死刑 立即 执行 _______****___________ jieba: 宣判/ 后/ ,/ 王小军/ 提出/ 上诉/ 。/ 江西省/ 高级人民法院/ 经/ 依法/ 开庭审理/ ,/ 于/ 2013/ 年/ 3/ 月/ 14/ 日以/ (/ 2012/ )/ 赣刑/ 一终/ 字/ 第/ 131/ 号/ 刑事/ 裁定/ ,/ 驳回上诉/ ,/ 维持原判/ ,/ 并/ 依法/ 报请/ 本院/ 核准/ 。/ 本院/ 依法/ 组成/ 合议庭/ ,/ 对/ 本案/ 进行/ 了/ 复核/ ,/ 并/ 依法/ 讯问/ 了/ 被告人/ 。/ 现已/ 复核/ 终结/ 。 thulac 宣判_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 fool [['宣判', '后', ',', '王小军', '提出', '上诉', '。', '江西省', '高级', '人民法院', '经', '依法', '开庭', '审理', ',', '于', '2013年', '3月', '14日', '以', '(', '2012', ')', '赣刑', '一', '终', '字', '第131', '号', '刑事', '裁定', ',', '驳回', '上诉', ',', '维持', '原判', ',', '并', '依法', '报请', '本院', '核准', '。', '本院', '依法', '组成', '合议庭', ',', '对', '本案', '进行', '了', '复核', ',', '并', '依法', '讯问', '了', '被告人', '。', '现', '已', '复核', '终结', '。']] HanLP [宣判/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] 中科院 ['宣判', '后', ',', '王小军', '提出', '上诉', '。', '江西省', '高级人民法院', '经', '依法', '开庭', '审理', ',', '于', '2013年', '3月', '14日', '以', '(', '2012', ')', '赣', '刑', '一', '终', '字', '第131', '号', '刑事', '裁定', ',', '驳回', '上诉', ',', '维持', '原判', ',', '并', '依法', '报请', '本', '院', '核准', '。', '本', '院', '依法', '组成', '合议庭', ',', '对', '本案', '进行', '了', '复核', ',', '并', '依法', '讯问', '了', '被告人', '。', '现', '已', '复核', '终结', '。'] 哈工大 宣判 后 , 王小军 提出 上诉 。 江西省 高级 人民法院 经 依法 开庭 审理 , 于 2013年 3月 14日 以 ( 2012 ) 赣刑 一 终字 第131 号 刑事 裁定 , 驳回 上诉 , 维持 原判 , 并 依法 报请 本院 核准 。本院 依法 组成 合议庭 , 对 本案 进行 了 复核 , 并 依法 讯问 了 被告人 。 现 已 复核 终结 。 _______****___________ jieba: 王小军持/ 一把/ 螺丝刀/ 朝/ 陈/ 某某/ 的/ 胸部/ 戳/ 刺/ 两下/ ,/ 陈/ 某某/ 受伤/ 后/ 逃跑/ 。/ 王小军/ 从/ 旁边/ 卖/ 肉店/ 砧板/ 上/ 拿/ 起/ 一把/ 菜刀/ 追赶/ 未及/ ,/ 将/ 菜刀/ 扔/ 向/ 陈/ 某某/ ,/ 未/ 击中/ ,/ 后/ 逃离现场/ 。 thulac 王小军_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 fool [['王小军', '持', '一', '把', '螺丝', '刀', '朝', '陈某某', '的', '胸部', '戳刺', '两', '下', ',', '陈某某', '受伤', '后', '逃跑', '。', '王小军', '从', '旁边', '卖', '肉店', '砧板', '上', '拿', '起', '一', '把', '菜', '刀', '追', '赶', '未', '及', ',', '将', '菜', '刀', '扔', '向', '陈某某', ',', '未', '击中', ',', '后', '逃离', '现场', '。']] HanLP [王小军/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] 中科院 ['王小军', '持', '一', '把', '螺丝刀', '朝', '陈', '某某', '的', '胸部', '戳', '刺', '两', '下', ',', '陈', '某某', '受伤', '后', '逃跑', '。', '王小军', '从', '旁边', '卖', '肉', '店', '砧板', '上', '拿', '起', '一', '把', '菜刀', '追赶', '未', '及', ',', '将', '菜刀', '扔', '向', '陈', '某某', ',', '未', '击中', ',', '后', '逃离', '现场', '。'] 哈工大 王小军 持 一 把 螺丝刀 朝 陈 某某 的 胸部 戳 刺 两 下 , 陈 某某 受伤 后 逃跑 。 王小军 从 旁边 卖 肉店 砧板 上 拿 起 一 把 菜刀 追赶 未 及 , 将 菜刀 扔 向 陈 某某 , 未 击中 , 后 逃离 现场 。
1.时间上(不包括加载包的时间),对于相同的文本测试两次,四个分词器时间分别为:
jieba: 0.01699233055114746 1.8318662643432617
thulac : 10.118737936019897 8.155954599380493
fool: 2.227612018585205 2.892209053039551
HanLP: 3.6987085342407227 1.443108320236206
中科院nlpir:0.002994060516357422
哈工大ltp_ :0.09294390678405762
可以看出平均耗时最短的是中科院nlpir分词,最长的是thulac,时间的差异还是比较大的。
2.分词准确率上,通过分词效果操作可以看出
第一句:结婚的和尚未结婚的确实在干扰分词啊
四个分词器都表现良好,唯一不同的是fool将“干扰分词”合为一个词
第二句:汽水不如果汁好喝,重点在“不如果”,“”不如“” 和“”如果“” 在中文中都可以成词,但是在这个句子里是不如 与果汁 正确分词
jieba thulac fool HanLP
jieba、 fool 、HanLP正确 thulac错误
第三句: 小白痴痴地在门前等小黑回来,体现在人名的合理分词上
正确是:
小白/ 痴痴地/ 在/ 门前/ 等/ 小黑/ 回来
jieba、 fool 、HanLP正确,thulac在两处分词错误: 小白_np 痴痴_a 地_u 在_p 门前_s 等_u 小_a 黑回_n 来_f
第四句:是有关司法领域文本分词
发现HanLP的分词粒度比较大,fool分词粒度较小,导致fool分词在上有较大的误差。在人名识别上没有太大的差异,在组织机构名上分词,分词的颗粒度有一些差异,Hanlp在机构名的分词上略胜一筹。
结巴因为其安装简单,有三种模式和其他功能,支持语言广泛,流行度比较高,且在操作文件上有比较好的方法好用python -m jieba news.txt > cut_result.txt
考虑代码迁移性问题,操作便捷性,就选jieba,这个包安装比较简单,普适性较强,也是入门分词器。
对命名实体识别要求较高的可以选择HanLP,根据说明其训练的语料比较多,载入了很多实体库,通过测试在实体边界的识别上有一定的优势。
中科院的分词,是学术界比较权威的,对比来看哈工大的分词器也具有比较高的优势。同时这两款分词器的安装虽然不难,但比较jieba的安装显得繁琐一点,代码迁移性会相对弱一点。哈工大分词器pyltp安装配置模型教程
对于分词器的其他功能就可以在文章开头的链接查看,比如说哈工大的pyltp在命名实体识别方面,可以输出标注的词向量,是非常方便基础研究的命名实体的标注工作。
使用: python -m jieba [options] filename 结巴命令行界面。 固定参数: filename 输入文件 可选参数: -h, --help 显示此帮助信息并退出 -d [DELIM], --delimiter [DELIM] 使用 DELIM 分隔词语,而不是用默认的' / '。 若不指定 DELIM,则使用一个空格分隔。 -p [DELIM], --pos [DELIM] 启用词性标注;如果指定 DELIM,词语和词性之间 用它分隔,否则用 _ 分隔 -D DICT, --dict DICT 使用 DICT 代替默认词典 -u USER_DICT, --user-dict USER_DICT 使用 USER_DICT 作为附加词典,与默认词典或自定义词典配合使用 -a, --cut-all 全模式分词(不支持词性标注) -n, --no-hmm 不使用隐含马尔可夫模型 -q, --quiet 不输出载入信息到 STDERR
short_Cases=[
"本月4日晚被人持刀捅伤,犯罪嫌疑人随身携带凶器。当地派出所",
"宣判后,王小军提出上诉。江西省高级人民法院经审核依法开庭审理",
"于2013年3月14日以(2012)赣刑一终字第131号刑事裁定驳回上诉",
"王小军持一把螺丝刀朝陈某某的胸部戳刺两下",
"王小军从旁边卖肉店砧板上拿起一把菜刀追赶"]
short_Cases1=[
"当地派出所产看其银行卡明细,发现其发展下线的资金异常,出具了文件检验鉴定书和物证检验报告。依据被害人QQ聊天记录,发现被害人李某丙,当晚22时许持机动车驾驶证,上述事实被告人行政处罚决定书"]
import jieba
import fool
import thulac
from pyhanlp import *
thu1 = thulac.thulac() # 默认模式
# for sentence in short_Cases:
for sentence in short_Cases1:
seg_list = jieba.cut(sentence)
print("jieba: " + "/ ".join(seg_list)) # 精确模式
text = thu1.cut(sentence, text=True) # 进行一句话分词
print("thulac",text)
print("fool",fool.cut(sentence))
print("HanLP",HanLP.segment(sentence))
Model loaded succeed
jieba: 当地/ 派出所/ 产看/ 其/ 银行卡/ 明细/ ,/ 发现/ 其/ 发展/ 下线/ 的/ 资金/ 异常/ ,/ 出具/ 了/ 文件/ 检验/ 鉴定书/ 和/ 物证/ 检验/ 报告/ 。/ 依据/ 被害人/ QQ/ 聊天记录/ ,/ 发现/ 被害人/ 李某/ 丙/ ,/ 当晚/ 22/ 时/ 许持/ 机动车/ 驾驶证/ ,/ 上述事实/ 被告人/ 行政处罚/ 决定书
thulac 当地_s 派出所_n 产_v 看_v 其_r 银行_n 卡明细_ns ,_w 发现_v 其_r 发展_v 下_f 线_n 的_u 资金_n 异常_a ,_w 出具_v 了_u 文件_n 检验_v 鉴定书_n 和_c 物证_n 检验_v 报告_n 。_w 依据_p 被害人_n QQ_v 聊天_v 记录_n ,_w 发现_v 被害人_n 李某_np 丙_g ,_w 当晚_t 22时_t 许持_v 机动车_n 驾驶证_n ,_w 上述_a 事实_n 被告人_n 行政_n 处罚_v 决定书_n
fool [['当地', '派出所', '产', '看', '其', '银行卡', '明细', ',', '发现', '其', '发展', '下线', '的', '资金', '异常', ',', '出具', '了', '文件', '检验', '鉴定书', '和', '物证', '检验', '报告', '。', '依据', '被害人', 'QQ', '聊天', '记录', ',', '发现', '被害人', '李某丙', ',', '当晚', '22时', '许持', '机动车', '驾驶证', ',', '上述', '事实', '被告人', '行政', '处罚', '决定书']]
HanLP [当地/s, 派出所/nis, 产/v, 看/v, 其/rz, 银行卡/nz, 明细/b, ,/w, 发现/v, 其/rz, 发展/vn, 下线/n, 的/ude1, 资金/n, 异常/a, ,/w, 出具/v, 了/ule, 文件/n, 检验/vn, 鉴定书/n, 和/cc, 物证/n, 检验/vn, 报告/n, 。/w, 依据/n, 被害人/n, QQ/nx, 聊天记录/nz, ,/w, 发现/v, 被害人/n, 李某丙/nr, ,/w, 当晚/t, 22/m, 时许持/nr, 机动车/n, 驾驶证/n, ,/w, 上述事实/n, 被告人/n, 行政处罚/nz, 决定书/n]
另外,还有一个评测结果:(PaperWeekly http://www.sohu.com/a/120375125_465975)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。