知识图谱已经在人工智能的各个领域发挥越来越重要的作用,例如视觉问答、对话系统、推荐系统等。知识图谱构建是应用这些知识图谱的基础,而面对生活和企业中数据的爆发式增长,自动化知识图谱构建显得越来越重要。从非结构化文本中自动抽取三元组知识并构建知识图谱需要用到的核心技术就是命名实体识别和关系抽取,现在已经有了很多相关的具体算法和模型,对于这些大家可以看顶会论文和技术分享,我们主要来介绍几个专门面向中文的命名实体识别和关系抽取的工具。
1. 中文分词
中文自然语言处理与其它语言比如英语的最大不同之处在于英文中每个词直接由空格分隔开,但是中文是以字来分隔的,对于机器来说并不知道一句话中哪些字组成一个词。因此,在实现很多中文的自然语言处理功能时,需要先进行分词处理,将一句话中的中文词语分隔开。首先,我们来介绍一种最流行的中文分词工具jieba。
jieba的官方github地址:https://github.com/fxsjy/
ieba在官方对jieba(标星24.5k+)的介绍中,我们看到是这样说的:
“结巴”中文分词:做最好的 Python 中文分词组件
不是人自吹,jieba确实是目前最好的中文分词工具,我们来看看这个小东西都有什么特点。
- 支持全自动安装:
easy_install jieba 或者 pip install jieba / pip3 install jieba
2. 对于同一个句子,支持四种分词模式:
- 精确模式:试图将句子最精确地切开,适合文本分析。
- 全模式:把句子中所有的可以成词的词语都扫描出来, 速度非常快,但不能解决歧义。
- 搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
- paddle模式:利用PaddlePaddle深度学习框架,训练序列标注(双向GRU)网络模型实现分词。同时支持词性标注。paddle模式使用需安装paddlepaddle-tiny:
pip install paddlepaddle-tiny==1.6.1
3. 支持繁体分词
4. 支持自定义词典
5. 算法上,采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合。对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法。具体的jieba和用法可以参考官方github文档。
2. 命名实体识别
目前较为成熟的中文命名实体识别(NER)工具包括LTP,PyHanlp,Lac等。
2.1 语言技术平台(LTP)
语言技术平台(LTP) 是哈工大社会计算与信息检索研究中心 11 年的持续研发和推广,LTP 已经成为国内外最具影响力的中文处理基础平台,曾获 CoNLL 2009七国语言句法语义分析评测 总成绩第一名,中文信息学会钱伟长一等奖等重要成绩和荣誉。LTP提供包括中文分词、词性标注、命名实体识别、依存句法分析、语义角色标注等丰富、高效、精准的自然语言处理技术。目前,LTP 已经被 500 多家国内外研究机构和企业使用,多家大企业和科研机构付费使用。
LTP官方地址: