知识表示是知识获取与应用的基础,贯穿了小米知识图谱的构建与应用。本文将结合小米知识图谱的构建及小爱问答场景,介绍融合文本和知识图谱的知识表示学习方法,以及知识表示在知识图谱补全、实体链接、实体推荐等任务的落地。主要围绕以下 3 点展开:
小米知识图谱团队,旨在硏究知识图谱在开放领域和行业领域的构建和应用技术,把知识图谱推广到相关的业务场景上。目前团队已经构建了大规模、高质量的知识图谱,提供了实体检索、实体链接、概念图谱等服务,并且服务于小爱同学、小米网、小米信息流等业务方。
这是一个知识图谱为小爱赋能的例子。当用户询问巩俐籍贯的时候,我们从库中给出相应的答案,与巩俐相关的实体信息。下面简单介绍一下处理流程。
当用户询问一个问题(query)时,比如说问题是“武汉大学周边有什么好吃的?”,它的解答流程就是:
① 首先语言识别出这句话的文本内容;
② 然后通过分析发现用户的意图是想询问“美食”相关的事物;
③ 接着通过实体匹配去进行核心实体的识别,实体的歧义性消除以及属性的归一等处理,确定用户询问的是全国重点大学“武汉大学”这个实体的“周边美食”这个属性;
④ 据此从库中查询相应的结果,并且作为输出;
⑤ 另外我们还会针对该实体做实体的推荐,以此实现相似问题的推荐;
知识表示学习是指基于分布式的表示思想,将实体或者是关系的语义信息映射到低维、稠密、实值的向量空间中,使得语义相似的两个对象之间的距离也很相近。
最常见的表示学习方法是融合事实信息的方法,比如基于翻译、张量分解、神经网络和图神经网络的各种模型。但是这些模型并不善于处理大规模知识图谱中存在实体与关系长尾分布的问题。在图谱中,长尾分布体现为很多实体数量极少甚至没有关系事实,这就导致数据存在很严重的稀疏性。
对于这些长尾的实体和关系,在没有或者很少关系的情况下,仅基于传统的事实三元组(头部,关系,尾部)进行学习,是没有办法得到的。对此大佬们尝试了各种五花八门的解决办法,最简单直接的就是:
① 利用知识库中其他的信息,比如说文本描述信息、信息实体类型、关键路径、逻辑规则等,还包括实体的属性、时序信息、图结构等;
② 利用知识库外的海量信息,比如说互联网等,包含大量知识库实体和关系的有关的信息。
融合文本描述的优势有哪些?
文本描述如何构成呢?我们的处理方式是将实体的类型、文本描述和重要的三元组按照一定的规则进行拼接,构成一段文本,作为实体的描述文本,这段文本比简单的文本描述包含更多的信息。
下面将会介绍两种经典的融合文本和知识图谱的知识表示学习方法,这两种方法都可以将实体向量、关系向量和词向量放到同一个语义空间下。为什么要把文本以及词向量放到一个空间中?因为如果我们遇到了需要同时处理文本和实体的任务,实体和文本中的词做内积等向量运算才会有意义,依靠这些运算方法我们就能比较实体和文本之间的词的关系。
这一篇文章描述了比较经典的文本与知识图谱对齐的模型 Jointly(联合模型),作者先后发表了两篇论文来优化该方法。文章研究的内容是融合文本信息到知识图谱中,实现知识图谱中的实体和实体描述文本联合嵌入表示。对齐模型的关键在于将实体向量、关系向量和词向量表示在同一个语义空间下。要求实体的表示向量不仅满足知识图谱的结构化约束,同时也要被文本描述中的词向量进行约束。模型一共分为三个部分:
第二篇论文也根据类似的原理,将基于平移的嵌入方法从特定的三元组嵌入扩展到了文本感知模型,提出了名为 DKRL 的模型。该模型的特点是:
后续任务需要通过预训练得到词向量,实体向量,并且保证两者之间需要能够计算相似度,同时也要保证实体向量和实体向量之间可以计算相似度。上文介绍的两个模型均可以满足该需求。右上的表格展示了几个不同的模型在链接预测任务上的效果,联合模型,即第一篇论文中的模型展现了较好的效果,于是我们基于该模型对实体和词进行了训练,得到了词向量、关系向量以及实体向量。该模型的效果具体体现在:
这些特性对完成后续的任务有很大的帮助。
实体链接任务目标是把文本中的实体指称项,即实体名称,链接到知识库中对应的实体上。
举一个例子来帮助大家理解实体链接,比如问题“王者荣耀中的李白有哪些台词?”,为了解答这个问题我们需要:
① 识别句子中的核心实体“李白”;
② 从库中检索“李白”所有的候选实体;
③ 实体链接,从众多的候选实体中找到正确的实体,与句子中的“李白”进行关联;
实体链接的难点主要有两个方面:
左侧图中展示了实体链接的处理流程,这里详细介绍一下实体消歧部分。
实体消歧包括两个模块,第一个部分是粗排,第二个部分是精排。
关于粗排
为什么要做粗排处理?
在做候选实体生成时,我们希望从库中获取尽可能多的相关实体,确保没有遗漏正确实体。但这样做会导致消歧这一步骤被引入了太多的噪声,造成消歧效率的下降。所以需要粗排模型来降低候选实体的个数。经过实验,粗排后,消歧准确率提升了 3%,预测的速度提升了 50%,而召回率仅仅下降了 0.4%。
举个例子,比如“王者荣耀中的李白有哪些台词?”这个问题,在我们的库中“王者荣耀”的候选实体有 71 个,“李白”的候选实体有 59 个。在粗排时,我们会为每一个候选实体进行打分,按照相关度从大到小进行排列,选择每一个 mention 所对应的最相似的 n 个实体(Top n),作为精排的输入。
如何实现粗排?
粗排模型,要求高召回、高性能。我们采用了上一节中融合多元信息知识表示学习方法所训练得到的实体向量和词向量,因为他们处在同一个向量空间中,我们可以对其进行向量计算。定义了三个特征,分别是 Context 和 Coherence 以及 LinkCount:
利用一个多层感知机对这三个特征进行融合,最终得到每一个候选实体的粗排分数。排列并选择每一个 mention 所对应的最相似的 Top n 个实体,作为精排的输入。
关于精排
在粗排之后,每一个 mention 的候选实体个数被大大降低,此时我们会对这些实体进行精排处理。精排模型中,我们利用 Bert 构建一个句子对二分类模型,用来判断候选实体和问题中的 mention 相关度。具体流程如下:
① 该模型的输入是一个句子对,text_a 是标记了 mention 位置的文本,text_b 是候选实体的描述文本。句子对经过 Bert 编码之后取[CLS]向量,再经过全连接层,得到上下文特征;
② 合并粗排的三个特征进行全连接的融合训练;
③ 对候选实体进行二次排序;
④ 判断是否为未知实体;
⑤ 选择 Top 1 的实体作为 mention 链接的实体;
在模型训练时,我们对训练方法进行了一些优化。利用知识图谱中的关系三元组构建消歧的样本,关系三元组包括头实体、关系和尾实体,头实体和尾实体有多种表达方式(mention),利用这些不同的表达方式,我们可以去构建大量的正负样本,来帮助我们去学习 mention 和实体之间的语义特征关系。经过第一次的预训练,只需要再训练少量经过标注的线上数据,模型就可以达到较好的消歧效果。
实体推荐任务的目标是根据给定的实体推荐一系列相关的实体,这两张图展示了我们的实体推荐的应用场景。我们对实体推荐的工作暂时还处于起步的阶段,并没有考虑复杂的个性化推荐,目前只关注实体之间的相似度。
左图展示了实体链接如何应用于智能问答问题推荐,问题通过 SLU 处理之后会得到其意图和主实体,然后借助实体推荐得到相关的实体,相关实体被用来构建相关的问题,比如说”武汉大学周边好吃的?“,识别到其主实体为”武汉大学“、核心意图为”美食“,以此推荐实体相关的问题,比如说”华中科技大学周边有什么好吃的?“,”清华大学周边有什么好吃的?“,”武汉科技大学周边有什么好吃的?“。同时实现了推荐意图相关的问题,比如说”武汉大学周边有什么好玩的?“,”武汉大学周边有什么景点?“,”武汉大学周边有什么酒店?“等等。
右图展示了实体推荐在图谱自动化构建平台上的应用,当用户搜索一个实体的时候,平台会为其推荐相关的实体。
实体推荐的难点在于“冷启动问题”,即如何去寻找实体的相关实体。
我们发现百科页面关系三元组以及新闻中的共现实体,都可以作为相关实体进行推荐。于是我们对百科页面知识图谱中的关系三元组和经过实体链接处理的新闻中的实体进行抽取,以类别为标准进行筛分,作为实体推荐模型的正样本。而负样本可以从库中的其他实体中抽取。
实体推荐模型分为两个部分,表示模型和匹配模型:
在构建知识图谱时,需要从半结构化或者非结构化数据中抽取三元组,但这些三元组难免会存在信息缺失情况,比如左图中,小米代表人物中林斌、王翔等人,都缺失了超链接,撒贝宁配偶、父母、妹妹也都缺失了超链接,这就导致在构建知识图谱时,不能获取完整的关系三元组。
实体补全任务可以概括为:针对已知的头实体、关系和尾实体 mention 的情况下,关联库中的实体以补全三元组。我们的设计方案如下:
① 利用 Schema 去确定尾实体的类别;
② 通过尾实体的 mention 筛选得到尾实体的候选实体,构造三元组;
③ 通过三元组分类模型判断构造的三元组是否正确;
④ 经过对这些三元组的分数进行排序之后,选择 Top 1 且预测正确的三元组。
三元组的构建也考虑了描述实体的文本,我们再次利用了神通广大的 BERT 完成模型的构建,参考了 KG-BERT 这篇论文。
将已知的关系三元组如上图所示进行构造,text_a 是头实体的描述文本,text_b 是关系的文本名称,text_c 是尾实体的描述文本,这些输入经过 BERT 的编码之后,再经过一个全连接层,计算得到语义特征,并和另外一个结构化的特征进行融合,最终得到一个分数。这里的“结构化特征”由蓝色框中的方程进行表示,整个模型的 loss,可以用红色框中的方程表示。
举个例子,比如判断三元组{撒贝宁,配偶,李白}是否正确,“李白”的第一个候选实体是正确的,可以作为正样本,其他实体都是负样本,然后对模型进行训练,预测每一对自动构建的三元组的分数,按照从大到小的顺序进行排序,选择分数大于 0.5 且 Top 1 的三元组作为正确的三元组,补充到知识图谱当中。
本文简单介绍了知识表示学习在实体链接、实体推荐和知识补全中的应用;和 word2vec 一样,通过知识表示学习得到的实体向量可以应用到很多场景中;工业界实用最重要,很多场景下,对模型的复杂性很敏感,选择模型需要综合考量。知识表示学习的探索之路还有很长,同志们加油!!!
参考文献
1. Wang Z, Zhang J, Feng J, et al. Knowledge graph and text jointly embedding[C] //Proceedings of the 2014 conference on empirical methods in natural language processing (EMNLP). 2014: 1591-1601.
2. Zhong H, Zhang J, Wang Z, et al. Aligning knowledge and text embeddings by entity descriptions[C]//Proceedings of the 2015 Conference on Empirical Methods in Natural Language Processing. 2015: 267-272.
3. Xie R, Liu Z, Jia J, et al. Representation learning of knowledge graphs with entity descriptions[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2016, 30(1).
4. Xiao H, Huang M, Meng L, et al. SSP: semantic space projection for knowledge graph embedding with text descriptions[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2017, 31(1).
5. Reimers N, Gurevych I. Sentence-bert: Sentence embeddings using siamese bert-networks[J]. arXiv preprint arXiv:1908.10084, 2019.
6. Yao L, Mao C, Luo Y. KG-BERT: BERT for knowledge graph completion[J]. arXiv preprint arXiv:1909.03193, 2019.
7. 刘知远, 孙茂松, 林衍凯, 等. 知识表示学习研究进展[J]. 计算机研究与发展, 2016, 53(2): 247.
本文转载自:DataFunTalk(ID:dataFunTalk)
原文链接:小米在知识表示学习的探索与实践
领取专属 10元无门槛券
私享最新 技术干货