导语:本文通过一些具体的例子解释说明构建知识图谱涉及到的概念和技术。
互联网的出现为大量内容创建者打开了创造内容产出信息的大门。因此,现在网络上存在大量高质量的用户生成内容。为了帮助计算机对这些文档内容有更好的理解,我们需要一种有效的方式来组织和表示这些数据。针对这个问题,人们认为可以把数据中隐藏的知识用图结构的形式进行表示,于是基于语义网概念提出了知识图谱来解决这个问题。
简而言之,知识图谱以图结构的组织形式,通过语义关联描述客观世界中概念、实体及其关系。
如何构建一个用知识图谱表示的知识库呢?下面通过一些简单的例子,描述从网页中的非结构化纯文本中收集信息进而构建知识图谱的基本流程。
图1:知识图构建管道
1.知识抽取
在构建的第一阶段,我们从海量纯文本中识别文本中的实体以及实体间的关系,过滤出对我们有用的事实知识。识别过程涉及到很多自然语言处理技术的应用,例如分词、命名实体识别、词形还原等等。在这一步中,例如对于句子
代码语言:javascript复制世界四大博物馆之一卢浮宫原是法国的王宫,位于巴黎市中心
通过信息提取就被简化为类似以下的简单陈述句的形式:
代码语言:javascript复制“卢浮宫 位于 巴黎”
2.知识融合
三元组
在构建的第二阶段,大多数知识图谱将这些简单陈述句以三元组的形式保存到知识库中。三元组这个术语来自于语义网的知识表示框架中的RDF概念(资源描述框架),是知识图谱中知识表示的基本单位,简称SPO,用来表示实体与实体之间的关系,或者实体的某个属性的属性值是什么。
上面那个陈述句会被转化拆解成下面三元组的形式,
代码语言:javascript复制主题:卢浮宫
谓词:位于
对象:巴黎
本体
这里我们再简单说一下知识图谱中本体的概念。本体有点类似于我们学生物时的界门纲目科属种的分类概念,是知识图谱中的概念层,或者说模式层。
本体可以用来规定我们的知识图谱中包含哪些领域的知识,知识的类别体系:一共有哪些类别,每种类别下面可以有哪些属性。另外,还能规定例如类别的上下位关系(父类和子类),属性的约束(例如一个人的出生日期的属性只能有1个)等等。本体是关于数据的描述和定义(元数据)。 在语义网知识体系中,使用了RDFs和OWL语言来描述本体知识。
ontology
图2 数据集DBpedia中的部分本体知识
本体知识界定了每个实体应该存在于哪种类别,我们获取到的三元组会被本体匹配算法分类在不同的本体类型下。例如,如果本体是“机场”,那么,一些属于这一类的实体像“大连周子水机场 ”,“ 戴高乐机场 ”,“广州白云机场 ”就会被包括进来。该过程也会涉及到自然语言处理技术的应用。
回到刚才那个例子,在知识库中,我们将以‘卢浮宫——位于——巴黎’的形式保存上述关系。这是知识库中的单个三元组。在实践中,知识库包括数百万这样的三元组,我们也称之为事实。这些事实都会被归入知识库中对应的本体。
这个过程我们还需要解决一些实体消歧以及共指消解问题。
实体消歧
给定一段文本
代码语言:javascript复制“在旧金山的2019春季发布会上,苹果推出新耳机产品Airpods2”
文本中的提及“苹果”可能指向的目标实体包括 {苹果(水果),苹果公司,苹果(电影),苹果(银行), …},系统需要根据“苹果”的上下文词语识别出该段文本中“苹果”指的是苹果公司,而不是苹果(水果)或者苹果(电影)。
共指消解
例如,在一遍文章的开头可能提及到“哈尔滨工业大学”,后面则称为“哈工大”、“工大”等,可能还会提到“这所大学”、“她”这些指代词等,这里所有的词语指向的都是哈工大这同一个实体,我们在提取知识时必须可以辨别出来。
3.三元组转换为知识图谱
现在,让我们看看在构建的最后阶段,知识库中的三元组如何转换为知识图谱。知识图谱是一个实体互联的大型网络。实体间的连接正是基于知识库中的三元组创建的。
知识图谱的一个主要功能就是识别实体之间缺失的链接,它属于推理任务里知识补全或事实补全的一部分。为了进一步阐明这一点,让我们考虑下边我们从知识库中收集的这些样本关系。
代码语言:javascript复制Friends (Anne, Jane)
Friends (Jane, Jim)
LivesIn (Anne, Paris)
LivesIn (Jim, Brazil)
LivesIn (Jane, Brazil)
BornIn (Anne, Paris)
BornIn (Jim, Paris)
上面是关于Anne、Jane、Jim几个人的朋友关系,居住地和出生地信息,如果我们尝试仅基于上述关系构建一个基本的知识图谱,可以图结构可视化为下图:
图3 仅使用观察到的事实构建的知识图谱
然而,有一些未知的关系没有从知识库中明确检索出来,例如, Anne和Jim是朋友吗? Jane的出生地是什么? 这意味着这种关系可以被视为缺失的链接。
图4 知识图谱中缺少的链接
人们一般使用统计关系学习(SRL)框架来推断这些缺失的链接。有很多这方面的工作用不同的方式尝试发现新的或缺失的信息,并计算出推断这些信息的置信度。
Cohen, Jiang等人使用马尔可夫逻辑网来发现提取的事实之间的关系[1]。它维护了一个基于一阶逻辑的规则库来指定本体约束。这些约束将用于管理可以被推断出的可能关系。然而,对于马尔可夫逻辑网络中,我们称之为“谓词”的这种逻辑关系却只能为其变量取一个二值逻辑变量(布尔值)。这导致在推断事实的置信度方面会比较差。
于是这个问题也引发了概率软逻辑(PSL)的定义,它使用了Jiang等人和马尔可夫逻辑网的概念,定义了一个复杂的统计关系框架,它基于以前的事实对所有事实一起进行推导,发现新的/缺失的信息[2]。除此之外,PSL从概率的角度计算置信度,置信度值是[0,1]范围内的软数值,从而基于所提供的内容来表示PSL程序认为改事实为真实的程度。
一旦发现了新的/缺失的信息,并计算了他们的置信度,我们就可以建立一个具有高可信度事实的知识图谱。从这个图谱我们可以获取,除了提取的原始事实之外的那些无法显示获取的新信息。这就是我们如何利用知识库中的既有事实和基于可用观察结果得到的新事实知识来构建知识图谱的过程。
不过呢,如何根据人类认知来识别出错误的事实或三元组,在知识图谱社区中仍然是一个未知的开放问题。
4.总结
最后,让我们再总结一下构建知识图谱时发生的过程:
1)阶段1:从纯文本中提取事实
- 从非结构化数据源和半结构化数据源中获取数据。
- 处理原始数据以便提取信息,这涉及实体,关系和属性的提取。
- 如果数据已经结构化好,可直接用于与知识库进行知识融合。
2)阶段2:将提取的事实转化为三元组
- 执行本体匹配,将提取的实体和关系归类到对应的本体类型下。
- 存储为知识库中的三元组。
3)阶段3:构建知识图谱,补全缺失链接
- 应用统计关系学习方法从知识库构建知识图谱。
- 使用统计关系学习方法计算每个事实的置信度,以便确定这些事实的真实程度。
- 使用置信度识别缺失的链接,形成推断出新的关系链接。
最终,知识图谱可以用在信息检索,聊天机器人,推荐系统,知识管理系统等应用中,以有效地提供对用户查询的响应。
References
[1] Jiang, S., Lowd, D., & Dou, D. (2012, December). Learning to refine an automatically extracted knowledge base using markov logic. In Data Mining (ICDM), 2012 IEEE 12th International Conference on (pp. 912–917). IEEE. [2] Brocheler, M., Mihalkova, L., & Getoor, L. (2012). Probabilistic similarity logic. arXiv preprint arXiv:1203.3469. [3] 刘峤, 李杨, 段宏, 刘瑶, & 秦志光. (2016). 知识图谱构建技术综述. 计算机研究与发展, 53(3), 582–600. [4]CCKS2018知识图谱发展报告