资料来源: Knowledge Graph tutorial (AAAI 2017-part 2)
相关链接:https://kgtutorial.github.io/slides/Part2b_IE.pdf
问题背景
知识抽取(Information Extraction)主要是在完成一系列分词、词性标注等NLP任务等的基础上,从打上词性标签的句子中提取信息。现有的提取系统主要有:OpenIE,ConceptNet,NELL,KnowledgeVault。
知识图谱中信息一般以三元组的方式进行组织,一般来说有(实体,关系,实体)和(实体,属性,属性值)两种形式。在信息提取的过程主要包含如下三个任务:
1. 如何确定领域知识(Define domain)?
2.如何提取三元组(Information extraction)?
3.如何评估提取出的三元组的可靠性(Scoring the candidate facts)?
针对每一个任务,当前均有三种解决方式:1. 监督(纯手工),2.半监督(人机交互),3.无监督(机器学习)。以下将简略介绍针对每一个任务的三种解决方式。
任务1: 领域知识的确定
之所以要确定领域知识,一方面是为了在信息提取任务中可以有效避免语义漂流(semantic drift),一方面是为了在后期的评估任务中可以过滤掉悖于领域知识的三元组。
case1: 监督。需要领域专家知识来构造高层语义网络,精度高但代价昂贵。
case2: 半监督。人工列出所需构建的实体,和实体之间的层次关系。利用机器学习的方式从语料库中学习实体之间的关系。
case3: 无监督。将句子中的任何动词作为关系,任何名词作为实体。精度低,容易引入噪声。
任务2:三元组的提取
case1: 无监督。需要领域专家知识手工编写规则/模式,例如用“A work for B”来描述雇佣关系,然后将这样的规则/模式应用入句子,来挖掘出具体的三元组。
case2: 半监督。人工给出种子实例(Seed instances),例如”(John,HuaWei),(Alice,Apple)“。然后交给机器,学习出这类种子实例中所包含的模式 (Pattern) ——“A work for B”,接着利用该模式挖掘新的符合该模式的实例,再将这些新的实例加入种子实例中。所以,上述过程是一个bootstrap的过程。
在这个过程中,还可以引入人工互动。例如对机器学习到的模式,可以进行人工的筛选。对新学习到的三元组实例可以标注正负例。
case3: 无监督。将句子中符合一定语法规则的动词作为关系,将该动词左右的名词作为实体。
任务三:可靠性评估
case1: 无监督。人工设计评估函数。或从大规模打好标签数据中学习到特定的评估函数。耗时长,精度高。
case2: 半监督。迭代的方法。打标签的数据和未打标签的数据共存,不断迭代,refain。
case3: 无监督。一个模式的得分正比于抽取出该模式所使用到的实例的个数。一个三元组的得分正比于抽取出该三元组所使用到的模式个数。