图谱构建之知识抽取
PART 1
何为知识抽取?从何处抽取?
知识抽取(Knowledge Extraction, KE)是从结构化(例如关系数据库、XML)和非结构化(例如文本、文档、图像)源中创建知识。产生的知识需要采用机器可读和机器可解释的格式(例如图),并且必须以便于推理的方式表示知识。下面的图是个知识抽取的例子,从一段文本中抽取出人与人之间的关系。
上面已经提到知识抽取是从结构化和非结构化数据中进行抽取,并列举了个例。然而再细分来看,可分为结构化数据、半结构化数据和无结构化数据。其中我们所熟知的维基百科和百度百科就属于半结构化文本,而纯文本就属于无结构化文本。
目前来看,如何从无结构化数据中进行知识抽取是当前知识图谱构建的技术瓶颈,是研究的热点、难点。而从无结构化数据中进行知识抽取需要用到一些关键的技术,例如实体识别、关系抽取以及事件抽取等,下面我们将逐一介绍这些技术目前的主要方法。
PART 2 实体识别
实体识别是什么?主要方法!
实体识别(NER)的目的是抽取文本中的原子信息,包括人名、组织机构名、位置、时间、金钱等。下面是例子。
那么在一些已经标注的数据中,如何来标注实体呢,例如上图中的时间。目前有几种标注体系,包括IO、BIO、BIOES、BMEWO,在不同的标注体系中,有不同的意义。目前比较常用的两种标注体系是 BIO 和 BIOES。如下图的标注案例。
接下来,我们看一下实体识别的一些主要方法:
基于规则和词典匹配的方法:很早之前的方法,现在基本被替代了。
基于机器学习的方法:这里的一些主要方法包括隐马尔科夫模型( Hidden Markov Model, HMM)、最大熵马尔科夫模型( Maximum Entropy Markov Model, MEMM )、条件随机场(Conditional Random Fields, CRF)、支持向量机(Support Vector Machine, SVM)。
基于深度学习的方法:深度学习的方法已经在实体识别上面研究的很广,包括CNN、LSTM+CRF等,有大量的论文和开源代码。
基于半监督/迁移学习的方法:利用一部分未标注数据,或者是其他领域、其他语言的数据来增强当前的模型。
基于预训练模型的方法:从BERT模型对NLP下游任务取得了惊人的效果,其中包括NER,近些的研究趋势基本都会多多少少采用预训练的方法,无论是学术界还是工业界。
PART 3 关系抽取
关系抽取是什么?主要方法!
关系抽取是做什么,简单来说,是抽取到的实体与实体之间的关系进行抽取。例如两个实体都是人物的话,那么人物之间的关系可能是父子关系、狐朋狗友的关系、亲密恋人的关系等等。如果一个实体是人、一个实体是公司或者组织,那么两者之间的关系可能是雇佣关系或者是隶属关系。
那么主要的关系抽取方法有几种呢?
基于模板的方法:一种是基于触发词/字符串、一种是基于依存句法。
模板的方法一般都是在小规模数据集上容易实现且构建简单,缺点为难以维护、可移植性差、模板有可能需要专家构建。
基于监督学习的方法:监督学习下面主要是深度学习比较普遍,当然也有传统的机器学习,在这里,我们只关注下深度学习方法。
利用深度学习进行关系抽取又存在两大分支,一个是Pipline的方法,即我们必须先进行实体识别,然后再做关系抽取。而另一个就是Joint Model的方法,即把实体识别和关系抽取两个任务同时建模,在训练的过程中同时优化。
这里有一些比较不错的模型。
Pinline模型:
Classifying Relations by Ranking with Convolutional Neural Networks
Relation Classification via Multi-Level Attention CNNs
Attention-Based Bidirectional Long Short-Term Memory Networks for Relation Classification
Joint Model模型
End-to-End Relation Extraction using LSTMs on Sequences and Tree Structures
监督学习效果虽好,但获取大量标注好的数据集是有困难的。可以通过半监督学习的方法利用无标注数据,此处又分为远程监督学习和Bootstrapping方法两种。
PART 4 事件抽取
事件抽取是什么?主要方法!
我们知道关系是实体间的某种关系,那么什么是事件呢,下面给出定义:
事件:具有事件、地点、参与者等基本要素,可由某个动作触发或者状态改变而发生的一个图结构知识片段。
事件抽取:从数据中抽取事件信息,并以结构化或者语义化的形式展现,例如事件发生的时间、地点、原因、参与者等等。
事件抽取冲包含一些相关术语,先有了解:
事件描述(Event Mention):描述事件的句子
事件触发词(Event Trigger):标记事件类型的词汇
事件元素(Event Argument):事件的参与者
时间角色(Event Role):元素在事件句中扮演的角色
事件抽取含有多项子任务:
那么主要的方法都有什么?
首先还是基于模板和规则的方法,其次就是传统的机器学习方法,定义为分类任务,依赖于句法分析、词性标注等NLP工具。
最主要的还是目前的深度学习方法,这里和关系抽取类似,又分为Pipline和Joint Model的方法。如下图。
参考资料
东南大学《知识图谱》研究生课程。
https://github.com/npubird/KnowledgeGraphCourse
推荐阅读
斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用
太赞了!Springer面向公众开放电子书籍,附65本数学、编程、机器学习、深度学习、数据挖掘、数据科学等书籍链接及打包下载
深度学习如何入门?这本“蒲公英书”再适合不过了!豆瓣评分9.5!【文末双彩蛋!】
数学之美中盛赞的 Michael Collins 教授,他的NLP课程要不要收藏?
From Word Embeddings To Document Distances 阅读笔记
模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法
可解释性论文阅读笔记1-Tree Regularization
关于AINLP
AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。