中国人工智能学会通讯——面向知识图谱的自然语言问答系统 2 语义解析式的知识库问答

简介:

2 语义解析式的知识库问答

基于语义解析(semantic parsing)的方法是指先利用语义解析理解自然语言问题的语义,将问题转化为具备相同语义的逻辑形式,再通过查询引擎对生成的逻辑形式进行查询处理,得到最终结果。上述过程分别对应语义解析和查询执行两个主要阶段。这类方法的优点在于如果解析成功,则能完整获得提问者的意图,从而精确地返回查询结果。与此同时,将生成的逻辑形式展示给用户可以让用户检验系统是否理解正确,哪一步解析发生了错误,从而利用用户反馈进一步改善系统的精度。因此这种方法是一种“可解释”的面向知识图谱的自然语言问答方法。语义解析式的问答系统所生成的逻辑形式一般与对应数据库的查询语言相同,例如RDF知识库对应的SPARQL语言;或者是通用的逻辑表达式,例如Lambda表达式;也有系统使用其他的逻辑形式,例如查询图等。

作为基于语义解析的问答系统中最重要的阶段,语义解析(问题理解)一般可以分解为三个任务,分别是短语检测、资源映射和语义组合。

短语检测

短语检测的目标是将问题中蕴含有效信息的短语抽取出来,这些短语被称作表征短语。蕴含有效信息是指能够对应到知识库中的特定元素(实体,概念,关系)。例如,图3中的短语film对应知识库中的概念(类型)dbo:Film,短语directed by对应知识库中的谓词(关系)dbo:director。

image

短语检测的难点在于冲突处理。例如在句子“The lyrics of April in Paris”中,短语“April in Paris”对应到知识库中的一首歌曲,短语“Paris”对应知识库中的一座城市,二者之中只能有一个被选作表征短语。较常被使用的应对策略是“最长覆盖原则”[16],即优先选择那些更长的短语而抛弃有冲突的较短短语。文献[17]提出了一种将冲突问题转化为带权极大团问题,再利用经典算法解决的思路。

资源映射

给定自然语言问题中的若干表征短语,资源映射的目标是将各短语映射到知识库中的特定元素。根据映射元素的不同种类,资源映射可以被分为实体链接(entity linking)和关系识别两个主要任务(relation extraction)。这两个任务在自然语言处理(NLP)领域被广泛研究。

实体链接的难点在于如何消除歧义。知识库中的实体在自然语言中可能有多种表述形式,自然语言短语也可能指代不同的实体。例如“Obama”既可能是指“Barack_Obama”,也可能指“Michelle_Obama”。如何选择合适的实体需要考虑到上下文环境、字符及语义层次的相似度,以及实体本身的流行度等相关因素。

关系识别的任务目标是将自然语言关系短语映射到知识库中的谓词。解决方案主要包括依赖于预定义的模板进行匹配、根据构建好的短语关系复述词典进行识别[8]、通过神经网络模型进行相似度计算[9]等。关系识别的难点在于隐式关系和复杂关系,例如“Chinese actor”隐藏着国籍的关系,“grandson”对应知识库中一条路径而不是一个简单谓词。文献[5]提出了一种基于规则的桥接(bridging)方法来补充上述隐式谓词的情况。

语义组合

将自然语言问题中的表征短语抽取出来,并将它们与知识库中的实体、谓词等元素对应起来。语义解析的最后一步就是将这些元素组合成对应的逻辑形式。对于简单的问题,一般只包含单一实体和关系,只需要将其相连即可。对于复杂的问题,可能包含多个实体和关系(例如图3所示),则需要考虑各实体和关系之间如何配对组合。

文献[6-7]等工作通过模板匹配的方式来进行逻辑形式的构建。文献[6]预先定义了若干Lambda表达式的模板,先根据模板生成问题N的若干候选Lambda表达式,然后对于每个表达式生成若干复述语句,再通过语言复述模型(Paraphrase Model)来比较这些复述语句和N的相似度,从而选择最合适的表达式。文献[7]针对特定数据库Freebase和评测集WebQuestions设计了三个查询模板,覆盖了其中将近95%的问题。由问题N匹配到查询模板时,获取N中每个实体在知识库中两步内所有符合模板限制的查询图作为候选,再经过特征提取和排序选择其中最好的作为最终查询。总的来说,基于模板的结构化查询生成的方法,被广泛应用到工业界的知识库问答系统中,例如前面提到的被Amazon收购的EVI系统,就是通过人工定义模板的方法[12]来生成面向知识库的结构化查询。

