文本分词包的对比
安装命令
pip install jiagu # 包53.8M
pip install pkuseg #包50.2M
pip install thulac #包52.9M
pip install jieba_fast #包 7.5M
pip install LAC # 包64.8M
导包
from LAC import LAC
import pkuseg
import jieba_fast as jie
import thulac
import jiagu
文本载入为列表
text = []
with open(r'data/fenci_test.txt','r',encoding='utf-8') as f:
for line in f.readlines():
text.append(line.strip('\n').split('\t')[-1])
print('{}行文本以及分好'.format(len(text)))
一共有33388也就是3万3k多行短文本,每行长度都不是很长,一般是十个字以内
测试函数
def jieba_fun(text):
result = []
for t in text:
result.append(jie.lcut(t))
return result
def lac_func(text):
lac = LAC(mode='seg')
result = lac.run(text)
return result
def pkuseg_fun(text):
result = []
seg = pkuseg.pkuseg()
for t in text:
result.append(seg.cut(t))
return result
def thulac_fun(text):
result = []
thu1=thulac.thulac(seg_only=True)
for t in text:
result.append(thu1.cut(t))
return result
def jiagu_fun(text):
result = []
for t in text:
result.append(jiagu.seg(t))
return result
模块 | 处理时间 | 效果 |
---|---|---|
jieba_fast | 1s269ms | 看上去还行但是部分词没有分开,有些词被划为字 |
jiagu | 3s257ms | 分的效果相当不错,但是时间这种实体就被分开了 |
lac | 12s117ms | 对形容词划分有点过度,但是时间地点实体划分很好 |
thulac | 19s17ms | 这个莫名会加入空格,而且效果也不是太行 |
pkuseg | 18s760ms | 划分比较细,效果上对实体划分太细,识别差一点 |
究极测试
测试句:我想过过儿过过的生活
['我', '想', '过', '过儿', '过过', '的', '生活']失败
['我', '想', '过', '过', '儿', '过', '过', '的', '生活']失败
['我', '想过', '过儿', '过', '过', '的', '生活']成功
[['我', ''], ['想', ''], ['过', ''], ['过儿', ''], ['过', ''], ['过', ''], ['的', ''], ['生活', '']]成功
['我', '想', '过', '过儿', '过过', '的', '生活']失败
‘来到儿子等校车的地方,邓超对孙俪说:“我也想等等等等等过的那辆车。”’
['来到', '儿子', '等', '校车', '的', '地方', ',', '邓超', '对', '孙俪', '说', ':', '“', '我', '也', '想', '等等等等', '等', '过', '的', '那辆车', '。', '”']失败
['来到', '儿子', '等', '校车', '的', '地方', ',', '邓', '超', '对', '孙俪', '说', ':', '“', '我', '也', '想', '等等', '等等', '等', '过', '的', '那', '辆', '车', '。', '”']成功
['来到', '儿子', '等', '校车', '的', '地方', ',', '邓超', '对', '孙俪', '说', ':', '“', '我', '也想', '等等', '等等', '等', '过', '的', '那', '辆', '车', '。', '”']成功
[['来', ''], ['到', ''], ['儿子', ''], ['等', ''], ['校车', ''], ['的', ''], ['地方', ''], [',', ''], ['邓超', ''], ['对', ''], ['孙俪', ''], ['说', ''], [':', ''], ['“', ''], ['我', ''], ['也', ''], ['想', ''], ['等等', ''], ['等等', ''], ['等', ''], ['过', ''], ['的', ''], ['那', ''], ['辆', ''], ['车', ''], ['。', ''], ['”', '']]失败
['来到', '儿子', '等', '校车', '的', '地方', ',', '邓', '超对', '孙俪', '说', ':', '“', '我', '也', '想', '等等', '等等', '等', '过', '的', '那', '辆', '车', '。', '”']成功
建议文本量大的情况下:
短文本,jieba_fast 或者jiagu
长文本:lac
文本量不是很多就上百度的lac
它的使用起来还是比较简单的
seg模式只是分词,lac模式还有实体命名识别和词形标注,rank模式在之前的情况下引入每个词的重要性。