什么是KBQA
-
首先弄明白什么是知识库
近年来,我们目睹了知识库的发展,越来越多的大规模知识库涌现出来,如Google Knowledge graph,Yago和Freebase等。这些知识库具有体量大,质量高的特点。
image.png
一个知识库包含了大量的结构化数据。下图给出了一个关于Obama的知识图谱示例。知识库中的每一个三元组代表一个知识或某个事实。 例如,一个三元组(d,人口,390k)表示檀香山的人口为390k。
image.png
- 通过建立虚节点来表示事物之间的联系
KBQA指的是以知识库作为答案来源的问答系统。
那么它是如何工作的呢?关键在于将自然语言问题转换为知识库上的结构化查询。例如,要回答“有多少人住在檀香山?”这个问题,我们需要将其转移到SPARQL或者SQL查询。 这里的关键问题是属性推断。
image.png
如何解决属性推断的难题
第一个挑战是问题表示。对于任意一个QA系统,我们需要一个具有代表性的问题表示来帮助识别具有相同语义的问题,同时区分不同意图的问题。
第二个挑战是语义匹配,如何将问题表示映射到知识库中的结构化查询?
前人解决该问题的办法
image.png- rule based,
- keyword based,
- synonym based.
摘要
本文在开放域知识库基础上构建 QA 系统。针对目前 QA 系统常用的规则只能理解规则内固定问题模式,而基于关键字或基于同义词的方法不能完全理解问题,提出一种基于亿级知识库和百万级 QA 语料库的模板。结合问题中实体,知识库谓词,问题的表达形式等,从而得到问题的语义,并与知识库中RDF三元组映射。
解决思路
利用问题模板 – 谓词 predicate 的对应关系。问题 → 提取实体 → 问题抽象成模板 → 模板与谓词的对应关系 → 答案。
本质上是解决问题理解 question answer 这个问题。 一般的问题理解解决过程有:
-
关键词提取, → 本文中是实体提取,这里主要是为了抽象成模板 conceptualization question keywords extraction (or question labeling), identifying the focus of the question.
-
问题分类, → 本文使用的是基于 KB 的实体分类的抽象成模板的方法 question classification, determining the category or semantic type of the question.
-
问题扩展→ question extension, generating similar questions to extract all possible answers.
第二章
给出整体的解决方案
image.png
第三章
对于二元事实问题,用概率推理的方法找到答案
image.png
第四章
核心步骤,找到模板到谓词的概率分布,采用极大似然估计和EM算法。
第五章
主要是对复杂问题的解析
在面对复杂问题时,我们采用了分治算法。首先,系统把问题分解为一系列的二元事实型问题,然后系统依次回答每个问题。每个问题的答案都是一个概率,我们通过动态规划算法找到最优分解。
image.png
第六章
复杂问题的组合回答