文章编号:2096-1472(2021)-02-38-07
DOI:10.19644/jki.issn2096-1472.2021.02.008
软件工程    SOFTWARE ENGINEERING 第24卷第2期2021年2月
V ol.24  No.2Feb.  2021
基于知识图谱问答系统的技术实现
魏泽林1,2,张  帅1,2,王建超1,2
(1.大连东软信息学院,辽宁  大连  116023;
2.大连东软教育科技集团有限公司研究院,辽宁  大连  116023)
*******************;*********************;***********************
摘  要:知识图谱是实现对话机器人的一类重要工具。如何通过一套完整流程来构建基于知识图谱的问答系统是比较复杂的。因此,本文从构建基于知识图谱的问答系统的全流程角度总结了多个主题:知识图谱类型、知识图谱构建与存储、应用在知识图谱对话中的语言模型、图空间内的语义匹配及生成。进
一步,本文在各主题的垂直领域归纳了常用方法及模型,并分析了各子模块的目的和必要性。最后,本文通过总结出的必要模块及流程,给出了一种基于知识图谱的问答系统的基线模型快速构建方法。该方法借助了各模块的前沿算法且有效地保证了拓展性、准确性和时效性。
关键词:知识图谱;问答系统;对话机器人;语言模型;语义匹配中图分类号:TP183    文献标识码:A
Implementation of Question Answering based on Knowledge Graph
WEI Zelin 1,2, ZHANG Shuai 1,2, WANG Jianchao 1,2
( 1.Dalian Neusoft University of Information , Dalian 116023, China ;
2.Research Institute , Dalian Neusoft Education Technology Group Co . Limited , Dalian 116023, China )
*******************;*********************;***********************
Abstract: Knowledge graph is an important tool for realizing chatbots. The lifecycle of constructing a question answering system based on knowledge graph is a complex task. This paper summarizes a nu
mber of topics from the perspective of building a knowledge graph-based question answering system. The topics include knowledge graph types, knowledge graph construction and storage, language models used in knowledge graph dialogue, semantic matching and generation in graph space. Furthermore, this paper summarizes commonly used methods and models in vertical areas of topics, and analyzes the purpose and necessity of sub-modules. A method for quickly constructing a baseline model of a knowledge graph based question answering system will be presented. The proposed method relies on the cutting-edge algorithms and effectively guarantees scalability, accuracy and timeliness.
Keywords: knowledge graph; question answering system; chatbot; language model; semantic matching
1  引言(Introduction)
知识问答系统在二十世纪五六十年代时就已经出现。近年来对话系统不断发展,对话功能不断增多,对数据内容和数据结构也提出了更高的要求。在开放域问答对话中,由于涉及的数据量及不同领域间的特征差异较大,基于问答对匹配的检索式问答系统并不是最好的解决方法。而知识图谱的
发展则正为这部分需求提供了解决方案。知识图谱作为大规模信息的载体,是实现对话机器人中大规模
推理及问答的一类重要方法。知识图谱中的三元组数据能够为问答系统提供大量的事实数据以及实体间的复杂关系,因此,基于知识图谱的问答对话系统逐渐成为人们关注的重点。近年来,由于
知识图谱以及自然语言处理的快速发展,新型的知识图谱、
语言模型、图嵌入、图神经网络等大量技术被广泛应用于知识图谱问答系统的构建中,其中各类方法的目的、功能、效果不同。在整体过程中,如何构建知识图谱以及如何将知识图谱中的海量信息准确、高效地融入语言模型中是问答系统设计的要点。同时,知识图谱图结构的数据形式使得基于知识图谱的多跳问答、联想式对话、多轮对话也成为研究的热点。知识图谱问答系统整体框架如图1所示。
图1 知识图谱问答系统整体框架
Fig.1 The overall framework of knowledge mapping        question answering system
2  知识图谱的类型(Knowledge graph type)
2.1  知识图谱
知识图谱是对事实的一种结构化表示方法,由实体、关系和语义描述组成。知识图谱的数据结构以图形式存在,由实体(节点)和实体之间的关系(边)组成。本质上,它是一种表示实体间关系的语义网络,以诸如“实体-关系-实体”的三元组来表达,可以作为事实解释和推断的知识库。通常使用RDF(Resource Description Framework)模式来表达数据中的语义。
超图的概念源于图论,是图结构的一种补充和扩展。传统知识图谱的一大缺点是其“二元一阶谓词逻辑”的本质结构,较难处理超过两个实体的复杂关系,例如:“玛丽·居里和皮埃尔·居里共同获得了1903年的诺贝尔物理学奖”中,“玛丽·居里”和“皮埃尔·居里”作为两个实体在知识图谱里无法通过一个边指向“诺贝尔物理学奖”实体,这种连接超过两个实体的边称为超边。为处理此类多元组复杂关系,传统的知识图谱需要人为设计大量的规则,使其满足三元组的统一格式。由于此类复杂关系在客观世界的语义系统中是普遍存在的,当知识图谱的数据规模较大时,难以保证人工规则的有效性和完备性。超图的引入补充了这一空白,通过构建超边可以表示此类多对一或一对多的复杂关系。
2.2  事理图谱
事理图谱(Event Evolutionary Graph,EEG)中的事件用抽象、泛化、语义完备的谓词短语来表示,其中含有事件触发词,以及其他必需的成分来保持该事件的语义完备性。事理图谱也可以看作知识图谱的一种形式,其边的含义为事件间的关联性。
2.3  认知图谱
认知图谱[1]在2019年被提出,可以将其理解为在构建知识图谱的过程中,保留较为原始的文本信息,能够为后续的自然语言理解和推理提供实体间关系抽象化的认知过程。由于知识图谱的格式固定,即便使用超图对知识图谱进行优化,还是无法解释客观世界的多种关系,而保留更多文本信息的认知图谱能够进一步加大图谱中存储的信息量。然而,实体关系的抽象度与信息熵相互制约,认知图谱在构建过程中对实体间关系的抽象程度较传统知识图谱低,所以在利用认知图谱构建问答系统的过程中,需要语义模型承担更大的理解与推理压力。
2.4  开源知识图谱
当前的大规模开源知识图谱通常是以百科知识数据为基
础进行构建的。在实际使用中,常见的英文开源知识图谱包括Wikidata、Freebase、DBpedia及YAGO,
它们包含大量的结构化与半结构化数据,并且具有较高的领域覆盖面。中文开源知识图谱包括CN-DBpedia、思知知识图谱等,其中CN-DBpedia是由复旦大学研发维护的大规模通用领域知识图谱;思知是一个中文开放项目,其中的知识图谱拥有超过1.4亿条RDF数据。
3  知识图谱构建与存储(K n o w l e d g e  g r a p h
construction and storage)
3.1  命名实体识别
命名实体识别(Named Entity Recognition,NER)是在文本中查和分类命名实体的过程。命名实体的内容较为广泛,在一般领域中包括组织、人物名称和位置名称等,在各垂直领域如医学领域中,包括基因、蛋白质、药物和疾病名称等。基于规则的NER传统方法包括:LaSIE-II、NetOwl、Facile、SAR、FASTUS和LTG。
机器学习方法一般分为非监督学习方法与监督学习方法,其中非监督学习方法通常指基于文本相似度的聚类算法。
由于深度学习的快速发展,通过深度学习进行NER的方法在一定程度上取代了传统方法。其方法一般分为三个部分,如图2所示。
图2 NER过程方法
Fig.2 The process and method of NER
(1)输入的分布式表示,一般包括预训练的词编码、词性标签等,可以分为针对词组编码、针对字符编码以及混合编码
等方式,常用方法包括Word2vec、Glove。其中,Bi-LSTM-
第24卷第2期                                                                                                          39魏泽林等:基于知识图谱问答系统的技术实现
40                                                    软件工程                                              2021年2月
CNN[2]、BERT[3]模型是目前最常见、效果最好的方法。
(2)文本编码,通常使用CNN、RNN、Transformer等。
(3)标签解码,通常使用Softmax、CRF、RNN等。目前
来看,在NER众多方法中,BiLSTM+CRF[4]是使用深度学习
的NER中最常见的架构。
3.2  关系抽取
关系抽取(Relation Extraction,RE)的主要目的是从文
本中识别实体并抽取实体之间的语义关系。
例如:爱因斯坦创立了相对论<;爱因斯坦,创立,相
对论>,从而将非结构化文本抽取成可以理解的结构化知
识。早期实现这一过程的方法多为有监督学习,可以视为
分类问题。为了降低标注数据的成本,远程监督(Distant
Supervision)方法被提出,其主要基于以下假设:如果在知识
库中两个实体存在某种关系,则包含该两个实体的非结构化
句子均能表示出这种关系。Riedel等人在原方法的基础上增
强了远程监督的假设[5]。随后斯坦福大学的团队通过引入多实
例、多标签学习来缓解远程监督的噪音问题[6]。
从2013年开始,神经网络模型开始应用在关系抽取上。
Zeng等人提出了基于卷积深度神经网络的关系分类模型[7]。
之后的诸多研究都开始侧重神经网络方法,BRCNN模型[8]使
用了双向递归卷积神经网络模型,是一个基于最短依赖路径
(SDP)的深度学习关系分类模型,模型分为两个RCNN,一
个前向(SDP为输入),一个后向(反向的SDP为输入)。Multi-
Attention CNN[9]模型将Attention机制加入神经网络中,对反
映实体关系更重要的词语给予更大的权重,辅以改进后的目
标函数,从而提升关系提取的效果。BiLSTM+ATT模型[10]运
用双向LSTM加Attention自动提取包含整个句子语义信息的
关键词汇或者字符。ResCNN-9[11]模型探索了更深的CNN模
型对远程监督模型的影响,并且设计了基于残差网络的深层
CNN模型。实验结果表明,较深的CNN模型比传统方法中只
使用一层卷积的简单CNN模型具有较大的提升。文献[12]的方
法对少样本的情况做出了一定的优化。
常见的关系抽取方法如表1所示。
表1 常见的关系抽取方法
Tab.1 Common methods of relation extraction
方法提出年份特点
Distant Supervision2009远程监督
CDNN[7]2014CNN模型
BRCNN[8]2016双向递归CNN模型
Multi-Attention CNN[9]2016将Attention机制加入神经网络中
BiLSTM+ATT[10]2016双向LSTM加Attention
ResCNN-9[11]2017残差网络的深层CNN模型
Hybrid Attention-Based Prototypical Networks[12]2019针对少样本的Attention网络
3.3  知识图谱优化
3.3.1  实体融合
实体融合还可以叫作实体消歧、实体对齐或实体链接,
它的目的是将实体提到的内容链接到知识图中相应的实体。
比如,“北大是中国非常好的大学之一”,这句话中的实体
“北大”应该链接到图结构中的实体“北京大学”。图嵌入
方法是解决这一问题最普遍的方法。图嵌入是指将图数据映
射为低维向量,从而将图中的节点和边转化为可以计算的向
量。通过对向量的相似度计算,可以计算出实体之间的相似
度和边之间的相似度,从而将相似度高的实体进行融合。
2013年提出的TransE模型是图嵌入模型中较为适用于知识图
谱对话系统中的算法。之后陆续有研究者基于该方法提出了
TransH、TransR和TransD等方法。近年来,应用于跨语言
的实体对齐图嵌入算法,以及应用于多个知识图谱实体融合
的算法[13]也被人们提出。
3.3.2  知识推理
知识推理是在已有的知识图谱数据基础上,进一步挖掘
拓展知识库的过程。其常用方法一般分为基于逻辑的推理和
基于图算法的推理[14]。
3.4  知识图谱的存储
在知识图谱的存储方式上,图结构没有了库表字段的概
念,而是以事实为单位进行存储,所以关系型数据库在存储
知识图谱上有着一定的弊端。通常知识图谱用(实体1,关系,
实体2)、(实体、属性,属性值)这样的三元组来表达事实,
可选择图数据库作为存储介质,例如开源Neo4j、Twitter的
FlockDB、sones的GraphDB。其中Neo4j是由Java实现的开源
NoSQL图数据库,是图数据库中较为流行的高性能数据库。
4  基于自然语言的检索方法(Semantic model based
on retrieval method)
基于自然语言算法的目的是将与用户对话时,用户说出
的句子进行关键信息的提取,然后在知识图谱数据库中对问
题进行检索。简单来说,是使用自然语言处理的方法对知识
图谱中的信息进行检索。
4.1  文本语义匹配
文本语义匹配是通过文本之间的相似度进行计算的,是
传统检索式问答系统中最重要的匹配环节,需要将问句与问
题库中的问题转为向量来计算相似度。在知识图谱问答系统
中,同样可以利用该方法检索出我们需要的答案。
与传统QA检索相区别的是,在知识图谱中检索通常首先
需要对问句进行命名实体识别。该过程的一般方法与上文所
提到的构建知识图谱中的方法是一致的,目的在于检索出问
句中所包含的主语,从而在知识图谱中定位节点。其意义类
似于大规模QA系统中的召回环节,召回一般是指大规模QA
中为了加速问题回答,在语义匹配前进行粗检索的过程。
在基于知识图谱的问答系统中,在确定了知识图谱节点后,将节点与相应的边组成问题组后,即可以将问题转为QA 系统中的检索问题。使用语义匹配做问句与问题组的匹配,在开放领域知识图谱中,这种基于语义匹配的问答检索方式是较为适用的方法。文本语义匹配的常见方法如图3所示。实现该过程的传统方法包括词编码和加权方法两个步骤,对于编码方式来说,传统One-hot编码无法精准地衡量文本
中的语义相似度,很难解决同义词等隐含在文中的信息特征。随着Word2vec、Glove等模型的出现,基于词向量将单词或短语转化为特征向量后再进行计算的方法逐渐受到重视,这类方法能够捕捉词语之间的相似度。词编码后再通过TF-IDF 等方法可以得到句编码。但这种基于词编码的方法通常忽略了词语顺序,还是存在一定的问题。于是直接对句子进行句编码的方式陆续被提出,如TextCNN、Doc2vec、Skip-Thought。其中基于LSTM的孪生网络模型InferSent以及基于此加入Attention机制的Universal Sentence Encoder是效果非常好的句向量生成模型。近两年来随着自然语言处理中的热点模型BERT被提出后,Reimers等人通过对模型使用孪生网络提出了Sentence-BERT [15]模型,极大优化了BERT模型处理语义匹配的速度。该方法成为近年来文本语义匹配任务中效果最为优秀的模型之一。针对该模型的优化方法也成为热点的研究模块。
这里我们注意到,由于预训练模型的流行,一些研究也在使用知识图谱进行预训练,而在知识图谱对话中,直接使用数据库的知识图谱进行预训练可以更好地适配基于知识图谱的问答系统。K-BERT [16]模型较早地提出了将知识图谱中的边关系引入预训练模型,其主要通过修改Transformer中的Attention机制,通过特殊的mask方法将知识图谱中的相关边考虑到编码过程中,进而增强预训练模型的效果。
图3 文本语义匹配常见方法
Fig.3 Common methods of text semantic matching
4.2  意图识别
意图识别一般指对语句中的意图进行分类,在知识图谱问答系统中同样是在命名实体识别后对边进行检索的方法,它是通过文本分类来完成的。通常情况下,意图识别方法在
垂直领域知识图谱构建的对话系统中有较好的效果,原因在于垂直领域知识图谱中边的类型有限,通过文本分类可以将问题的意图对应到知识图谱的边,从而对问题进行回答。例如在医药知识图谱中,边的类型为药品的适用症、药品的用量等固定的几种,这种情况下通过意图识别模型可以了解到用户希望问的是药的用量还是药品的适用症。在具体问答系统构建的过程中,在通过实体识别定位到问题的主体后,再使用意图识别定位到边,边指向的节点就是问题的答案。在一些情况下意图识别过程可以由文本语义匹配代替,也可以作为优化方法优化意图识别结果。意图识别现阶段通常由神经网络模型完成,例如较为经典的方法TextCNN使用CNN方法来进行句子分类[17]。文献[18]引入Attention机制对该方法进行了改进。现阶段效果较为优秀的算法有FastText、BERT、ERNIE。
4.3  语义优化方法
4.3.1  指代消解
指代消解在对话系统中是指当用户的问题中缺少实体或意图时,通过对话的上下文,对问题缺失的部分
进行补充的过程,是构建多轮对话中较为常见的方法。传统方法通常使用分词、词性标注、实体识别、意图识别等对问句中缺失的实体、意图或使用代词替换的实体和意图进行识别,然后通过上下文信息中的内容进行指代消解,或通过多轮问答进行补充。2017年Kenton等人提出的端到端的指代消解模型[19]很好地解决了指代消解这一问题,但该方法是针对长文本提出的方法,而在知识图谱问答机制中,通常文本长度较短,所以需要通过存储之前的对话进行指代消解,或者对模糊部分再次询问后应用。4.3.2  长难句压缩
长难句压缩可以理解为文本摘要或句子压缩,目的是将句子中无意义的口水词成分或语义倒装等进行信息提取,去除用户句子中的噪声。知识图谱问答系统中,该模块可以作为优化输入信息的方法被引入。主流方法有两种,一种是抽取式,如TextRank;另一种用神经网络做生成式摘要,而后使用RNN、CNN单元处理,再引入Attention、Self-Attention等机制[20],使得生成摘要这一领域的效果提升得非常优秀。
4.4  检索优化方法
当知识图谱中包含的实体以及边的数量较大时,在实际检索中优化检索速度是影响最终效果的重要环节。Elasticsearch、MatchPyramid、MatchZoo等框架都是能够优化文本匹配的方法,其中Elasticsearch是目前比较流行的全文
检索框架,它使用倒排索引算法,能够极大地提高文本检索
第24卷第2期                                                                                                          41魏泽林等:基于知识图谱问答系统的技术实现
效率。虽然Neo4j数据库中自带了全文检索功能,但在实际使用中,Elasticsearch+Neo4j联合的方式是更流行的方法,并可以在实际应用中覆盖大多数场景。在实际测试中,3,000 万左右的实体数量能够在200 ms内实现全文检索。
5  基于图空间的检索方法(Graph model based on
retrieval method)
利用图嵌入算法能够将语义图谱、领域知识图谱及常识知识图谱中的实体和关系映射至不同的图空间中,进一步补充语义空间中难以表征的自然语言信息。在此基础上,基于图空间的检索方法在一定程度上结合图空间和语义空间的优势,通过图模型分担语义模型在自然语言处理上的压力,充当对话系统的知识库,为模型提供海量的结构化信息。除此之外,目前效果较好的BERT和GPT等预训练模型均为端到端设计,通过大量的模型结构参数来隐式存储客观世界的结构化知识信息,难以通过一种显式方法将人类能够理解的结构化知识引入模型当中,而知识图谱为人类能够理解的显式结构知识和黑盒模型的隐式训练过程提供了互通的桥梁。
5.1  图嵌入方法
图嵌入(Graph Embedding,也叫Network Embedding)是一种将图数据(通常为高维稀疏稠密的矩阵)映射为低维稠密向量的过程,也就是将图结构转化为可以计算的向量。对话系统中常用的Trans系列的图嵌入方法总体是将三元组的头实体-关系-尾实体(如:中国-首都-北京),转换为向量(h-r-t),使得t=f(h,r)。
5.1.1  基于平移变换的图嵌入方法
基于平移变换的图嵌入方法如表2所示。
表2 基于平移变换的图嵌入方法
Tab.2 Graph embedding method based on translating 方法提出年份特点
TransE[21]2013首次将语义平移特征引入图表示学习中,弥补了传统方法训练复杂、不易拓展的缺点
TransH[22]2014将图表示学习映射至不同超平面以解决TransE难以对一对多、多对一、多对多关系建模的问题
TransD[23]2015模型只涉及vector的相乘,因此计算复杂度较小,适用于规模很大的知识图谱
百科问答
TransA[24]2015更换损失度量函数,模型优化
TransG[25]2015对关系存在的多语义问题进行优化,相当于对关系进行了细化,就是到关系的潜在隐形含义
5.1.2  基于神经网络的图嵌入方法
图卷积神经网络是通过针对图结构特殊设计的卷积核来实现的,可以理解成通过Laplacian算子来实现图
中节点间的特征能量传递,进而获得节点的Embedding。
相比于传统图算法和基于随机游走的图嵌入方法,图卷积神经网络能够同时考虑图结构信息和节点特征信息。将节点特征信息设置为节点的语义信息时,图卷积神经网络能够实现图结构信息与语义信息的有效结合。
基于神经网络的图嵌入方法如表3所示。
表3 基于神经网络的图嵌入方法
Tab.3 Graph embedding method based on Neural Network 方法提出年份特点
GCN[26]2017设计Laplacian算子作为卷积核对节点的特征进行
聚合,以半监督的方式融合了节点特征信息和图
结构信息
GraphSAGE[27]2017不以节点的表示学习为目标,而选择聚合函数作
为训练目标,缓解了GCN transductive learning
的弊端,适合实际落地应用
GAT[28]2018将Attention机制引入GCN中,利用multi-head机
制对节点的特征进行更新
5.2  语义空间与图空间的映射
KEQA[29]是较早提出通过图空间检索来代替实体和关系检索的框架,将实体与边通过图嵌入转换为图空间向量,再通过BiLSTM+Attention的网络模型,将语义向量与头实体和边关系进行映射,从而使语义检索通过图空间的计算来完成,达到了较好的效果,如图4所示。
基于图算法的检索方法,目的是将整体模型全部或部分放在图中计算,通过新型的知识感知对话生成模型(TransDG)进行问句的句向量生成以及知识匹配。
图4 KEQA:语义空间与图空间的映射[29]
Fig.4 KEQA: Semantic space and graph space mapping 5.3  自然语言生成
通常自然语言生成涵盖了许多内容,包括摘要生成、简化、翻译、更正等,在这一部分里我们的自然语
言生成特指通过数据生成文本的过程。在基于知识图谱的问答系统的实现中,自然语言生成作为流程的最后一环,其本质是将知识图谱的子图转化为自然语言。
CCM[30]提出了一种基于图注意力机制的常识域对话生成方法,如图5所示。在自然语言生成模块,通过将语义空间的词向量与基于图注意力机制得到的知识表示向量进行拼接,并作为Embedding输入GRU构造的解码器中,以实现知识信
息融入对话生成的目的。
42                                                    软件工程                                              2021年2月