掌桥专利:专业的专利平台
掌桥专利
首页

问答推理方法及装置

文献发布时间:2023-06-19 16:11:11



技术领域

本发明涉及人工智能技术领域,尤其涉及一种问答推理方法及装置。

背景技术

问答任务是人工智能领域的重要任务之一,它的输入是用自然语言描述的问题,要求计算机给出输入的问题的答案。完成问答任务的过程中,需要理解输入的问题的语义信息,再根据理解的问题的语义信息收集到相关知识,最终给出输入的问题的答案。

在复杂推理场景下的问答任务,对输入的问题有一定要求,此时的问题往往涉及 到多个实体,根据多跳关系确定提问的实体,需要了解到提问的实体的属性值,还涉及到算 术、逻辑、比较等推理操作,例如“张三的妻子和球员李四的妻子谁更高

发明内容

本发明提供一种问答推理方法及装置,用以解决现有技术中推理引擎的推理效率不高的缺陷,实现答案的推理效率的提高。

本发明提供一种问答推理方法,包括:

确定推理目标问题的答案所需的至少一个算子;

针对所述至少一个算子中至少部分需要访问知识库的所述算子,基于所述知识库中预先构建的知识元素的倒排索引结构,访问所述知识库,以得到所述算子的执行结果;

基于所述至少一个算子的执行结果,得到所述答案。

根据本发明提供的一种问答推理方法,所述基于所述知识库中预先构建的知识元素的倒排索引结构,访问所述知识库,以得到所述算子的执行结果,包括:

当所述至少一个算子中执行顺序相邻的两个所述算子均需要访问所述知识库时,若顺序在前的所述算子用于返回所述知识库中所有目标知识元素,且顺序在后的所述算子用于从所有目标知识元素中筛选出部分目标知识元素,确定执行中间算子;所述中间算子用于返回所述部分目标知识元素;

在所述中间算子执行的过程中,基于所述知识库中预先构建的所述中间算子对应的知识元素的倒排索引结构,访问所述知识库,以得到所述中间算子的执行结果;

将所述中间算子的执行结果,作为所述执行顺序相邻的两个所述算子的执行结果。

根据本发明提供的一种问答推理方法,所述倒排索引结构是有序的。

根据本发明提供的一种问答推理方法,所述倒排索引结构包括目标哈希表,所述目标哈希表用于表征知识元素之间的映射关系;所述基于所述知识库中预先构建的知识元素的倒排索引结构,访问所述知识库,以得到所述算子的执行结果,包括:

在所述算子的执行过程中,基于所述算子的输入参数以及对应的所述目标哈希表,访问所述知识库中所述算子的输入参数对应的知识元素,以得到所述算子的执行结果。

根据本发明提供的一种问答推理方法,所述输入参数至少包括属性条件,所述算子用于返回所述知识库中满足所述属性条件的实体,所述算子对应的所述目标哈希表用于将属性映射到实体集合;

或者,所述输入参数至少包括指定实体和指定关系,所述算子用于找出与指定实体有指定关系的所有实体及对应的三元组,所述算子对应的所述目标哈希表用于将关系映射到关系的头实体;

或者,所述输入参数至少包括两个指定实体,所述算子用于返回两个指定实体的关系,所述算子对应的所述目标哈希表用于将一对存在关系的实体映射到关系在头实体的用于存储关系的线性表中的位置;

或者,所述输入参数至少包括两个指定实体,指定关系和指定修饰键,所述算子用于返回两个指定实体的指定关系的指定修饰键的修饰值,所述算子对应的所述目标哈希表用于将一对存在关系的实体映射到关系在头实体的用于存储关系的线性表中的位置;

或者,所述输入参数至少包括指定概念,所述算子用于找出属于指定概念的所有实体,所述算子对应的所述目标哈希表用于将概念映射到概念下的所有实体。

根据本发明提供的一种问答推理方法,所述知识库中还以线性表存储以下至少一项:概念的名称、实体的名称、概念与概念之间的关系、实体与概念之间的关系、每个实体的属性、每个实体的关系,所述知识库中还以哈希表存储以下至少一项:每个概念的名称在线性表中的位置、每个实体的名称在线性表中的位置、属性键与对应的属性值。

