中文 NLP 工具总结

本文总结了多个中文NLP工具,包括jieba、pyltp、thulac、NLPIR、Zpar、CoreNLP和HanLP。通过对各工具的分词原理、安装、使用和评测的详细介绍,对比了它们的性能和准确性,发现不同工具在不同数据集上的表现各异,其中某些工具在特定任务上表现出色。
摘要由CSDN通过智能技术生成

中文 NLP 工具总结

前言: 最近由于实验室研究需要,需要调研一下目前已有的中文 NLP 工具,于是在调研完了之后就写了这篇总结,如果哪里有错误还请指出。

1. Jieba 分词

1.1 简介

官网介绍:“结巴”中文分词:做最好的 Python 中文分词组件

但是不是最好的呢?详情见最后的横向对比。

GitHub地址:https://github.com/fxsjy/jieba

1.2 模型原理

  • 基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG)
  • 采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合
  • 对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法

1.3 安装

安装方式很简单,只要一个命令即可:

pip install jieba 
#或者
pip3 install jieba

1.4 使用

# encoding=utf-8
import jieba

seg_list = jieba.cut("我来到北京清华大学", cut_all=True)
print("Full Mode: " + "/ ".join(seg_list))  # 全模式

seg_list = jieba.cut("我来到北京清华大学", cut_all=False)
print("Default Mode: " + "/ ".join(seg_list))  # 精确模式

seg_list = jieba.cut("他来到了网易杭研大厦")  # 默认是精确模式
print(", ".join(seg_list))

seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")  # 搜索引擎模式
print(", ".join(seg_list))

输出:

【全模式】: 我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学

【精确模式】: 我/ 来到/ 北京/ 清华大学

【新词识别】:他, 来到, 了, 网易, 杭研, 大厦    (此处,“杭研”并没有在词典中,但是也被Viterbi算法识别出来了)

【搜索引擎模式】: 小明, 硕士, 毕业, 于, 中国, 科学, 学院, 科学院, 中国科学院, 计算, 计算所, 后, 在, 日本, 京都, 大学, 日本京都大学, 深造

1.5 分词评测

ctb6 msra pku
jieba 80.79 81.45 81.82

2. pyltp——哈工大

2.1 简介

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

官网:https://ltp.readthedocs.io/zh_CN/latest/begin.html

官方pyltp介绍:https://pyltp.readthedocs.io/zh_CN/develop/api.html

标注体系等详细介绍:http://www.ltp-cloud.com/intro

GitHub 主页:https://github.com/HIT-SCIR/pyltp

2.2 模型原理

2.2.1 分词

基于字的序列标注,对于输入句子的字序列,模型给句子中的每个字标注一个标识词边界的标记,通过机器学习算法框架从标注数据中学习参数。

2.2.2 词性标注

与分词模块相同,将词性标注任务建模为基于词的序列标注问题。对于输入句子的词序列,模型给句子中的每个词标注一个标识词边界的标记。

2.2.3 依存分析

依存句法分析模块的主要算法依据神经网络依存句法分析算法,Chen and Manning (2014)。同时加入丰富的全局特征和聚类特征。在模型训练时,我们也参考了Yoav等人关于dynamic oracle的工作。

2.3 安装

  1. 安装 pyltp 的包
pip install pyltp
  1. 下载模型文件:https://pan.baidu.com/share/link?shareid=1988562907&uk=2738088569#list/path=%2F

目前最新的模型是 3.4.0 ,解压之……
pyltp目录

2.4 使用

2.4.1 分词
# -*- coding: utf-8 -*-
import os
LTP_DATA_DIR = '/home/username/pyltp/ltp_model'  # ltp模型目录的路径
cws_model_path = os.path.join(LTP_DATA_DIR, 'cws.model')  # 分词模型路径,模型名称为`cws.model`

from pyltp import Segmentor
segmentor = Segmentor()  # 初始化实例
segmentor.load(cws_model_path)  # 加载模型
words = segmentor.segment('元芳你怎么看')  # 分词
print(list(words))
for word in list(words):
    print(word)
segmentor.release()  # 释放模型

输出:

['元芳', '你', '怎么', '看']
元芳
你
怎么
看
2.4.2 词性标注
# -*- coding: utf-8 -*-
import os
LTP_DATA_DIR = '/home/knight/pyltp/ltp_model'  # ltp模型目录的路径
pos_model_path = os.path.join(LTP_DATA_DIR, 'pos.model')  # 词性标注模型路径,模型名称为`pos.model`

from pyltp import Postagger
postagger = Postagger() # 初始化实例
postagger.load(pos_model_path)  # 加载模型

words = ['元芳', '你', '怎么', '看']  # 分词结果
postags = postagger.postag(words)  # 词性标注

print('\t'.join(postags))
postagger.release()  # 释放模型

输出:

nh	r	r	v
2.4.3 依存分析
# -*- coding: utf-8 -*-
import os
LTP_DATA_DIR =<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值