文献[9]提出了一种查询图生成方法STAGG(见图4),基于识别出的实体和关系定义了若干操作和状态。查询图最初由只包含一个实体的状态开始,通过不同操作进行扩展(状态转移)。对于每一种状态由状态评估模型给出置信度,每次操作优先作用于当前置信度最高的状态。当所有候选都扩展完毕后,选取全局得分最高的状态作为最终查询图。

image

当问题被转化为结构化的逻辑形式时,只需要使用相应的数据查询引擎执行查询就可以了。对于没有直接生成SPARQL查询的RDF问答系统,利用一些简单规则将生成的逻辑形式进一步转化成SPARQL语言,再利用现有的SPARQL查询引擎(Virtuoso[18]、GStore[19] 1等)进行查询,得到最终结果。

相关文章
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
ChatGPT的应用与发展趋势:解析人工智能的新风口
ChatGPT的应用与发展趋势:解析人工智能的新风口
35 0
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
springboot基于人工智能和自然语言理解技术的医院智能导医系统源码
智能导诊系统可为患者提供线上挂号智能辅助服务,患者根据提示手动输入自己的基本症状,通过智能对话方式,该系统会依据大数据一步步帮助患者“诊断”,并最终推荐就医的科室和相关专家。患者可自主选择,实现“一键挂号”。这一模式将精确的导诊服务前置,从源头上让医疗服务更高效。
368 2
|
3月前
|
SQL 存储 人工智能
探索语义解析技术和AI人工智能大模型的关系
探索语义解析技术和AI人工智能大模型的关系
74 1
|
3月前
|
机器学习/深度学习 存储 人工智能
人工智能自然语言对话系统
人工智能自然语言对话系统
43 1
|
25天前
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能技术专题】「入门到精通系列教程」零基础带你进军人工智能领域的全流程技术体系和实战指南(NLP自然语言处理概念介绍)
【人工智能技术专题】「入门到精通系列教程」零基础带你进军人工智能领域的全流程技术体系和实战指南(NLP自然语言处理概念介绍)
42 0
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能(AI)之计算机视觉和自然语言训练文件
人工智能(AI)之计算机视觉和自然语言训练文件
45 0
|
2月前
|
机器学习/深度学习 人工智能 PyTorch
Python 与人工智能的完美结合——解析 PyTorch 框架
【2月更文挑战第4天】本文将探讨 Python 在人工智能领域中的应用,以及介绍 PyTorch 框架。PyTorch 是一个基于 Python 的开源机器学习库,其强大的自动微分功能和易于使用的接口使其成为深度学习领域的热门选择。本文将从 PyTorch 的发展历程、工作原理以及示例代码等方面进行详细分析和解释。
|
消息中间件 JavaScript 前端开发
前端基础知识库-事件循环
众所周知JavaScript是个单线程的语言,但是为了能更快更好的处理程序,JavaScript有一个基于事件循环的并发模型,事件循环负责执行代码、收集和处理事件以及执行队列中的子任务。这个模型也是JavaScript异于其他语言(c java等)处理并发任务之处。本篇也是我在工作学习中自己对JavaScript事件循环的理解,下面我们一起来了解下JavaScript中事件循环是如何执行的。
|
存储 安全 前端开发
前端知识库-前端安全系列二(同源策略)
在我们日常开发中在与后台联调的时候是不是会经常遇到CORS错误,作为一名前端开发大家应该都知道这个事浏览器同源策略导致的,如何解决这个问题相信大家都有自己团队的方法。如有不了解的可以看下我之前总结过文章跨域解决方案,本文主要来分析下跨域的原因,以及跨域涉及到的API。
|
存储 Web App开发 JavaScript
前端知识库-前端安全系列一(攻防)
最近重新整理了下自己的前端相关知识,在前端安全这个领域由于最近两年做的事内部项目,对此没有太多的实际应用,借此机会重新去了解下,俗话说温故而知新,从故有的知识中总结获取新的知识才是我们进步的基础。

热门文章

最新文章

推荐镜像

更多