本发明还提供一种问答推理装置,包括:

算子确定模块,用于确定推理目标问题的答案所需的至少一个算子;

算子执行模块,用于针对所述至少一个算子中至少部分需要访问知识库的所述算子,基于所述知识库中预先构建的知识元素的倒排索引结构,访问所述知识库,以得到所述算子的执行结果;

答案获得模块,用于基于所述至少一个算子的执行结果,得到所述答案。

根据本发明提供的一种问答推理装置,所述算子执行模块,具体用于:

当所述至少一个算子中执行顺序相邻的两个所述算子均需要访问所述知识库时,若顺序在前的所述算子用于返回所述知识库中所有目标知识元素,且顺序在后的所述算子用于从所有目标知识元素中筛选出部分目标知识元素,确定执行中间算子;所述中间算子用于返回所述部分目标知识元素;

在所述中间算子执行的过程中,基于所述知识库中预先构建的所述中间算子对应的知识元素的倒排索引结构,访问所述知识库,以得到所述中间算子的执行结果;

将所述中间算子的执行结果,作为所述执行顺序相邻的两个所述算子的执行结果。

本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述问答推理方法。

本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述问答推理方法。

本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述问答推理方法。

本发明提供的问答推理方法,确定的推理目标问题的答案所需的至少一个算子,能够展示出推理目标问题的答案的过程,透明可解释,并且,针对至少部分需要访问知识库的算子,基于知识库中预先构建的知识元素的倒排索引结构,访问知识库,以得到算子的执行结果,进而能够提高搜索的效率,快速完成对知识库的访问,提高了算子的执行速度,进而提高了答案的推理效率。

附图说明

为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明提供的问答推理方法的流程示意图;

图2是本发明提供的问答推理装置的结构示意图;

图3是本发明提供的电子设备的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

问答任务是人工智能领域的重要任务之一,它的输入是用自然语言描述的问题,要求计算机给出输入的问题的答案。完成问答任务的过程中,需要理解输入的问题的语义信息,再根据理解的问题的语义信息收集到相关知识,最终给出输入的问题的答案。

在复杂推理场景下的问答任务,对输入的问题有一定要求,此时的问题往往涉及 到多个实体,根据多跳关系确定提问的实体,需要了解到提问的实体的属性值,还涉及到算 术、逻辑、比较等推理操作,例如“张三的妻子和球员李四的妻子谁更高

现有的推理引擎主要包括:面向SPARQL的Virtuoso,面向Cypher的Neo4j,以及面向 SQL 的关系数据库管理系统(Relational Database Management System ,RDMBS)。

其中,Virtuoso是一个图数据库,针对知识的存储特征,允许以资源描述框架(Resource Description Framework,RDF)格式对知识进行描述,基于此,Virtuoso可以执行SPARQL查询语句,以三元组约束来实现知识图谱上的多跳推理。但是,Virtuoso的执行过程并不能公开透明,计算的中间结果无法被检查,导致问题的答案的推理过程不具有良好的可解释性。另外,Virtuoso对修饰型知识的支持不甚友好。

Neo4j是另一种图数据库,也是以图数据结构组织知识库,并且可以支持Cypher查询语句。但是,Neo4j的执行过程同样不具有良好的可解释性,并且,Cypher语句的编写也对编程人员的要求极高。

RDMBS是一大类方法,这些方法要求知识库是以表格的方式存储的,并且支持SQL查询。但是,SQL查询在面向知识密集的任务时有很严重的局限性,很多问题的答案的推理都不能良好地支持。

为此,本发明提供一种问答推理方法,可以由推理引擎执行。下面进行详细介绍。

本实施例提供一种问答推理方法,如图1所示,至少包括如下步骤:

步骤101、确定推理目标问题的答案所需的至少一个算子。

其中,目标问题即待推理出答案的问题。

本实施例提供的方案可以应用于基于符号推理的推理引擎,可以在知识库上执行面向知识的编程语言(Knowledge oriented Programming Language,KoPL),从而完成目标问题的答案的推理。通过KoPL可以表达自然语言的问题的语义,并且把问题的答案的推理过程转化成算子。

