关于知识库问答KBQA - ricket-sjtu/bi028 GitHub Wiki

  • Q:什么是知识库问答?

  • A:知识库问答(knowledge base question answering, KB-QA)给定自然语言问题,对问题进行语义理解和解析,进而通过知识库查询、推理得到问题的答案的方法和技术。

  • Q:知识库问答有哪些分类?

  • A:从应用领域划分,有开放领域的知识问答(如百科知识问答)和特定领域的知识问答(如金融领域、医疗领域、宗教领域等)。

  • Q:KBQA和DBQA有什么区别?

  • A:KBQA是基于知识库的问答,而DBQA是基于文档库的问答。前者利用的是结构化的知识,而后者利用的是非结构化的文本。因此,KBQA更擅长回答what, when等事实性问题,而DBQA更适合回答why,how等解释性、阐述性问题。

  • Q:KBQA传统方法框架和经典系统结构包括问题解析、生成查询、答案检索和评分等,其中包括哪些子模块?涉及到哪些关键技术?

  • A:KBQA大致分为四个模块:问题分析(Question Analysis);短语映射(Phrase mapping);消岐(Disambiguation);查询构建(Query construction)

子模块 描述 技术手段
问题理解 使用所有可能的语言学特征,抽取所需要的信息 识别命名实体、词性标注、句法分析
短语映射 将短语与知识库中的资源,通过概率计算,进行映射和链接 语义相似性、字符串相似性(编辑距离、Jaccard距离、Fuzzy模糊查询)
消岐 解决短语映射中出现的歧义问题,用各种技术来无歧义地确定短语映射的知识库实体 本体资源的label与对应的自然语言短句计算字符串相似性,并进行排序;判断属性及其参数是否一致,排除不符合一致性的;图搜索、隐马尔科夫模型(HMM)、整数线性规划(ILP)、马尔科夫逻辑网络(MLN)、结构化感知器(Structured Perceptron)等数学模型,辅以人工反馈调整
查询构建 融合前三个模块生成的结果,得到最终的SPARQL查询语句 基于模板、基于问题分析中得到的信息、基于机器学习和基于语义信息构建查询SPARQL语句

语义解析(Semantic parsing)

什么是语义解析?

知识库Freebase中有大量的三元组(triples),并且这些三元组的实体与实体的关系(entity-entity relationship)都是形式化的语言,如(Luxun, PlaceOfBirth, Shaoxing)。

给定一个自然语言问题:“Where was Luxun born?”。我们面临的第一个挑战,就是如何建立问题到知识库的映射(Question-KB mapping)。语义解析的思路是通过语义分析,将自然语言问题转化为能够为知识库所“理解”的语义表示(也就是逻辑型式Logic Form),进而基于知识库中的知识,进行推理(Inference)和查询(Query),得到最终的答案。

那么什么是逻辑型式呢?