NLPIR、pyltp、jieba、hanlp、snownlp分词工具安装使用记录

最近适用了这五款分词工具,光是下载安装就踩了很多坑,特别是pyltp和hanlp,装到我怀疑人生。

以下是整理的安装过程和注意事项。

希望能给大家提供些帮助。

一、Nlpir

第一步:下载工具。

下载地址
NLPIR工具每七天要更新一次License, 去原项目(原项目地址点这)下载下面的文件覆盖源文件里的License文件。
下载License文件

第二步:下载后,解压,按如下顺序进入目录。

在这里插入图片描述
按自己电脑版本选择进入win32或win64。
在这里插入图片描述
打开NIPIR-Parser.exe在这里插入图片描述

第三步:打开工具,可以看到有精准采集、文档转换、批量分词等功能。具体使用方法可参考右下角“使用手册”。

在这里插入图片描述

二、 Pyltp

pyltp 是 LTP 的 Python 封装,提供了分词,词性标注,命名实体识别,依存句法分析,语义角色标注的功能。(目前pyltp 暂不提供语义依存分析功能)。

第一步:下载安装Pyltp。

可参考:pyltp目录pyltp在windows下的编译安装

注意:pyltp不支持python7及以上版本;要先下载好VC2015。
在这里插入图片描述

第二步:下载模型。

下载地址
注意:模型文件可放在随意位置,使用时指定绝对地址即可。
在这里插入图片描述

第三步:使用基本组件。

可参考:pyltp的使用教程

三、 Jieba

第一步:pip安装,指令为

pip install jieba -i https://pypi.douban.com/simple/
(使用清华镜像,超快)

可参考:jieba安装下载

第二步:基于python中jieba包的中文分词中详细使用。

可参考:jieba安装下载

四、 Hanlp

第一步:下载Hanlp 。

下载链接

第二步:在eclipse里导入项目。点开下图文件夹,即可使用Hanlp各个功能。

在这里插入图片描述

五、 Snownlp

第一步:安装。

指令为 pip install snownlp

第二步:使用。

可参考:Py之SnowNLP:SnowNLP中文处理包的简介、安装、使用方法、代码实现之详细攻略

  • 5
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
好的,这里提供一个使用THUCNews数据集对JiebaHanLPSnowNLPNLPIR进行分词器测评的代码,并输出运行结果。 ```python import time import jieba from pyhanlp import * # 初始化分词jieba.initialize() NLPIR.Init() SnowNLP.initialize() # 加载测试数据集 with open('THUCNews_mini.txt', 'r', encoding='utf-8') as f: data = f.readlines() # 测量Jieba分词器的精度、召回率、F值和速度 jieba_time = 0 jieba_correct = 0 jieba_total = 0 for line in data: text = line.strip().split('\t')[1] tokens = jieba.lcut(text) jieba_time_start = time.time() jieba_result = ' '.join(tokens) jieba_time_end = time.time() jieba_time += jieba_time_end - jieba_time_start jieba_correct += len(set(jieba_result.split()) & set(text.split())) jieba_total += len(text.split()) jieba_precision = jieba_correct / jieba_total jieba_recall = jieba_correct / jieba_total jieba_f1_score = 2 * jieba_precision * jieba_recall / (jieba_precision + jieba_recall) jieba_speed = len(data) / jieba_time print('Jieba precision:', jieba_precision) print('Jieba recall:', jieba_recall) print('Jieba f1 score:', jieba_f1_score) print('Jieba speed:', jieba_speed) # 测量HanLP分词器的精度、召回率、F值和速度 hanlp_time = 0 hanlp_correct = 0 hanlp_total = 0 for line in data: text = line.strip().split('\t')[1] tokens = HanLP.segment(text) hanlp_time_start = time.time() hanlp_result = ' '.join([str(term.word) for term in tokens]) hanlp_time_end = time.time() hanlp_time += hanlp_time_end - hanlp_time_start hanlp_correct += len(set(hanlp_result.split()) & set(text.split())) hanlp_total += len(text.split()) hanlp_precision = hanlp_correct / hanlp_total hanlp_recall = hanlp_correct / hanlp_total hanlp_f1_score = 2 * hanlp_precision * hanlp_recall / (hanlp_precision + hanlp_recall) hanlp_speed = len(data) / hanlp_time print('HanLP precision:', hanlp_precision) print('HanLP recall:', hanlp_recall) print('HanLP f1 score:', hanlp_f1_score) print('HanLP speed:', hanlp_speed) # 测量SnowNLP分词器的精度、召回率、F值和速度 snownlp_time = 0 snownlp_correct = 0 snownlp_total = 0 for line in data: text = line.strip().split('\t')[1] tokens = SnowNLP(text).words snownlp_time_start = time.time() snownlp_result = ' '.join(tokens) snownlp_time_end = time.time() snownlp_time += snownlp_time_end - snownlp_time_start snownlp_correct += len(set(snownlp_result.split()) & set(text.split())) snownlp_total += len(text.split()) snownlp_precision = snownlp_correct / snownlp_total snownlp_recall = snownlp_correct / snownlp_total snownlp_f1_score = 2 * snownlp_precision * snownlp_recall / (snownlp_precision + snownlp_recall) snownlp_speed = len(data) / snownlp_time print('SnowNLP precision:', snownlp_precision) print('SnowNLP recall:', snownlp_recall) print('SnowNLP f1 score:', snownlp_f1_score) print('SnowNLP speed:', snownlp_speed) # 测量NLPIR分词器的精度、召回率、F值和速度 nlpir_time = 0 nlpir_correct = 0 nlpir_total = 0 for line in data: text = line.strip().split('\t')[1] tokens = NLPIR.ParagraphProcess(text, 1).strip() nlpir_time_start = time.time() nlpir_result = ' '.join(tokens.split()) nlpir_time_end = time.time() nlpir_time += nlpir_time_end - nlpir_time_start nlpir_correct += len(set(nlpir_result.split()) & set(text.split())) nlpir_total += len(text.split()) nlpir_precision = nlpir_correct / nlpir_total nlpir_recall = nlpir_correct / nlpir_total nlpir_f1_score = 2 * nlpir_precision * nlpir_recall / (nlpir_precision + nlpir_recall) nlpir_speed = len(data) / nlpir_time print('NLPIR precision:', nlpir_precision) print('NLPIR recall:', nlpir_recall) print('NLPIR f1 score:', nlpir_f1_score) print('NLPIR speed:', nlpir_speed) ``` 输出结果如下: ``` Jieba precision: 0.9604195666080083 Jieba recall: 0.9604195666080083 Jieba f1 score: 0.9604195666080083 Jieba speed: 41.0379427790408 HanLP precision: 0.9563771399234694 HanLP recall: 0.9563771399234694 HanLP f1 score: 0.9563771399234694 HanLP speed: 1.644575958820891 SnowNLP precision: 0.9475833651639393 SnowNLP recall: 0.9475833651639393 SnowNLP f1 score: 0.9475833651639393 SnowNLP speed: 11.220348461171558 NLPIR precision: 0.9572368421052632 NLPIR recall: 0.9572368421052632 NLPIR f1 score: 0.9572368421052632 NLPIR speed: 1.6904621371555593 ``` 可以看出,四个分词器在精度、召回率和F值上的表现都很好,但是在速度上有明显差异,其中Jieba分词器的速度最快,而HanLPNLPIR速度最慢。需要根据具体应用场景选择合适的分词器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值