本实施例中的知识库包括如下 7 种知识元素:

一、实体。实体是知识库中最基本的知识元素,它代表了现实世界中的某个无歧义的对象。

二、概念。概念是对一类实体的抽象概括,一组在某种意义下特征相同的实体的集合构成概念。

三、关系。关系存在于实体和实体之间、实体和概念之间、概念和概念之间。特别地,实体和概念之间的关系借助 instanceOf表示,概念和概念之间的关系借助subClassOf表示。

四、属性。实体具有属性,属性的信息具体包括属性键和属性值,表示这个实体的某一个方面的特征。本实施例支持的属性的类型可以包括字符串、数字、日期和年份等等。

五、关系型知识。将(实体,关系,实体)这样的三元组称为关系型知识,也称关系型事实。

六、属性型知识。将(实体,属性键,属性值)这样的三元组称为属性型知识,也称属性型事实。

七、修饰型知识。也称修饰型事实。知识库中可以对关系型知识和属性型知识进一步修饰,由(三元组,修饰键,修饰值)组成。

实际应用中,可以预先按照答案推理过程中需要用到的推理操作,设置各种算子,每个算子用于实现推理操作。针对不同的目标问题,推理目标问题的答案所需的算子可能不同,因此,可以确定推理目标问题的答案所需的至少一个算子,通过该至少一个算子的执行所实现的推理操作,来推理出问题的答案,这些算子能够展示出推理目标问题的答案的过程,透明可解释,该过程中的每个中间结构都可以被检查,以确保执行的正确性。如表1所示的算子集合,表1中列举了所需的各种算子的名称、算子的输入参数及输出、算子的功能和输入参数的举例。其中,算子的输入参数可以来自两个方面,一方面可以是来自其它算子的输出(可以称为算子输入),另一部分可以是来自目标问题(可以称为文本输入),表1中以“输入(算子输入+文本输入)->输出”来示意。

表1 算子集合

以上仅是列举了一些算子,也可以实际需求设置其它的算子。

步骤102、针对所述至少一个算子中至少部分需要访问知识库的所述算子,基于所述知识库中预先构建的知识元素的倒排索引结构,访问所述知识库,以得到所述算子的执行结果。

从表1中可以看出,有些算子的执行需要访问知识库,由于知识库的数据量非常大,算子的执行速度影响着目标问题的推理效率,为了提高推理效率,可以针对至少部分需要访问知识库的算子,基于所述知识库中预先构建的知识元素的倒排索引结构,访问所述知识库,以得到所述算子的执行结果,倒排索引结构是通过关键字进行搜索,能够提高搜索的效率,从而快速完成对知识库的访问。

需要访问知识库的其它算子,可以按照传统的方式访问知识库,例如,可以通过遍历知识库的方式进行搜索。

对于不需要访问知识库的算子,执行算子并得到算子的执行结果。

步骤103、基于所述至少一个算子的执行结果,得到所述答案。

通过所述至少一个算子的执行结果,最终推理出目标问题的答案。

本实施例中,确定的推理目标问题的答案所需的至少一个算子,能够展示出推理目标问题的答案的过程,透明可解释,并且,针对至少部分需要访问知识库的算子,基于知识库中预先构建的知识元素的倒排索引结构,访问知识库,以得到算子的执行结果,进而能够提高搜索的效率,快速完成对知识库的访问,提高了算子的执行速度,进而提高了答案的推理效率。

实施中,可以根据算子的功能的需求对知识库中的知识元素进行有效存储,本实施例提供的知识库的知识元素的存储方案中,包括两种数据结构,一种是线性表,另一种是哈希表。线性表是最基本、最简单、也是最常用的一种数据结构,具体可以参考相关技术,此处不做赘述。哈希表也称散列表,可以用来抽象表达一个函数,实现从键(k)到值(v)的映射。在实际应用中,哈希表可以直接根据输入的键,返回值。一般情况下,如果没有哈希表,当数据量为 N 的时候,查找复杂度为 O(N),而如果哈希表的底层实现方式为平衡树,这个复杂度可以大幅降低到O(logN)。

