整理一些自己日常学习中常用到的中文 NLP 库
常用的中文 NLP 库整理
下面准备两段文本以供下文演示使用
1 |
|
各常见工具库功能对比
以下内容根据各库官方文档整理而来,仅供参考,可能并不准确
库名 | 分词 | 关键词提取 | 词性标注 | 情感分析 | 文本摘要 | 自定义词典 | 新词发现 | 依存句法分析 | 语义依存分析 | 语义角色标注 | 其他功能 |
---|---|---|---|---|---|---|---|---|---|---|---|
jieba | ✔ | ✔ | ✔ | ✔ | ✔ | 繁体分词 | |||||
snownlp | ✔ | ✔ | ✔ | ✔ | 繁体转简体、转换成拼音 | ||||||
Jiagu | ✔ | ✔ | ✔ | ✔ | ✔ | 文本聚类、知识图谱关系抽取 | |||||
Macropodus | ✔ | ✔ | ✔ | ✔ | 文本相似度、中文数字阿拉伯数字互转、罗马数字与阿拉伯数字互转、中文繁简拼音互转 | ||||||
HanLP | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | 感知机词法分析、拼音简繁 |
LTP | ✔ | ✔ | ✔ | ✔ | ✔ | ||||||
THULAC | ✔ | ✔ | ✔ | ||||||||
pkuseg | ✔ | ✔ | ✔ |
NLP 常见中英文对照
英文缩写 | 英文全称 | 中文 |
---|---|---|
tok | Tokenization | 分词 |
pos | Part-of-Speech Tagging | 词性标注 |
lem | Lemmatization | 词干提取 |
fea | Features of Universal Dependencies | 词法语法特征 |
ner | Named Entity Recognition | 命名实体识别 |
dep | Dependency Parsing | 依存句法分析 |
con | Constituency Parsing | 短语成分分析 |
srl | Semantic Role Labeling | 语义角色标注 |
sdp | Semantic Dependency Parsing | 语义依存分析 |
amr | Abstract Meaning Representation | 抽象意义表示 |
词性标注标签含义(PKU 规范)
词性 | 含义 |
---|---|
n | 名词 |
t | 时间词 |
s | 处所词 |
f | 方位词 |
m | 数词 |
q | 量词 |
b | 区别词 |
r | 代词 |
v | 动词 |
a | 形容词 |
z | 状态词 |
d | 副词 |
p | 介词 |
c | 连词 |
u | 助词 |
y | 语气词 |
e | 叹词 |
o | 拟声词 |
i | 成语 |
l | 习惯用语 |
j | 简称 |
h | 前接成分 |
k | 后接成分 |
g | 语素 |
x | 非语素字 |
w | 标点符号 |
nr | 人名 |
ns | 地名 |
nt | 机构名称 |
nx | 外文字符 |
nz | 其它专名 |
vd | 副动词 |
vn | 名动词 |
vx | 形式动词 |
ad | 副形词 |
jieba
项目主页:fxsjy/jieba: 结巴中文分词
安装
1 |
|
分词
1 |
|
1 |
|
强制调高调低词频
1 |
|
关键词提取(基于 TF-IDF 算法)
1 |
|
1 |
|
关键词提取(基于 TextRank 算法)
1 |
|
1 |
|
词性标注
1 |
|
1 |
|
SnowNLP
项目主页:isnowfy/snownlp: Python library for processing Chinese text
安装
1 |
|
引用和准备
1 |
|
分词
1 |
|
1 |
|
词性标注
1 |
|
1 |
|
情感分析(返回 positive 的概率)
1 |
|
1 |
|
汉字转拼音
1 |
|
1 |
|
关键词提取
1 |
|
1 |
|
文本摘要
1 |
|
1 |
|
自动分句
1 |
|
1 |
|
Jiagu
项目主页:ownthink/Jiagu: Jiagu深度学习自然语言处理工具 知识图谱关系抽取 中文分词 词性标注 命名实体识别 情感分析 新词发现 关键词 文本摘要 文本聚类
安装
1 |
|
引用
1 |
|
中文分词
1 |
|
1 |
|
知识图谱关系抽取(作者仍在完善中)
1 |
|
1 |
|
关键词提取
1 |
|
1 |
|
文本摘要
1 |
|
1 |
|
情感分析
1 |
|
1 |
|
Macropodus
安装
1 |
|
引用
1 |
|
分词
1 |
|
1 |
|
新词发现
1 |
|
1 |
|
文本摘要
1 |
|
1 |
|
关键词抽取
1 |
|
1 |
|
文本相似度
1 |
|
1 |
|
中文汉字转拼音
1 |
|
1 |
|
中文繁简转换
1 |
|
1 |
|
科学计算器
1 |
|
1 |
|
HanLP
在线演示:HanLP在线演示 多语种自然语言处理
这个库现已升级至 2.X ,与旧版本 1.X 的 pyhanlp
库使用方式完全不同
安装
轻量级 RESTful API (使用官方服务器进行计算,API 申请)
1 |
|
海量级 native API (使用本机进行计算)
1 |
|
轻量级 RESTful API 使用
1 |
|
上图的结果可以看出结果包含了中文分词、词性标注、实体命名识别、依赖项解析、语义角色标记等内容
如果不使用 pretty_print()
函数,则会返回一个 json
,其中同样会包含上述内容,但需要自行解析以便查看
海量级 native API 使用
初次使用会下载一个略大于 1 GiB 的语料库,默认会保存至 C:\Users\[USERNAME]\AppData\Roaming\hanlp\
下
1 |
|
输出结果与 RESTful API 完全一致,此处不再展示
单独使用 native API 的单个功能
1 |
|
1 |
|
只需修改上方代码的第 4 行,即可选择需要执行的任务,例如修改为 tasks='dep'
则只会执行分词和依存句法分析(RESTful API 使用单个功能的方法与此相同)
同样地,如果不使用 pretty_print()
函数,则会返回一个 json
,可以自行解析结果使用
LTP
项目主页:HIT-SCIR/ltp: Language Technology Platform
开发者:哈工大社会计算与信息检索研究中心(HIT-SCIR)
安装
1 |
|
导包与初始化
1 |
|
分词
1 |
|
1 |
|
词性标注(需要先分词)
1 |
|
1 |
|
命名实体识别(需要先分词)
1 |
|
1 |
|
语义角色标注(需要先分词)
1 |
|
1 |
|
依存句法分析(需要先分词)
1 |
|
1 |
|
语义依存分析(需要先分词)
1 |
|
1 |
|
THULAC
项目主页:thunlp/THULAC-Python: 一个高效的中文词法分析工具包
安装
通过 pip 下载会同时下载一个模型文件
1 |
|
引用和初始化
1 |
|
Python 3.8 及以上版本的错误处理
因为 Python 3.8 开始不再拥有 time.clock()
,所以直接使用会导致程序异常
可以通过添加以下代码解决
1 |
|
分词及词性标注
1 |
|
1 |
|
pkuseg
安装
1 |
|
引用
1 |
|
分词
1 |
|
1 |
|
词性标注
1 |
|
1 |
|
zhconv
一个轻量级的繁简转换工具,支持地区词转换
TODO