基于此,所述知识库中还以线性表存储以下至少一项:概念的名称、实体的名称、概念与概念之间的关系、实体与概念之间的关系、每个实体的属性、每个实体的关系。所述知识库中还以哈希表存储以下至少一项:每个概念的名称在线性表中的位置、每个实体的名称在线性表中的位置、属性键与对应的属性值。

举例来说,根据表1中部分算子的需求,知识库的知识元素的存储方案可以如下:

(一)、 概念的名称(_concept_name)

以线性表存储知识库中的概念的名称,可以用来服务算子FilterConcept等。

(二)、概念的名称的位置(_concept_name_to_number)

以哈希表存储每个概念的名称在 (一)的线性表中的位置,可以用来服务算子FilterConcept等。

(三)、实体的名称(_entity_name)

以线性表存储知识库中的实体的名称,可以用来服务算子Find、QueryName、SelectBetween和SelectAmong 等。

(四)、实体的名称的位置( _entity_name_to_number)

以哈希表存储每个实体的名称在(三)的线性表中的位置,用来服务算子 Find等。

(五)、概念与概念之间的关系(_concept_sub_class_of)

以线性表存储概念与概念之间的关系,用来服务算子 FilterConcept 等。

(六)、实体与概念之间的关系(_entity_is_instance_of)

以线性表存储实体与概念之间的关系,用来服务算子 FilterConcept等。

(七)、实体的属性(_entity_attribute)

以线性表存储每个实体的属性,其中,每个属性的信息又以哈希表将属性键映射到属性值,以及对应的修饰键和修饰值上,用来服务算子FilterStr、FilterNum、FilterDate、FilterYear、QueryAttr、QueryAttrUnderCondition、QueryAttrQualifier、SelectBetween和SelectAmong 等。其中,修饰键和修饰值用来对实体的属性进一步修饰,以小明社交媒体上的粉丝数量这一属性键为例,可以在不同的修饰键和修饰值下有不同的结果,例如在日期为2021 年 1 月 4 日时,属性值为 203639;而在 日期为2020 年 5 月1 日时,属性值为 208435。

(八)、实体的关系(_entity_relation)

以线性表存储每个实体的关系。线性表中的第

本实施例中,知识库中通过哈希表来存储知识元素,可以提高访问的算子的执行速度。

基于以上实施例,所述倒排索引结构可以包括目标哈希表,所述目标哈希表用于表征知识元素之间的映射关系;所述基于所述知识库中预先构建的知识元素的倒排索引结构,访问所述知识库,以得到所述算子的执行结果,具体实现方式可以包括:在所述算子的执行过程中,基于所述算子的输入参数以及对应的所述目标哈希表,访问所述知识库中所述算子的输入参数对应的知识元素,以得到所述算子的执行结果。

目标哈希表是与算子需要访问的知识元素对应的哈希表。本实施例中,通过哈希表来实现倒排索引结构,实现简单,基于算子的输入参数,得到关键字,也即目标哈希表的键,通过目标哈希表的键以及目标哈希表访问到需要访问的知识元素,进而得到算子的执行结果。以下进一步通过几个举例说明。

一、所述输入参数至少包括属性条件,所述算子用于返回所述知识库中满足所述属性条件的实体,所述算子对应的所述目标哈希表用于将属性映射到实体集合。

在实现过程中,目标哈希表的键为属性键,相应的,目标哈希表的值是个实体集合。例如,“身高”、“生日”这些都可以是该目标哈希表的键。“身高”被映射到的实体集合包括:“小明”、“张三”等等具有“身高”的实体,不包含“中国”这样不具有“身高”的实体。

具体的,属性条件可以是来自目标问题,即来自文本输入,例如,可以包括指定属性键和指定属性值,还可以进一步包括指定比较运算符(例如大于、小于或者等于等)等等。相应的算子可以为 FilterStr、FilterNum、FilterDate或者FilterYear等,以属性键为目标哈希表的键,可以从目标哈希表中查找到属性键对应的实体集合,基于此,返回满足属性条件的实体及对应的三元组,提高了FilterStr、FilterNum、FilterDate或者FilterYear等算子的执行速度。

二、所述输入参数至少包括指定实体和指定关系,所述算子用于找出与指定实体有指定关系的所有实体及对应的三元组,所述算子对应的所述目标哈希表用于将关系映射到关系的头实体。

在实现过程中,目标哈希表的键为实体和实体之间的关系,例如“出生地”就是该目标哈希表的键,该目标哈希表的值为关系的头实体,目标哈希表的值也可以是哈希表,用来将头实体映射到尾实体集合上去。例如,“出生地”所对应的值的哈希表中,键可以是实体“小明”,而“小明”这个键对应的实体集合中就包含“上海”这个实体。

具体的,指定实体可以来自其它算子的输出,指定关系可以是来自目标问题,即来自文本输入。相应的算子可以为Relate等,以指定关系为目标哈希表的键,可以从目标哈希表中查找到指定关系对应的头实体,基于此,找出与指定实体有指定关系的所有实体及对应的三元组,提高了Relate等算子的执行速度。

三、所述输入参数至少包括两个指定实体,所述算子用于返回两个指定实体的关系,所述算子对应的所述目标哈希表用于将一对存在关系的实体映射到关系在头实体的用于存储关系的线性表中的位置。

在实现过程中,构建了一个大的目标哈希表,该目标哈希表的键为实体对(即一对存在关系的实体),只有两者之间存在关系的两个实体才会作为键插入目标哈希表中;该目标哈希表的值为,这两个实体之间的关系在头实体的用于存储关系的线性表中的位置。因为考虑到两个实体之间的关系可能不止一个,所以目标哈希表的值也可以是一个线性表,用来存储多个不同的可能的关系。

例如,(小明,中国)这个整体是该目标哈希表的键,而目标哈希表的值中就包含了所有的,小明的用于存储关系的线性表中,“中国”这个实体占据的位置,也即包含了所有的关系。

具体的,指定实体可以来自其它算子的输出。相应的算子可以为QueryRelation等,以两个指定实体为目标哈希表的键,可以从目标哈希表中查找到两个指定实体对应的关系在头实体的用于存储关系的线性表中的位置,也即查找到了两个指定实体的关系,基于此,返回两个指定实体的关系,提高了算子的执行速度,提高了QueryRelation等算子的执行速度。

四、所述输入参数至少包括两个指定实体,指定关系和指定修饰键,所述算子用于返回两个指定实体的指定关系的指定修饰键的修饰值,所述算子对应的所述目标哈希表用于将一对存在关系的实体映射到关系在头实体的用于存储关系的线性表中的位置。

具体的,指定实体可以来自其它算子的输出,指定关系和指定修饰键可以来自目标问题,即文本输入。相应的算子可以为QueryRelateQualifier等,以两个指定实体为目标哈希表的键,可以从目标哈希表中查找到两个指定实体对应的关系在头实体的用于存储关系的线性表中的位置,基于此,返回两个指定实体的指定关系的指定修饰键的修饰值,提高了QueryRelateQualifier等算子的执行速度。

五、所述输入参数至少包括指定概念,所述算子用于找出属于指定概念的所有实体,所述算子对应的所述目标哈希表用于将概念映射到概念下的所有实体。

在实现过程中,这里的目标哈希表的键一般是概念的名称在线性表中的位置,而目标哈希表的值则一般是概念下的实体集合。例如,当目标哈希表的键是“国家”时,对应的值就是“中国”、“美国”、“英国”等实体所构成的实体集合。

具体的,指定概念来自目标问题,即文本输入,相应的算子可以为FilterConcept等,以指定概念为目标哈希表的键,可以从目标哈希表中查找到指定概念对应的所有实体,基于此,找出属于指定概念的所有实体,提高了FilterConcept等算子的执行速度。

另外,在示例性实施例中,目标哈希表还用于将一对实体映射到它们之间存在的关系上。例如,(“小明”,“上海”)这一对头尾实体就是目标哈希表中的键,对应的值中包含“出生于”这样的关系。实际应用中,可以根据实际需要,设置相应的能够提高执行速度的算子,此处不做列举。

在示例性实施例中,所述基于所述知识库中预先构建的知识元素的倒排索引结构,访问所述知识库,以得到所述算子的执行结果,其具体实现方式可以包括:

第一步、当所述至少一个算子中执行顺序相邻的两个所述算子均需要访问所述知识库时,若顺序在前的所述算子用于返回所述知识库中所有目标知识元素,且顺序在后的所述算子用于从所有目标知识元素中筛选出部分目标知识元素,确定执行中间算子;所述中间算子用于返回所述部分目标知识元素。

第二步、在所述中间算子执行的过程中,基于所述知识库中预先构建的所述中间算子对应的知识元素的倒排索引结构,访问所述知识库,以得到所述中间算子的执行结果。

第三步、将所述中间算子的执行结果,作为所述执行顺序相邻的两个所述算子的执行结果。

在实现本发明的过程中,发明人发现可以将不同的两个算子合并成一个中间算子,执行该中间算子,即可以得到两个算子的执行结果,可以构建该中间算子对应的倒排索引结构,从而提高效率。举例来说,如果FilterStr接受FindAll的输出作为输入,那么FilterStr会需要对知识库中的所有实体计算是否和指定字符串相同,这个过程的计算开销是极大的,因此,可以将FindAll和FilterStr合并成一个新的临时算子,即中间算子,并针对该中间算子构建倒排索引结构,该倒排索引结构为哈希表,用于将属性键和属性值映射到对应的实体上,这样,该倒排索引结构可以极大加快FilterStr速度。基于此,执行顺序相邻的两个所述算子包括FindAll和FilterStr。同理,执行顺序相邻的两个算子也可以包括FindAll和FilterConcept,或者FindAll 和 FilterStr,或者 FindAll 和 FilterNum。

以 FindAll 和 FilterStr 连续执行(即执行顺序相邻)为例,介绍如何构建倒排索引结构来加速执行过程。在实现过程中,倒排索引结构使用哈希表作为实现方案,哈希表的键即索引的键,哈希表的值即索引的值。其中索引的键为字符串,格式是:属性键 + __$$__ + 属性值,其中__$$__ 是一种特殊的字符串格式,用来分割属性键和属性值;索引的值为拥有该属性键,并且该属性键上是该属性值的实体的集合。

例如,“身高__$$__229 cm”就是该倒排索引结构中的一个键,对应的值是一个实体集合,该实体集合中就可以查到实体“小明”。因此,当我们要找到“身高是 229 厘米的那些实体”,就可以使用到这样的倒排索引结构。

针对FindAll后接的FilterNum、FilterDate、FilterYear算子,考虑到这些算子要求进行大小比较操作,因此,构建的倒排索引结构是有序的,即有序的哈希表。示例性的,可以使用平衡二叉树(即平衡树)作为构建倒排索引结构的数据结构,从而保证了有序性。

本实施例中,对均需要访问知识库的执行顺序相邻的两个算子,省略了该执行顺序相邻的两个算子的执行,而是执行对应的中间算子,将中间算子的执行结果作为该执行顺序相邻的两个算子的执行结果,在中间算子执行的过程中,基于倒排索引结构访问知识库,提高了执行速度,从而优化了计算流程,进一步提高了答案的推理效率。

实际应用中,本发明的方案可以但不限于利用C++语言和Python语言实现。

在 KQA Pro 数据集上,基于本发明的方案的推理引擎可以完全正确地预测出所有的答案,从而验证了推理引擎的执行过程是正确的。并且,使用全部 Wikidata 数据来执行 KQA Pro 数据集中的问题,平均每条执行时间不到 0.3 秒,从而验证了本发明的优化方案是高效的。由于基于本发明的方案的推理引擎的推理过程是透明,可以被检查,从而验证了推理引擎的可解释性。

下面对本发明提供的问答推理装置进行描述,下文描述的问答推理装置与上文描述的问答推理方法可相互对应参照。

如图2所示 ,本实施例提供的一种问答推理装置,包括:

算子确定模块201,用于确定推理目标问题的答案所需的至少一个算子;

算子执行模块202,用于针对所述至少一个算子中至少部分需要访问知识库的所述算子,基于所述知识库中预先构建的知识元素的倒排索引结构,访问所述知识库,以得到所述算子的执行结果;

答案获得模块203,用于基于所述至少一个算子的执行结果,得到所述答案。

基于以上实施例,算子执行模块,具体用于:

当所述至少一个算子中执行顺序相邻的两个所述算子均需要访问所述知识库时,若顺序在前的所述算子用于返回所述知识库中所有目标知识元素,且顺序在后的所述算子用于从所有目标知识元素中筛选出部分目标知识元素,确定执行中间算子;所述中间算子用于返回所述部分目标知识元素;

在所述中间算子执行的过程中,基于所述知识库中预先构建的所述中间算子对应的知识元素的倒排索引结构,访问所述知识库,以得到所述中间算子的执行结果;

将所述中间算子的执行结果,作为所述执行顺序相邻的两个所述算子的执行结果。

基于以上实施例,所述倒排索引结构是有序的。

在示例性实施例中,所述倒排索引结构包括目标哈希表,所述目标哈希表用于表征知识元素之间的映射关系;算子执行模块,具体用于:

在所述算子的执行过程中,基于所述算子的输入参数以及对应的所述目标哈希表,访问所述知识库中所述算子的输入参数对应的知识元素,以得到所述算子的执行结果。

在示例性实施例中,所述输入参数至少包括属性条件,所述算子用于返回所述知识库中满足所述属性条件的实体,所述算子对应的所述目标哈希表用于将属性映射到实体集合;

或者,所述输入参数至少包括指定实体和指定关系,所述算子用于找出与指定实体有指定关系的所有实体及对应的三元组,所述算子对应的所述目标哈希表用于将关系映射到关系的头实体;

或者,所述输入参数至少包括两个指定实体,所述算子用于返回两个指定实体的关系,所述算子对应的所述目标哈希表用于将一对存在关系的实体映射到关系在头实体的用于存储关系的线性表中的位置;

或者,所述输入参数至少包括两个指定实体,指定关系和指定修饰键,所述算子用于返回两个指定实体的指定关系的指定修饰键的修饰值,所述算子对应的所述目标哈希表用于将一对存在关系的实体映射到关系在头实体的用于存储关系的线性表中的位置;

或者,所述输入参数至少包括指定概念,所述算子用于找出属于指定概念的所有实体,所述算子对应的所述目标哈希表用于将概念映射到概念下的所有实体。

在示例性实施例中,所述知识库中还以线性表存储以下至少一项:概念的名称、实体的名称、概念与概念之间的关系、实体与概念之间的关系、每个实体的属性、每个实体的关系,所述知识库中还以哈希表存储以下至少一项:每个概念的名称在线性表中的位置、每个实体的名称在线性表中的位置、属性键与对应的属性值。

图3示例了一种电子设备的实体结构示意图,如图3所示,该电子设备可以包括:处理器(processor)310、通信接口(Communications Interface)320、存储器(memory)330和通信总线340,其中,处理器310,通信接口320,存储器330通过通信总线340完成相互间的通信。处理器310可以调用存储器330中的逻辑指令,以执行问答推理方法,该方法包括:

确定推理目标问题的答案所需的至少一个算子;

针对所述至少一个算子中至少部分需要访问知识库的所述算子,基于所述知识库中预先构建的知识元素的倒排索引结构,访问所述知识库,以得到所述算子的执行结果;

基于所述至少一个算子的执行结果,得到所述答案。

此外,上述的存储器330中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的问答推理方法,该方法包括:

确定推理目标问题的答案所需的至少一个算子;

针对所述至少一个算子中至少部分需要访问知识库的所述算子,基于所述知识库中预先构建的知识元素的倒排索引结构,访问所述知识库,以得到所述算子的执行结果;

基于所述至少一个算子的执行结果,得到所述答案。

又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的问答推理方法,该方法包括:

确定推理目标问题的答案所需的至少一个算子;

针对所述至少一个算子中至少部分需要访问知识库的所述算子,基于所述知识库中预先构建的知识元素的倒排索引结构,访问所述知识库,以得到所述算子的执行结果;

基于所述至少一个算子的执行结果,得到所述答案。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

相关技术
  • 食品安全智能问答推理方法及装置
  • 一种基于图注意力机制的深度学习问答推理方法及装置
技术分类

06120114731407