基于知识图谱的问答方法、装置及计算机可读存储介质
技术领域
本公开涉及计算机
技术领域
,尤其涉及基于知识图谱的问答方法、装置及计算机可读存储介质。背景技术
基于知识图谱的问答,是在知识图谱的结构化数据基础上来回答事实类型的问题的一种问答系统。知识图谱是一种结构化的知识组织形式,由一条条包含事实的三元组来构成。SPO三元组是指 Subject-Predicate-Object三元组:S元组表示实体名称、P元组表示与所述实体名称对应的属性名、O 元组表示所述实体名称的属性值。
基于知识图谱的问答技术中,目前比较流行的是基于信息抽取(IE)的方法,主要步骤是先采用实体链接等技术从用户疑问query中提取关键实体,再根据提取出的关键实体来构建一批包含答案的 SPO三元组(子图),最后是构建特征来计算SPO三元组(子图)和用户query的匹配程度,经过排序等过程后最终选择最符合条件的SPO三元组。
目前业界比较成熟的方案是,通过图数据库或者传统的数据库的检索来实现子图的构建。根据调研的情况,这种子图构建的方案在知识图谱的问答类别的比赛中比较流行,是一种通用的解决方案,但是针对复杂的query,检索会非常耗时,无法做到针对较复杂的子图的在线实时检索。
发明内容
为克服相关技术中存在的问题,本公开提供一种基于知识图谱的问答方法、装置及计算机可读存储介质。
根据本公开实施例的第一方面,提供一种基于知识图谱的问答方法,包括:获取用户问题,以及检索数据,所述检索数据包括所述用户问题中的目标实体;
根据所述检索数据,从预先构建的知识图谱的索引表中检索包括所述目标实体的多个SPO三元组的索引数据,根据所述索引数据,从所述知识图谱中获取多个所述SPO三元组,其中,针对每个 SPO三元组,所述S元组和所述O元组为所述知识图谱中的节点,所述S元组和所述O元组互为邻接节点,所述P元组为所述知识图谱中表征所述S元组和所述O元组之间的关系的边;
确定每个SPO三元组与用户问题的匹配度,将与用户问题匹配度最高的SPO三元组,作为目标问答数据输出;
其中,所述知识图谱的索引表包括:节点到节点标识ID的映射表、关系到关系ID的映射表、节点索引表和数据存储表,其中,节点索引表包括:针对知识图谱中的每个节点,包括该节点的节点 ID、与该节点ID对应的索引位置区间;所述数据存储表包括:针对与每个节点ID对应的索引位置区间,包括与该节点每个索引位置对应的数据对,所述数据对包括该节点的邻接节点ID、该节点和该邻接节点的关系ID。
可选地,所述检索数据还包括下列数据中的一种或几种的组合:
检索所述用户问题中的目标关系;
检索与所述目标实体存在预设连接方向的目标邻接节点;
检索所述目标实体的目标邻接节点类型;
检索连接目标实体中的第一目标实体和第二目标实体之间的关系;
检索连接目标实体中的第三目标实体和第四目标实体之间的公共邻接节点。
可选地,所述从预先构建的知识图谱的索引表中检索包括所述目标实体的多个SPO三元组的索引数据,包括:
从所述节点到节点标识ID的映射表中获取所述目标实体的目标节点ID;
根据所述目标节点ID,从所述节点索引表中获取与所述目标节点ID对应的索引位置区间;
根据与所述目标节点ID对应的索引位置区间,从所述数据存储表中检索与每个索引位置对应的邻接节点ID、所述目标节点和该邻接节点的关系ID;
根据所述目标节点的邻接节点ID、所述目标节点和该邻接节点的关系ID,得到所述目标实体的SPO三元组的索引数据。
可选地,所述数据存储表包括第一数据存储表和第二数据存储表;
其中,所述第一数据存储表为针对与每个节点ID对应的索引位置区间,以邻接节点ID由小到大的排序方式对每个数据对进行排序后,按照索引位置的先后顺序,将数据对与索引位置一一对应后得到;
所述第二数据存储表为针对与每个节点ID对应的索引位置区间,以关系ID由小到大的排序方式对每个数据对进行排序后,按照索引位置的先后顺序,将数据对与索引位置一一对应后得到。
可选地,若所述检索数据还包括所述用户问题中的目标关系;
所述从预先构建的知识图谱的索引表中检索包括所述目标实体的多个SPO三元组的索引数据,包括:
从所述关系到关系ID的映射表中获取所述目标关系的目标关系ID;
从所述节点到节点标识ID的映射表中获取所述目标实体的目标节点ID;
根据所述目标节点ID,从所述节点索引表中获取与所述目标节点ID对应的索引位置区间;
根据与所述目标节点ID对应的索引位置区间,从所述第二数据存储表中确定所述目标关系ID 所在的第一目标索引位置区间;
针对每个第一目标索引位置,检索与该索引位置对应的邻接节点ID、表征所述目标节点和该邻接节点关系的所述目标关系ID;
根据所述目标节点的邻接节点ID、所述目标节点和该邻接节点的关系ID,得到所述目标实体的SPO三元组的索引数据。
可选地,若所述检索数据还包括检索与所述目标实体存在预设连接方向的目标邻接节点,所述预设连接方向包括正向连接方向和反向连接方向,所述正向连接方向表征所述目标实体为S元组,所述反向连接方向表征所述目标实体为O元组;
所述第二数据存储表包括与关系ID对应的指示关系ID为正向连接方向的第一连接符号,以及指示关系ID为反向连接方向的第二连接符号;
所述从预先构建的知识图谱的索引表中检索包括所述目标实体的多个SPO三元组的索引数据,包括:
从所述节点到节点标识ID的映射表中获取所述目标实体的目标节点ID;
根据所述目标节点ID,从所述节点索引表中获取与所述目标节点ID对应的索引位置区间;
若预设连接方向为正向连接方向,则根据与所述目标节点ID对应的索引位置区间,按照关系 ID从大到小的检索顺序,从所述第二数据存储表中检索与每个索引位置对应的邻接节点ID、所述目标节点和该邻接节点的关系ID;或者,
若预设连接方向为反向连接方向,则根据与所述目标节点ID对应的索引位置区间,按照关系 ID从小到大的检索顺序,从所述第二数据存储表中检索与每个索引位置对应的邻接节点ID、所述目标节点和该邻接节点的关系ID;
根据所述目标节点的邻接节点ID、所述目标节点和该邻接节点的关系ID,得到所述目标实体的SPO三元组的索引数据。
可选地,所述知识图谱的索引表还包括节点类型索引表,所述节点类型索引表包括:针对所述知识图谱中的每个节点,以该节点作为根节点的子树,包括该节点ID、起始子节点的起始子节点类型ID、以该节点作为结尾的结尾节点类型ID、以及从所述起始子节点类型ID至所述结尾节点类型 ID的节点类型ID范围;
若所述检索数据还包括所述目标实体的目标邻接节点类型,所述从预先构建的知识图谱的索引表中检索包括所述目标实体的多个SPO三元组的索引数据,包括:
从所述节点到节点标识ID的映射表中获取所述目标实体的目标节点ID;
从所述节点类型索引表中获取所述节点类型ID范围;
根据所述目标节点ID,从所述节点索引表中获取与所述目标节点ID对应的索引位置区间;
根据与所述目标节点ID对应的索引位置区间,从所述第一数据存储表中确定满足所述节点类型ID范围的第二目标索引位置区间;
针对第二目标索引位置区间中每个第二目标索引位置,从所述数据存储表中检索与该索引位置对应的目标邻接节点ID、表征所述目标节点和该邻接节点关系的所述目标关系ID;
根据所述目标节点的邻接节点ID、所述目标节点和该邻接节点的关系ID,得到所述目标实体的SPO三元组的索引数据。
可选地,若所述检索数据包括检索连接目标实体中的第一目标实体和第二目标实体之间的关系;
所述从预先构建的知识图谱的索引表中检索包括所述目标实体的多个SPO三元组的索引数据,包括:
从所述节点到节点标识ID的映射表中获取所述第一目标实体的第一目标节点ID,并获取所述第二目标实体的第二目标节点ID;
根据所述第一目标节点ID,从所述节点索引表中获取与所述第一目标节点ID对应的第一索引位置区间,并根据第二目标节点ID,从所述节点索引表中获取与所述第二目标节点ID对应的第二索引位置区间;
获取所述第一索引位置区间包括的第一位置数量,和所述第二索引位置区间包括的第二位置数量,若所述第一位置数量小于所述第二位置数量,则针对所述第一索引位置区间中的每个索引位置,从所述第一数据存储表中检索与该第一索引位置对应的第一目标邻接节点ID;
根据每个第一目标邻接节点ID,确定第一目标邻接节点ID中包括所述第二目标节点ID的节点 ID,得到包括第二目标节点ID、所述第一目标节点ID和第二目标节点ID的关系ID;
根据所述第二目标节点ID、所述第一目标节点ID和第二目标节点ID的关系ID,得到包括所述第二目标节点ID、所述第一目标节点ID的SPO三元组的索引数据。
可选地,若所述检索数据包括检索连接目标实体中的第三目标实体和第四目标实体之间的公共邻接节点;
所述从预先构建的知识图谱的索引表中检索包括所述目标实体的多个SPO三元组的索引数据,包括:
从所述节点到节点标识ID的映射表中获取所述第三目标实体的第三目标节点ID,并获取所述第四目标实体的第四目标节点ID;
根据所述第三目标节点ID,从所述节点索引表中获取与所述第三目标节点ID对应的第三索引位置区间,并根据第四目标节点ID,从所述节点索引表中获取与所述第四目标节点ID对应的第四索引位置区间;
针对所述第三索引位置区间中的每个第三索引位置,以及针对所述第四索引位置区间中的每个第四索引位置,从所述第一数据存储表中检索与所述第三目标节点和所述第四目标节点存在相同邻接节点ID的公共邻接节点ID;
根据所述公共邻接节点ID,确定所述第三目标节点ID和所述公共邻接节点ID的关系ID,并确定所述第四目标节点ID和所述公共邻接节点ID的关系ID;
根据所述公共邻接节点ID,所述第三目标节点ID和所述公共邻接节点ID的关系ID,得到包括所述第三目标节点ID、所述公共邻接节点ID的SPO三元组的索引数据,并根据所述公共邻接节点 ID,所述第四目标节点ID和所述公共邻接节点ID的关系ID,得到包括所述第四目标节点ID、所述公共邻接节点ID的SPO三元组的索引数据。
根据本公开实施例的第二方面,提供一种基于知识图谱的问答装置,包括:获取模块,用于获取用户问题,以及检索数据,所述检索数据包括所述用户问题中的目标实体;
检索模块,用于根据所述检索数据,从预先构建的知识图谱的索引表中检索包括所述目标实体的多个SPO三元组的索引数据,根据所述索引数据,从所述知识图谱中获取多个所述SPO三元组,其中,针对每个SPO三元组,所述S元组和所述O元组为所述知识图谱中的节点,所述S元组和所述O元组互为邻接节点,所述P元组为所述知识图谱中表征所述S元组和所述O元组之间的关系的边;
确定模块,用于确定每个SPO三元组与用户问题的匹配度,将与用户问题匹配度最高的SPO 三元组,作为目标问答数据输出;
其中,所述知识图谱的索引表包括:节点到节点标识ID的映射表、关系到关系ID的映射表、节点索引表和数据存储表,其中,节点索引表包括:针对知识图谱中的每个节点,包括该节点的节点 ID、与该节点ID对应的索引位置区间;所述数据存储表包括:针对与每个节点ID对应的索引位置区间,包括与该节点每个索引位置对应的数据对,所述数据对包括该节点的邻接节点ID、该节点和该邻接节点的关系ID。
可选地,所述检索数据还包括下列数据中的一种或几种的组合:
检索所述用户问题中的目标关系;
检索与所述目标实体存在预设连接方向的目标邻接节点;
检索所述目标实体的目标邻接节点类型;
检索连接目标实体中的第一目标实体和第二目标实体之间的关系;
检索连接目标实体中的第三目标实体和第四目标实体之间的公共邻接节点。
可选地,所述检索模块采用如下方式从预先构建的知识图谱的索引表中检索包括所述目标实体的多个SPO三元组的索引数据:
从所述节点到节点标识ID的映射表中获取所述目标实体的目标节点ID;
根据所述目标节点ID,从所述节点索引表中获取与所述目标节点ID对应的索引位置区间;
根据与所述目标节点ID对应的索引位置区间,从所述数据存储表中检索与每个索引位置对应的邻接节点ID、所述目标节点和该邻接节点的关系ID;
根据所述目标节点的邻接节点ID、所述目标节点和该邻接节点的关系ID,得到所述目标实体的SPO三元组的索引数据。
可选地,所述数据存储表包括第一数据存储表和第二数据存储表;
其中,所述第一数据存储表为针对与每个节点ID对应的索引位置区间,以邻接节点ID由小到大的排序方式对每个数据对进行排序后,按照索引位置的先后顺序,将数据对与索引位置一一对应后得到;
所述第二数据存储表为针对与每个节点ID对应的索引位置区间,以关系ID由小到大的排序方式对每个数据对进行排序后,按照索引位置的先后顺序,将数据对与索引位置一一对应后得到。
可选地,若所述检索数据还包括所述用户问题中的目标关系;
可选地,所述检索模块采用如下方式从预先构建的知识图谱的索引表中检索包括所述目标实体的多个SPO三元组的索引数据:
从所述关系到关系ID的映射表中获取所述目标关系的目标关系ID;
从所述节点到节点标识ID的映射表中获取所述目标实体的目标节点ID;
根据所述目标节点ID,从所述节点索引表中获取与所述目标节点ID对应的索引位置区间;
根据与所述目标节点ID对应的索引位置区间,从所述第二数据存储表中确定所述目标关系ID 所在的第一目标索引位置区间;
针对每个第一目标索引位置,检索与该索引位置对应的邻接节点ID、表征所述目标节点和该邻接节点关系的所述目标关系ID;
根据所述目标节点的邻接节点ID、所述目标节点和该邻接节点的关系ID,得到所述目标实体的SPO三元组的索引数据。
可选地,若所述检索数据还包括检索与所述目标实体存在预设连接方向的目标邻接节点,所述预设连接方向包括正向连接方向和反向连接方向,所述正向连接方向表征所述目标实体为S元组,所述反向连接方向表征所述目标实体为O元组;
所述第二数据存储表包括与关系ID对应的指示关系ID为正向连接方向的第一连接符号,以及指示关系ID为反向连接方向的第二连接符号;
所述检索模块采用如下方式从预先构建的知识图谱的索引表中检索包括所述目标实体的多个 SPO三元组的索引数据:
从所述节点到节点标识ID的映射表中获取所述目标实体的目标节点ID;
根据所述目标节点ID,从所述节点索引表中获取与所述目标节点ID对应的索引位置区间;
若预设连接方向为正向连接方向,则根据与所述目标节点ID对应的索引位置区间,按照关系 ID从大到小的检索顺序,从所述第二数据存储表中检索与每个索引位置对应的邻接节点ID、所述目标节点和该邻接节点的关系ID;或者,
若预设连接方向为反向连接方向,则根据与所述目标节点ID对应的索引位置区间,按照关系 ID从小到大的检索顺序,从所述第二数据存储表中检索与每个索引位置对应的邻接节点ID、所述目标节点和该邻接节点的关系ID;
根据所述目标节点的邻接节点ID、所述目标节点和该邻接节点的关系ID,得到所述目标实体的SPO三元组的索引数据。
可选地,所述知识图谱的索引表还包括节点类型索引表,所述节点类型索引表包括:针对所述知识图谱中的每个节点,以该节点作为根节点的子树,包括该节点ID、起始子节点的起始子节点类型ID、以该节点作为结尾的结尾节点类型ID、以及从所述起始子节点类型ID至所述结尾节点类型 ID的节点类型ID范围;
若所述检索数据还包括所述目标实体的目标邻接节点类型,所述检索模块采用如下方式从预先构建的知识图谱的索引表中检索包括所述目标实体的多个SPO三元组的索引数据:从所述节点到节点标识ID的映射表中获取所述目标实体的目标节点ID;
从所述节点类型索引表中获取所述节点类型ID范围;
根据所述目标节点ID,从所述节点索引表中获取与所述目标节点ID对应的索引位置区间;
根据与所述目标节点ID对应的索引位置区间,从所述第一数据存储表中确定满足所述节点类型ID范围的第二目标索引位置区间;
针对第二目标索引位置区间中每个第二目标索引位置,从所述数据存储表中检索与该索引位置对应的目标邻接节点ID、表征所述目标节点和该邻接节点关系的所述目标关系ID;
根据所述目标节点的邻接节点ID、所述目标节点和该邻接节点的关系ID,得到所述目标实体的SPO三元组的索引数据。
可选地,若所述检索数据包括检索连接目标实体中的第一目标实体和第二目标实体之间的关系;
所述检索模块采用如下方式从预先构建的知识图谱的索引表中检索包括所述目标实体的多个 SPO三元组的索引数据:
从所述节点到节点标识ID的映射表中获取所述第一目标实体的第一目标节点ID,并获取所述第二目标实体的第二目标节点ID;
根据所述第一目标节点ID,从所述节点索引表中获取与所述第一目标节点ID对应的第一索引位置区间,并根据第二目标节点ID,从所述节点索引表中获取与所述第二目标节点ID对应的第二索引位置区间;
获取所述第一索引位置区间包括的第一位置数量,和所述第二索引位置区间包括的第二位置数量,若所述第一位置数量小于所述第二位置数量,则针对所述第一索引位置区间中的每个索引位置,从所述第一数据存储表中检索与该第一索引位置对应的第一目标邻接节点ID;
根据每个第一目标邻接节点ID,确定第一目标邻接节点ID中包括所述第二目标节点ID的节点 ID,得到包括第二目标节点ID、所述第一目标节点ID和第二目标节点ID的关系ID;
根据所述第二目标节点ID、所述第一目标节点ID和第二目标节点ID的关系ID,得到包括所述第二目标节点ID、所述第一目标节点ID的SPO三元组的索引数据。
可选地,若所述检索数据包括检索连接目标实体中的第三目标实体和第四目标实体之间的公共邻接节点;
所述检索模块采用如下方式从预先构建的知识图谱的索引表中检索包括所述目标实体的多个 SPO三元组的索引数据:
从所述节点到节点标识ID的映射表中获取所述第三目标实体的第三目标节点ID,并获取所述第四目标实体的第四目标节点ID;
根据所述第三目标节点ID,从所述节点索引表中获取与所述第三目标节点ID对应的第三索引位置区间,并根据第四目标节点ID,从所述节点索引表中获取与所述第四目标节点ID对应的第四索引位置区间;
针对所述第三索引位置区间中的每个第三索引位置,以及针对所述第四索引位置区间中的每个第四索引位置,从所述第一数据存储表中检索与所述第三目标节点和所述第四目标节点存在相同邻接节点ID的公共邻接节点ID;
根据所述公共邻接节点ID,确定所述第三目标节点ID和所述公共邻接节点ID的关系ID,并确定所述第四目标节点ID和所述公共邻接节点ID的关系ID;
根据所述公共邻接节点ID,所述第三目标节点ID和所述公共邻接节点ID的关系ID,得到包括所述第三目标节点ID、所述公共邻接节点ID的SPO三元组的索引数据,并根据所述公共邻接节点 ID,所述第四目标节点ID和所述公共邻接节点ID的关系ID,得到包括所述第四目标节点ID、所述公共邻接节点ID的SPO三元组的索引数据。
根据本公开实施例的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序指令,该程序指令被处理器执行时实现本公开第一方面所提供的基于知识图谱的问答方法的步骤。
本公开的实施例提供的技术方案可以包括以下有益效果:通过预先构建知识图谱的索引表,知识图谱的索引表包括:节点到节点标识ID的映射表、关系到关系ID的映射表、节点索引表和数据存储表。当获取用户问题,以及检索数据后,通过从知识图谱的索引表中检索所述目标实体的多个SPO 三元组的索引数据,可快速定位知识图谱中目标实体的邻接节点,以及目标实体和邻接节点的关系,进而可快速构建得到目标实体的SPO三元组,达到快速响应用户问题的效果。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的一种基于知识图谱的问答方法的流程图。
图2是根据一示例性实施例示出的一种基于知识图谱的问答方法的流程图。
图3是根据一示例性实施例示出的一种基于知识图谱的问答方法的流程图。
图4是根据一示例性实施例示出的一种基于知识图谱的问答方法的流程图。
图5是根据一示例性实施例示出的一种基于知识图谱的问答方法的流程图。
图6是根据一示例性实施例示出的一种基于知识图谱的问答方法的流程图。
图7是根据一示例性实施例示出的一种基于知识图谱的问答装置的框图。
图8是根据一示例性实施例示出的一种用于基于知识图谱的问答的装置的框图。
图9是根据一示例性实施例示出的节点索引表的示例图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
本公开可应用于基于知识图谱的问答场景,在该场景中,知识图谱数据以某种形式存储在数据库中,可以依赖数据库的检索功能来对特定模式的子图进行检索和构建。解决此类问题常用的数据库分为两种:一种是传统的关系型数据库,比如MySQL,SQLite等。另一种是专门针对图形结构的数据做存储和检索优化的专用的图数据库,比如Neo4j,Nebula等。基于关系型的数据库做检索的方法是,采用数据库搜索满足一定条件的三元组,按照三元组来拼凑出对应的子图。这种方法常见于问答的比赛中,该场景下,只需要候选子图的类型能够足够覆盖尽可能多的问题类型,而对子图构建的耗时没有太多的要求。而基于图数据库进行检索,可以支持一定类型的路径检索,可以用来直接检索子图。以query“演员A和演员B共同出演的作品”为例,在提取出关键实体<演员A>和<演员B>后,在Neo4j上可以用如下Cypher语句来检索满足条件的两个实体单跳的子图。
图数据库相比传统关系型数据库对图形结构的数据以及路径的检索,作了一定程度的优化。因此,在一些基于图谱的工业界的实践中,有图数据库的应用。
目前主要基于信息抽取方法,实现知识图谱的问答。基于信息抽取方法进行知识图谱的问答时,针对单个实体的query,SPO三元组即子图检索有较快的反应速度,较少的耗时。
在问答场景下,我们调研过基于图数据库的检索来构建在线实时问答系统的可行性。图数据库在检索子图方面有比较强大的能力,对于简单的子图检索有较快的反应速度,较少的耗时。但是对于多个实体的子图检索,图数据耗时仍旧不能很好地满足在线实时请求的场景,耗时量级大概都在几百毫秒或者以上。而在实际问答场景当中,用户经常会询问涉及多个实体的复杂问题,图数据库针对多个实体的子图检索中,检索复杂子图的耗时巨大,很难满足真实线上性能的要求。
图数据库的基本思想是对图形数据做了一定程度的抽象,支持数据的增加、删除、修改、检索等各种不同的需求,同时为了满足各种不同的业务场景的需求,将特定的功能进行了通用化处理,但是并未专门针对问答场景的特点做专一的优化。
实际应用中,对于事实型的问答场景而言,其知识图谱数据基本是固定的事实。这意味着,知识图谱数据几乎没有删除和修改的需求。同时对于成熟的知识图谱数据而言,增加数据是基本可以忽略的。真实的问答,所需要的功能其实只有子图的检索功能,不需要针对图谱数据进行其他的修改。因此,在构建知识图谱数据的索引方面,所需要的是简化版本的“图数据库”,可以专注于优化检索的需求,通过充分地离线计算和合理地构建索引来换取线上检索时间的缩短。本技术方案所解决的问题就是优化图谱的索引和存储方式,来减少构建子图所需要的检索时间,以满足在线实时请求的需求。
有鉴于此,在本公开基于知识图谱的问答方法中,通过构建知识图谱数据的索引的方式,来对检索知识图谱数据进行优化。即通过预先构建知识图谱的索引表,知识图谱的索引表包括:节点到节点标识ID的映射表、关系到关系ID的映射表、节点索引表和数据存储表。当获取用户问题,以及检索数据后,通过从知识图谱的索引表中检索所述目标实体的多个SPO三元组的索引数据,可快速定位知识图谱中目标实体的邻接节点,以及目标实体和邻接节点的关系,进而可快速构建得到目标实体的SPO三元组,实现快速响应用户问题的目的。
图1是根据一示例性实施例示出的一种基于知识图谱的问答方法的流程图,如图1所示,基于知识图谱的问答方法,包括以下步骤。
在步骤S11中,获取用户问题,以及检索数据,所述检索数据包括所述用户问题中的目标实体。
一种实施方式中,检索数据可以是对用户问题例如通过实体链接等技术来做实体的挖掘后,得到的标记目标实体的数据。
在步骤S12中,从预先构建的知识图谱的索引表中检索包括所述目标实体的多个SPO三元组的索引数据,根据所述索引数据,从所述知识图谱中获取多个所述SPO三元组。
在步骤S13中,确定每个SPO三元组与用户问题的匹配度,将与用户问题匹配度最高的SPO 三元组,作为目标问答数据输出。
一种实施方式中,例如可通过如下方式从预先构建的知识图谱的索引表中检索包括所述目标实体的多个SPO三元组的索引数据:
其中,针对每个SPO三元组,所述S元组和所述O元组为所述知识图谱中的节点,所述S元组和所述O元组互为邻接节点,所述P元组为所述知识图谱中表征所述S元组和所述O元组之间的关系的边。
在知识图谱的实时问答场景中,为了满足用户的在线实时请求,根据用户query快速检索得到目标实体的SPO三元组,本公开可预先建立包括:节点到节点标识ID的映射表、关系到关系ID的映射表、节点索引表和数据存储表的知识图谱索引。
其中,节点索引表包括:针对知识图谱中的每个节点,包括该节点的节点ID、与该节点ID对应的索引位置区间;所述数据存储表包括:针对与每个节点ID对应的索引位置区间,包括与该节点每个索引位置对应的数据对,所述数据对包括该节点的邻接节点ID、该节点和该邻接节点的关系ID。
基于预先构建的知识图谱的索引表,可快速定位知识图谱中目标实体的邻接节点,以及目标实体和邻接节点的关系,进而可快速构建得到目标实体的SPO三元组,实现快速响应用户问题的目的。
其中,例如可通过如下方式预先构建得到知识图谱的索引表:
针对知识图谱中的每个节点(包括S元组和O元组),分别对每个节点建立节点和节点标识ID 的映射关系,得到节点到节点标识ID的映射表Tn,Tn中的节点ID例如为从0开始的整数:
(节点)张三->0(节点ID)
(节点)李四->1(节点ID)
(节点)王五->2(节点ID)
(节点)赵六->3(节点ID)
………
针对知识图谱中连接节点的关系的边,分别对每个关系建立关系和关系ID的映射关系,得到关系到关系ID的映射表Tr,Tr中的关系ID例如为从1开始的整数:
(关系)妻子->0(关系ID)
(关系)搭档->1(关系ID)
………
节点索引表Ti例如可以表示为图9所示:
在图9示出的节点索引表Ti的示例图中,针对每个节点,图9中的0表示张三的节点ID,661 表示与张三的节点ID(0)对应的索引位置区间(1,661)的结尾索引位置,由于张三的节点ID(0) 是节点与节点标识ID映射关系中的第一个节点,故,只需标识与张三的节点ID对应的结尾索引位置 661。
相应地,与李四的节点ID(1)对应的索引位置区间为(662,1023),与王五的节点ID(2) 对应的索引位置区间(1024,1323)。
其中,将标识ID映射为整数型数据,具有如下优势:一方面是每个整数在内存和磁盘中占用的空间大小是一样的,方便存储;另一方面是整数的大小可以比较,一个整数列表经过排序后的,可以快速的寻找到所需要的整数(也就意味着可以方便地找到整数对应的实体/关系/属性值)。
对知识图谱中的节点到节点标识ID进行映射,以及对关系到关系ID进行映射后,首先分别统计节点和关系在知识图谱的SPO三元组中出现的次数。节点和节点对应的度(即通过知识图谱SPO 三元组所关联上的节点数量)记为(nodei,counti),关系为知识图谱的关系的边,将关系以及关系在图谱中出现的次数记为(edgem,countm)。
在得到关系和关系对应的度(edgem,countm)之后,可对关系进行ID化,关系的ID化是对于所有的关系的二元组数据(edgem,countm),按照对应的countm排序,排序可以是升序或者降序等任意方式。从自然数1开始,关系所对应的整数型的ID即为其排序后的序号。比如,对于关系的二元组列表{(国籍,100),(职业,68),(性别,235),(年龄,98),(出生日期,197),(出生地,155)},对出现次数经过升序排列后得到:{(职业,68),(年龄,98),(国籍,100),(出生地,155),(出生日期, 197),(性别,235)}。又或者关系的二元组列表{(父亲,6),(搭档,13),(妻子,25)},对出现次数经过降序后是{(妻子,25),(搭档,13),(父亲,6)},对应的ID是:妻子-1,搭档-2,父亲-3。
在得到节点和节点对应的度(nodei,counti)后,由于知识图谱数据存储和检索方式依然以<头实体S>-<关系P>-<尾实体/属性值O>三元组数据作为基础,只不过其中的实体/属性值/关系均以ID来表示。以知识图谱中单个节点的存储为例,来逐步说明知识图谱数据的存储。
假设节点a拥有如下的三元组:a-p0-b0,…,a-pi-bi,bi+1-pi+1-a,…,bi+j- pi+j-a。三元组列表可表示为{(b0,p0),…,(bi,pi),(bi+1,-pi+1),…,(bi+j,-pi+j)},其中节点a前面的负号,表示当前的三元组是反向存储的。另一个角度看,实际上是以某个节点为中心的,存储其相关联的邻接节点以及对应的边关系。
为了提高检索效率,列表可以转为有序列表来表示。其中涉及到两种有序列表,其一是按照边关系(记为pi)的ID来进行升序排序,其二是按照邻接节点(记为bi)的ID来进行升序排序。
问答场景下,同时有按边索引和按节点来索引的需求,故两种列表都需要保留,分别记为Ea和 Na。尽管排序的方式不同,但是由于包含的三元组的个数是一样的,Ea和Na的长度也是一样的。以图9中实体<张三>作为例子(这里为了描述方便,认为实体张三只属于类型“演员”,没有类型“歌手”),其对应的ID为0,假设实体所拥有的三元组有0-1-3,0-11-5,0-96-12,500-8-0,0-1009-1033 (假设张三当前有4个三元组,而非图9中的661个三元组)。分别得到按照边来索引的列表E0以及按照节点来索引的列表N0如下所示:
E0={(500,-8),(3,1),(5,11),(12,96),(1033,1009)}
N0={(3,1),(5,11),(12,96),(500,-8),(1033,1009)}
假设图谱中的节点个数为Ω+Ψ(假设各类实体只有一个实体类型),其中Ω记为图谱中实体的个数,Ψ记为图谱中属性值的个数,节点序号起始于0,终止于Ω+Ψ-1。数据存储表,按照关系和节点的不同排序方法,可分别表示为Tsr=E0:E1:…:EΩ+Ψ-1,Tsn=N0:N1:…:NΩ+Ψ-1。
其中:表示连接操作。即把各个节点的列表首位相接,连在一起组成一个大的列表。
数据存储表Tsr和Tsn把不同节点的邻接节点列表Ea和Na首尾连接在了一起,这样做的好处是,可以把整个图谱数据统一地用一张列表来表示(有按边索引和按节点索引两种方式,这里分成了Tsr和 Tsn两张列表)。
这样做,可以方便地将整个图谱序列化为二进制的数据直接存储在磁盘空间中。但是当需要读取某个节点,比如节点i的邻接列表的时候,需要知道它所对应的邻接节点在数据存储表Tsr和Tsn的开始位置和结束位置,这需要构建节点索引表Ti来帮助完成。
节点索引表,为Ω+Ψ长度的列表。其数据表示为{d0,d1,...,dΩ+Ψ-1}。位置i的元素di表示的是节点i在数据存储表Tsr和Tsn中的邻接节点数据存储的结束位置,di-1是位置i-1的元素的结束位置,对应的下一个位置di-1+1就是节点i在数据存储表Tsr和Tsn中的邻接节点数据存储的开始位置。
事实上,di等于Tsr的子列表E0:E1:…:Ei的长度减去1(由于节点位置从0开始编号,不是从1 开始)。同样地,由于Ea和Na的长度一致,di也等于Tsn的子列表N0:N1:...:Ni的长度减1。
由此,节点i对应的邻接节点数据存储的区间可以表示为(di-1,di]。对于节点i=0而言,d-1不存在,但是整个列表的开始索引位置是0,所以i=0时的区间范围是(-1,d0],可定义d-1=-1。
以图9为例,假设实体李四(ID为1),王五(ID为2),赵六(ID为3),对应的邻接节点列表分别如下所示(同样地,为了论述方便,这里只取少量的三元组):
E1={(7,8),(9,4),(130,-76)},N1={(130,-76),(9,4),(7,8)}
E2={(23,8),(56,4),(99,-6)},N2={(99,-6),(56,4),(23,8)}
E3={(0,-1),(300,-48),(688,80)},N3={(300,-48),(0,-1),(688,80)}
则由实体张三(ID为0),李四(ID为1),王五(ID为2),赵六(ID为3)组成的数据存储表和节点索引表分别为:
Tsr={(500,-8),(3,1),(5,11),(12,96),(1033,1009),(7,8),(9,4),(130,-76),(23,8), (56,4),(99,-6),(0,-1),(300,-48),(688,80)}
Tsn={(3,1),(5,11),(12,96),(500,-8),(1033,1009),(130,-76),(9,4),(7,8),(99,-6), (56,4),(23,8),(300,-48),(0,-1),(688,80)}
Ti={(1,4)(5,7)(8,10)(11,13)},将与每个实体ID对应的首个索引位置省略后,得到 Ti={4,7,10,13}
节点索引表和数据存储表都是直接序列化为二进制数据,存储在磁盘空间中的。核心数据存储所占用的空间计算如下:单个ID按4字节整型数据存储计算(支持的节点数目为231),一个三元组只存储了边关系和邻接节点,共占用8字节。图谱里面每个三元组分别以头节点和尾节点为中心,存储了两次。若三元组的总数量为Δ,整个节点索引表所占用的磁盘空间为16Δ字节。节点索引表的大小与节点的个数一致,单个整数型的ID所占用字节按4字节计算,所占用的空间为4(Ω+Ψ)字节。
表1.数据占用空间统计
由此,例如从预先构建的知识图谱的索引表中检索包括所述目标实体的多个SPO三元组的索引数据时,针对目标实体,检索与目标实体相关的SPO三元组检索节点的所有的邻接节点,根据i从节点索引表Ti中获取节点在数据存储表Tsn和Tsr中的开始索引位置和结束索引位置(di-1,di),耗时是 O(1)时间。根据索引位置区间迭代检索所有邻接节点的耗时与邻接节点的数目相关。记邻接节点的个数是H,耗时是O(H)。由于是在连续的存储空间中检索邻接节点,检索速度会比较快。从所述节点到节点标识ID的映射表中获取所述目标实体的目标节点ID。
根据所述目标节点ID,从所述节点索引表中获取与所述目标节点ID对应的索引位置区间 (di-1,di),根据与所述目标节点ID对应的索引位置区间(di-1,di),从所述数据存储表中检索与每个索引位置对应的邻接节点ID、所述目标节点和该邻接节点的关系ID,根据所述目标节点的邻接节点ID、所述目标节点和该邻接节点的关系ID,得到所述目标实体的SPO三元组的索引数据。
在得到目标实体的SPO三元组的索引数据后,可根据所述索引数据,从所述知识图谱中获取多个SPO三元组,对query和多个SPO三元组进行匹配,确定每个SPO三元组与用户问题的匹配度,根据匹配结果,最终确定出与用户问题匹配度最高的SPO三元组,并将与用户问题匹配度最高的SPO 三元组作为目标问答数据输出。
在本公开的示例性实施例中,通过预先构建知识图谱的索引表,知识图谱的索引表包括:节点到节点标识ID的映射表、关系到关系ID的映射表、节点索引表和数据存储表。当获取用户问题,以及检索数据后,通过从知识图谱的索引表中检索所述目标实体的多个SPO三元组的索引数据,可快速定位知识图谱中目标实体的邻接节点,以及目标实体和邻接节点的关系,进而可快速构建得到目标实体的SPO三元组,基于快速构建得到的目标实体的SPO三元组,能够快速匹配query和目标实体的SPO三元组,得到目标问答数据,实现快速响应用户问题的目的。
本公开中,基于检索数据在知识图谱中检索SPO三元组时,检索数据在包括用户问题中的目标实体后,还可以包括如下检索数据中的一种或者几种的组合:
检索用户问题中的目标关系,即检索目标节点满足用户问题中目标关系的邻接节点,比如满足 query“张三的[搭档]有哪些”中目标节点<张三>满足的目标关系[搭档]的邻接节点。
检索与所述目标实体存在预设连接方向的目标邻接节点类型,所述预设连接方向包括正向连接方向和反向连接方向,所述正向连接方向表征所述目标实体为S元组,所述反向连接方向表征所述目标实体为O元组。即检索与目标实体存在指定方向的邻接节点,即以当前节点为头实体(或者尾实体) 的三元组所关联上的节点。例如,定义“出”方向的三元组为<张三>-<妻子>-<答案>,“入”方向的三元组为<答案>-<搭档>-<张三>。
检索目标实体的目标邻接节点类型,即检索指定实体类型的邻接节点,比如检索数据包括与目标实体(张三)直接通过三元组相连的人物实体有哪些。
检索两个目标节点是否存在直接相连的关系。即是否存在把两个节点关联起来的图谱三元组。比如query“邓某和孙某是什么关系”,检索是否存在第一目标节点<邓某>和第二目标节点<孙某>,是否存在<邓某>-<?>-<孙某>或者<孙某>-<?>-<邓某>的三元组。
检索两个目标节点的公共邻接节点。即是否存在一个公共邻接节点,通过两个不同的三元组来关联上两个给定的目标实体,比如“共同出演过作品甲和作品乙的演员有”,指定寻找实体类型为“演员”,同时能够关联上实体“作品甲”和“作品乙”的公共邻接实体。比如“<作品甲>-<?p1>-<答案>, <作品乙>-<?p2>-<答案>”可以找到的节点有<葛某>等。
其中,“<答案>”所代表的是子图里面存在的从未在query中出现过的公共邻接节点。
由此,通过上述的基本检索操作的组合得到正确的子图。
本公开以下分别对涉及的基本检索数据进行举例说明。
图2是根据一示例性实施例示出的一种基于知识图谱的问答方法的流程图,如图2所示,基于知识图谱的问答方法,包括以下步骤。
在步骤S21中,获取用户问题,以及检索数据,检索数据包括所述用户问题中的目标实体,还包括用户问题中的目标关系。
在步骤S22中,从预先构建的知识图谱的索引表中检索包括所述目标实体的多个SPO三元组的索引数据,根据所述索引数据,从所述知识图谱中获取多个所述SPO三元组。
在步骤S23中,确定每个SPO三元组与用户问题的匹配度,将与用户问题匹配度最高的SPO 三元组,作为目标问答数据输出。
一种实施方式中,例如可通过如下方式从预先构建的知识图谱的索引表中检索包括所述目标实体的多个SPO三元组的索引数据:
从关系到关系ID的映射表中获取目标关系的目标关系ID,记目标关系的ID为ri。从节点到节点标识ID的映射表中获取目标实体的目标节点ID,例如目标实体的目标节点ID是i。
根据目标节点的ID i,从节点索引表Ti中获取目标节点在数据存储表Tsn和Tsr中的索引位置区间,即开始索引位置和结束索引位置(di-1,di),耗时记为是O(1)时间。获取索引位置区间(di-1,di) 后,根据目标关系的ID ri,检索数据存储表Tsr。由于Tsr表是按照关系的ID从小到大的排序方式对每个数据对进行排序后,按照索引位置的先后顺序,将数据对与索引位置一一对应后得到的,即Tsr表中的关系的ID是顺序排列的,关系ID的大小可比较。
进而对索引位置区间(di-1,di)例如采用二分法进行检索,可得到目标关系ID所在的第一目标索引位置区间。单次检索耗时为log2(di-di-1),记邻接节点的个数是H,总的耗时是O(logH)。
在步骤S23中,确定每个SPO三元组与用户问题的匹配度,将与用户问题匹配度最高的SPO 三元组,作为目标问答数据输出。
在本公开的示例性实施例中,从节点索引表Ti中获取目标节点的索引位置区间(di-1,di)后,由于Tsr表是按照关系ID从小到大的排序方式对每个数据对进行排序后,按照索引位置的先后顺序,将数据对与索引位置一一对应后得到的。进而在Tsr表中检索包括目标节点的SPO三元组的索引数据时,无需在索引位置区间(di-1,di)逐个地检索,而是直接根据目标关系的ID大小,以及Tsr表中关系ID的排列顺序,迅速锁定目标关系的目标索引位置区间,进而可快速得到知识图谱中满足目标实体和目标关系的邻接节点,实现快速构建得到目标实体的SPO三元组,快速、实时地响应用户问题的目的。
图3是根据一示例性实施例示出的一种基于知识图谱的问答方法的流程图,如图3所示,基于知识图谱的问答方法,包括以下步骤。
在步骤S31中,获取用户问题,以及检索数据,检索数据包括所述用户问题中的目标实体,还包括检索与所述目标实体存在预设连接方向的目标邻接节点。
其中,所述预设连接方向包括正向连接方向和反向连接方向,所述正向连接方向可以是表征所述目标实体为S元组,所述反向连接方向可以是表征所述目标实体为O元组。
在步骤S32中,从预先构建的知识图谱的索引表中检索包括所述目标实体的多个SPO三元组的索引数据,根据所述索引数据,从所述知识图谱中获取多个所述SPO三元组。
在步骤S33中,确定每个SPO三元组与用户问题的匹配度,将与用户问题匹配度最高的SPO 三元组,作为目标问答数据输出。
一种实施方式中,例如可通过如下方式从预先构建的知识图谱的索引表中检索包括所述目标实体的多个SPO三元组的索引数据:
从节点到节点标识ID的映射表中获取目标实体的目标节点ID,例如目标实体的目标节点ID是i。根据所述目标节点ID i,从所述节点索引表中获取与所述目标节点ID i对应的索引位置区间 (di-1,di)后,检索数据存储表Tsr。
由于预先存储的Tsr包括与关系ID对应的指示关系ID为正向连接方向的第一连接符号,以及指示关系ID为反向连接方向的第二连接符号。
其中,第一连接符号可以为“正号+”,实际应用中,可以默认为数字本身。第二连接符号可以为“负号-”,针对反向连接方向的目标邻接节点,可在目标邻接节点前加“-”。
由此,若预设连接方向为正向连接方向,则根据与所述目标节点ID对应的索引位置区间,按照关系ID从大到小的检索顺序,即按照存储表Tsr的索引结束位置开始索引,直到将所有正向连接方向的目标邻接节点检索完毕,检索次数与正向的边的数目相关,例如检索次数记为和Hb,时间复杂度为O(Hb),得到与每个索引位置对应的邻接节点ID、所述目标节点和该邻接节点的关系ID。
若预设连接方向为反向连接方向,则根据与所述目标节点ID对应的索引位置区间,按照关系 ID从小到大的检索顺序,即按照存储表Tsr的索引开始位置开始索引,直到将所有反向连接方向的目标邻接节点检索完毕,检索次数与反向的边的数目相关,例如检索次数记为和Hf,时间复杂度为O(Hf),得到与每个索引位置对应的邻接节点ID、所述目标节点和该邻接节点的关系ID。
在本公开的示例性实施例中,由于从节点索引表Ti中获取目标节点的索引位置区间(di-1,di) 后,由于Tsr表中包括与关系ID对应的指示关系ID为正向连接方向的第一连接符号,以及指示关系 ID为反向连接方向的第二连接符号,进而在Tsr表中检索包括目标节点的SPO三元组的索引数据时,可直接根据目标关系的ID的连接符号以及关系ID的排列顺序,迅速锁定目标关系的目标索引位置区间,进而可快速得到知识图谱中满足目标实体和目标关系的邻接节点,实现快速构建得到目标实体的 SPO三元组,快速、实时地响应用户问题的目的。
图4是根据一示例性实施例示出的一种基于知识图谱的问答方法的流程图,如图4所示,基于知识图谱的问答方法,包括以下步骤。
在步骤S41中,获取用户问题,以及检索数据,检索数据包括所述用户问题中的目标实体,还包括所述目标实体的目标邻接节点类型。
在步骤S42中,从预先构建的知识图谱的索引表中检索包括所述目标实体的多个SPO三元组的索引数据,根据所述索引数据,从所述知识图谱中获取多个所述SPO三元组。
在步骤S43中,确定每个SPO三元组与用户问题的匹配度,将与用户问题匹配度最高的SPO 三元组,作为目标问答数据输出。
其中,知识图谱的索引表还包括节点类型索引表,所述节点类型索引表包括:针对所述知识图谱中的每个节点,以该节点作为根节点的子树,包括该节点ID、起始子节点的起始子节点类型ID、以该节点作为结尾的结尾节点类型ID、以及从所述起始子节点类型ID至所述结尾节点类型ID的节点类型ID范围。
一种实施方式中,例如可通过如下方式构建得到节点类型索引表:
先对节点进行ID化,对节点ID化是在节点的二元组合(nodei,counti)中新加入实体类型的编号。节点包含实体和属性值,然而属性值是没有实体类型的。这里额外给属性值一个类型编号ξ(在实体类型索引表Tt中,将实体类型的个数记作ξ,1,2,...,ξ-1代表了不同的实体类型,编号ξ未被使用)。如果额外考虑到属性值的类型,实体类型索引表Tt可以扩充为Tt={s0,s1,...sξ-1,ξ}。一个实体可以同时属于多个类型,第一步需要合并实体类型。比如“张三”拥有“人物”和“歌手”标签,可以合并为“歌手”,因为检索类型为“人物”的实体的时候,同样会搜索类型为“歌手”的实体的。在实体类型的划分上,“歌手”是“人物”为根的子树下的节点,这时候可以去掉“人物”这个根节点。但是一个实体可能含有多个互斥而不可合并的类型标签,比如“张三”即是一个“演员”(类型编号0) 又是一个“歌手”(类型编号1)。这种情况下,实体可以按照不同的实体类型拆分成不同的三元组合 (nodei,counti,typei1),...,(nodei,counti,typeim),如(张三,100,0),(张三,100,1)。节点ID化的原则是,按照以节点类型type作为主排序键升序,总数count作为次排序键降序,做二次排序。从自然数0开始,节点(实体,属性值)所对应的整数型的ID即为其排序的序号。比如对于节点的(nodei,counti,typei)元组列表{(张三,661,0),(张三,661,1),(王五,300,1),(李四,362,1),(作品甲,13,3), (作品乙,5,4),(作品丙,10,5),(中国,213,6),(赵六,65,2)},经过二次排序后是{(张三,661,0),(张三,661,1), (李四,362,1),(王五,300,1),(赵六,65,2),(作品甲,13,3),(作品乙,5,4),(作品丙,10,5),(中国,213,6)}。这里的实体类型编号对应后的实体映射关系是,张三-0,张三-1,李四-2,王五-3,赵六-4,作品甲-5,作品乙-6,作品丙-7,中国-8。张三这一个实体对应了两个ID,原因是它有两个互斥的实体类型。节点到ID的映射表记为Tn,不同于关系和ID的映射表Tr,节点与ID的映射不是一一对应的,但是节点+实体类型与ID是一一对应的关系。
对类型的编号时,以类型“人物”为例,其类型编号的范围是0,1,2(包含类型是“人物”,“歌手”和“演员”),即在区间[0,2]中。实体的ID化,首先按照实体类型来进行升序排列,这一过程确保了同一种类型的实体,其实体ID是编号的。比如,上面的人物实体:张三-0,张三-1,李四-2,王五-3,赵六-4,编号在0-4之间;上面的作品实体:作品甲-5,作品乙-6,作品丙-7,编号在5-7之间。记ei为编号为i的实体类型所对应的实体中最大的ID值。这个ID值可以记录到实体类型索引表中,更新实体类型索引表Tt为Tt={(s0,e0),(s1,e1),...(sξ-1,eξ-1),(ξ,eξ)}。由新的实体类型索引表Tt,可以确定实体类型编号为i的实体类型所对应的最大节点的ID是ei。前面所述实体类型编号为i的实体类型所对应的实体编号范围是[si,i]。所以si-1为上一个实体类型,其节点的最大ID是
按照ID性的原则,上一个实体类型的结束节点ID,也是下一个实体类型对应节点的开始ID,所以实体类型编号为i对应是节点的ID编号是
以{(张三,661,0),(张三,661,1),(李四,362,1),(王五,300,1),(赵六,65,2),(作品甲,13,3),(作品乙,5,4),(作品丙,10,5),(中国,213,6)}为例,对应的原始实体类型索引表为Tt={0,1,0,3,4,3,0}。编号为 5的实体类型是“作品”,索引表上编号为5对应的数值是3,意味着实体类型为3,4,5的三种实体类型“电影”,“音乐”和“作品”都是属于“作品”类型的。按照上面提到的原则,更新后的实体类型索引表Tt={(0,0),(1,3),(0,4),(3,5),(4,6),(3,7),(0,8)},将实体类型索引表换种方式表示:
实体类型:演员(Tt的0位置),起始实体类型编号:s0=0,最大实体ID:e0=0
实体类型:歌手(Tt的1位置),起始实体类型编号:s1=1,最大实体ID:e1=3
实体类型:人物(Tt的2位置),起始实体类型编号:s2=0,最大实体ID:e2=4
实体类型:电影(Tt的3位置),起始实体类型编号:s3=3,最大实体ID:e3=5
实体类型:音乐(Tt的4位置),起始实体类型编号:s4=4,最大实体ID:e4=6
实体类型:作品(Tt的5位置),起始实体类型编号:s5=3,最大实体ID:e5=7
实体类型:Default(Tt的6位置),起始实体类型编号:s6=0,最大实体ID:e6=8
以实体类型“作品”为例i=5,si=3,ei=7,其对应的实体类型范围是3-5(3,4,5),即[si,i]。因此在实体类型3-5以内的实体,都是类型为“作品”的实体。前一个实体类型编号是2(即si-1),它所对应的最大实体ID是4,即实体类型编号5所对应的最大实体ID是7(ei=6)。因此实体类型“作品”(实体类型编号是5)对应的实体ID范围是(4,7),也就是作品甲-5,作品乙-6,作品丙-7。通过实体类型编号i以及实体类型索引表Tt,即可获得对应的实体ID所在的区间范围。
由此,针对检索数据中包括检索连接目标实体中的第一目标实体和第二目标实体之间的关系时,例如可通过如下方式从预先构建的知识图谱的索引表中检索包括所述目标实体的多个SPO三元组的索引数据:
从所述节点到节点标识ID的映射表中获取所述目标实体的目标节点ID记为i,从所述节点类型索引表中获取所述节点类型ID范围记为根据所述目标节点ID i,从所述节点索引表中获取与所述目标节点ID i对应的索引位置区间(di-1,di)。根据索引位置区间(di-1,di)可以从数据存储表Tsn中,获取节点i的邻接节点列表Ni。然后在Ni中,寻找ID位于区间范围的节点。例如可以采用两次二分查询的方式,来确定满足条件的邻接节点在Ni中的区间范围,这一步耗时 2log2(di-di-1)。假设该类型的邻接实体个数为HType,在对应的type区间内查询邻接节点,迭代次数为HType,复杂度为O(HType)。
在本公开的示例性实施例中,由于从节点索引表Ti中获取目标节点的索引位置区间(di-1,di) 后,由于Tsn表是针对与每个节点ID对应的索引位置区间,以邻接节点ID由小到大的排序方式对每个数据对进行排序后,按照索引位置的先后顺序,将数据对与索引位置一一对应后得到的。因此在获取目标节点的索引位置区间(di-1,di)后,可从Tsn表中确定满足所述节点类型ID范围的索引位置区间,实现快速得到知识图谱中满足目标实体和目标邻接节点类型的邻接节点,实现快速构建得到目标实体的SPO三元组,快速、实时地响应用户问题的目的。
图5是根据一示例性实施例示出的一种基于知识图谱的问答方法的流程图,如图5所示,基于知识图谱的问答方法,包括以下步骤。
在步骤S51中,获取用户问题,以及检索数据,检索数据包括所述用户问题中的两个或者多个目标实体,还包括检索连接目标实体中的第一目标实体和第二目标实体之间的关系。
在步骤S52中,从预先构建的知识图谱的索引表中检索包括所述目标实体的多个SPO三元组的索引数据,根据所述索引数据,从所述知识图谱中获取多个所述SPO三元组。
在步骤S53中,确定每个SPO三元组与用户问题的匹配度,将与用户问题匹配度最高的SPO 三元组,作为目标问答数据输出。
一种实施方式中,记第一目标实体的第一目标节点ID为i,第二目标实体的第二目标节点ID为 j,分别检索节点索引表Ti获取第一目标节点ID对应的第一索引位置区间(di-1,di),和第二目标节点ID对应的第二索引位置区间(dj-1,dj)。取邻接节点较少的区间(假设di-di-1<dj-dj-1),在数据存储表Tsn中,获取节点i的邻接节点列表Ni。在Ni中二分查找节点j和对应的关系,时间复杂度为O(log(di-di-1))。
在步骤S43中,确定每个SPO三元组与用户问题的匹配度,将与用户问题匹配度最高的SPO 三元组,作为目标问答数据输出。
在本公开的示例性实施例中,对第一目标节点ID对应的第一索引位置区间(di-1,di),和第二目标节点ID对应的第二索引位置区间(dj-1,dj)所包含的位置数量进行比较,以较少的位置数量的索引位置区间为索引位置区间,可从第一数据存储表Tsn中快速检索与每个索引位置对应的邻接节点 ID、所述目标节点和该邻接节点的关系ID,实现快速得到知识图谱中包括第一目标实体和第二目标实体的SPO三元组,实现快速实时地响应用户问题的目的。
图6是根据一示例性实施例示出的一种基于知识图谱的问答方法的流程图,如图6所示,基于知识图谱的问答方法,包括以下步骤。
在步骤S61中,获取用户问题,以及检索数据,检索数据包括所述用户问题中的两个或者多个目标实体,还包括检索连接目标实体中的第三目标实体和第四目标实体之间的公共邻接节点。
本公开中,公共邻接节点表示是否存在一个节点,通过两个不同的SPO三元组来关联上两个给定的实体,例如query“共同出演过作品甲和作品乙的演员有”,指定寻找实体类型为“演员”,同时能够关联上实体“作品甲”和“作品乙”的两个目标实体。例如构建得到的SPO三元组“<作品甲>-<?p1>-<答案>,<作品乙>-<?p2>-<答案>”,可以找到的实体邻接节点有<葛某>。故,实体节点< 葛某>就是第三目标实体和第四目标实体即作品甲和作品乙的公共邻接节点。
在步骤S62中,从预先构建的知识图谱的索引表中检索包括所述目标实体的多个SPO三元组的索引数据,根据所述索引数据,从所述知识图谱中获取多个所述SPO三元组。
在步骤S63中,确定每个SPO三元组与用户问题的匹配度,将与用户问题匹配度最高的SPO 三元组,作为目标问答数据输出。
由此,针对检索数据中包括检索连接目标实体中的第三目标实体和第四目标实体之间的公共邻接节点时,例如可通过如下方式从预先构建的知识图谱的索引表中检索包括所述目标实体的多个SPO 三元组的索引数据:
例如记第三目标实体的第三目标节点ID为i,第四目标实体的第四目标节点ID为j,分别检索节点索引表Ti获取第三目标节点ID对应的第三索引位置区间(di-di-1),和第四目标节点ID对应的第四索引位置区间(dj-dj-1)。检索两个节点的公共邻接节点。对于节点i和节点j,可以转换为在数据存储表Tsn中对于两个有序的数组求解公共子序列的问题。最大迭代次数为(di-di-1)+(dj- dj-1)。
实际应用中,在问答场景下,常见带约束的query,比如“影视作品丁中李某扮演的角色是”,“星座是双子座的女明星有”,“出生于芝加哥的歌手”等等。分别涉及到的可能的子图路径为“<影视作品丁>-<?p1>-<答案>,<答案>-<?p2>-<李某>”,“<答案>-<?p1>-<明星>,<答案>-<?p2>-<双子座>, <答案>-<?p3>-<女>”,“<答案>-<?p1>-<芝加哥>,<答案>-<?p2>-<歌手>”。所以检索两个或者两个以上的实体的公共节点,来构建待选子图是常见需求。在约束关系中,常常存在两个体量差距很大的实体,比如“影视作品一里面的中国人有哪些”,因为存在大量中国国籍的人物,实体“中国”关联上的节点数量(可能高达百万个),可能远远多于“影视作品一”的节点数量(可能只有几十个)。
假设需要计算公共节点的两个节点分别是i和j,且节点i的邻接节点数量远远大于j的邻接节点的数量。此处简记两者的邻接节点个数分别为μ=di-di-1和v=dj-dj-1,其中v远远小于μ,记 (v<<μ)。正常情况下,最大的迭代查找公共节点的耗时是μ+v。优化方案是采用二分法构建二叉树的方式,对i的邻接节点列表进行分区,采用分层的检索的方式。
每次拆分列表的方式,是提取出中间节点,拆分列表为更小的列表。整个列表可以拆分成为一颗满二叉树,树的叶子节点为子列表,非叶子节点为每次拆分所产生的中间节点。假设构建的二叉树的深度为k+1。每个叶子节点代表的列表长度为或者是实际上,对于有序列表而言,这样的列表不需要构建,只需要提取出二叉树的所有的非叶子节点,记录它们的位置和ID到一个有序列表中即可。每次求解节点i和节点j的公共节点的方式是,选取节点j的邻接节点σ,分两次检索。第一次查找代表二叉树的有序列表,找到邻接节点可能位于的子列表。第二次在子列表中检索是否存在节点σ,子列表最大检索次数为由于节点j的每一个邻接节点σ也是有序的,全部的v个邻接节点检索代表二叉树的有序列表的最大检索次数可以是v+2k-1,其中2k-1为二叉树的有序列表中节点的个数,也即二叉树的非叶子节点的个数。查找两个节点的公共节点的最大检索次数为 vμ/2k+v+2k-1,其中v+2k-1是节点j的所有邻接节点σ的第一步检索次数,vμ/2k是节点j的所有邻接节点σ的第二步检索次数。满二叉树的深度可以自由设置,若合理设置树的深度k+1,使得 2k=λv<<μ,则检索次数可表示为μ/λ+(λ+1)v-1。选择合适的λ和k值,相比μ+v可减少很多。
上述优化过程,其实就对于节点i的邻接节点列表Ni做了一次分层次的检索。默认情况下的检索,可以认为是构建了一颗深度为0的满二叉树,这时的列表只有一个。又或者,最大化二叉树的深度,此时使得每一个子列表只有一个节点或者两个节点。这时候每次检索节点j的邻接节点σ是否存在于邻接节点列表Ni中,等同于一次二分检索,这相当于每次都采用二分法的方式来查找一个节点j的邻接节点σ是否是节点i和j的公共节点,检索次数为vlog2μ。分区检索的思路,从事实上将迭代遍历的方式和二分检索的方式给统一了起来。
在本公开的示例性实施例中,针对检索数据包括连接目标实体中的第三目标实体和第四目标实体之间的公共邻接节点,可针对第三目标节点ID对应的第一索引位置区间(di-1,di),和第四目标节点ID对应的第二索引位置区间(dj-1,dj),在数据存储表Tsn中转化为检索与所述第三目标节点和所述第四目标节点存在相同邻接节点ID的公共邻接节点ID的问题,实现快速得到知识图谱中包括第三目标节点ID、所述公共邻接节点ID的SPO三元组的索引数据,以及包括所述第四目标节点ID、所述公共邻接节点ID的SPO三元组的索引数据,实现快速实时地响应用户问题的目的。通过上述示例性实施例,本公开对子图检索部分优化,相比基于图数据库的检索而言,在检索速度上有大幅度的提升。在我们的调研中,使用图数据库时,部分通过单实体单跳耗时可达上百毫秒,两个以及以上实体的单跳耗时可达几百毫秒甚至更长时间。采用本公开后,在常见情况下,将N实体M跳模式(N=1, 2,3M=1,2)的检索耗时缩短到了几毫秒至几十毫秒之间。正常情况下,挖掘包含N实体M跳模式的所有子图(N=1,2,3M=1,2),整体的子图模块耗时在100毫秒以内。
图7是根据一示例性实施例示出的一种基于知识图谱的问答装置700框图。参照图7,该装置包括获取模块701、检索模块702和确定模块703。
其中,获取模块701,用于获取用户问题,以及检索数据,所述检索数据包括所述用户问题中的目标实体;
检索模块702,用于根据所述检索数据,从预先构建的知识图谱的索引表中检索包括所述目标实体的多个SPO三元组的索引数据,根据所述索引数据,从所述知识图谱中获取多个所述SPO三元组,其中,针对每个SPO三元组,所述S元组和所述O元组为所述知识图谱中的节点,所述S元组和所述O元组互为邻接节点,所述P元组为所述知识图谱中表征所述S元组和所述O元组之间的关系的边;
确定模块703,用于确定每个SPO三元组与用户问题的匹配度,将与用户问题匹配度最高的SPO 三元组,作为目标问答数据输出;
其中,所述知识图谱的索引表包括:节点到节点标识ID的映射表、关系到关系ID的映射表、节点索引表和数据存储表,其中,节点索引表包括:针对知识图谱中的每个节点,包括该节点的节点 ID、与该节点ID对应的索引位置区间;所述数据存储表包括:针对与每个节点ID对应的索引位置区间,包括与该节点每个索引位置对应的数据对,所述数据对包括该节点的邻接节点ID、该节点和该邻接节点的关系ID。
可选地,所述检索数据还包括下列数据中的一种或几种的组合:
检索所述用户问题中的目标关系;
检索与所述目标实体存在预设连接方向的目标邻接节点;
检索所述目标实体的目标邻接节点类型;
检索连接目标实体中的第一目标实体和第二目标实体之间的关系;
检索连接目标实体中的第三目标实体和第四目标实体之间的公共邻接节点。
可选地,所述检索模块702采用如下方式从预先构建的知识图谱的索引表中检索包括所述目标实体的多个SPO三元组的索引数据:
从所述节点到节点标识ID的映射表中获取所述目标实体的目标节点ID;
根据所述目标节点ID,从所述节点索引表中获取与所述目标节点ID对应的索引位置区间;
根据与所述目标节点ID对应的索引位置区间,从所述数据存储表中检索与每个索引位置对应的邻接节点ID、所述目标节点和该邻接节点的关系ID;
根据所述目标节点的邻接节点ID、所述目标节点和该邻接节点的关系ID,得到所述目标实体的SPO三元组的索引数据。
可选地,所述数据存储表包括第一数据存储表和第二数据存储表;
其中,所述第一数据存储表为针对与每个节点ID对应的索引位置区间,以邻接节点ID由小到大的排序方式对每个数据对进行排序后,按照索引位置的先后顺序,将数据对与索引位置一一对应后得到;
所述第二数据存储表为针对与每个节点ID对应的索引位置区间,以关系ID由小到大的排序方式对每个数据对进行排序后,按照索引位置的先后顺序,将数据对与索引位置一一对应后得到。
可选地,若所述检索数据还包括所述用户问题中的目标关系;
可选地,所述检索模块702采用如下方式从预先构建的知识图谱的索引表中检索包括所述目标实体的多个SPO三元组的索引数据:
从所述关系到关系ID的映射表中获取所述目标关系的目标关系ID;
从所述节点到节点标识ID的映射表中获取所述目标实体的目标节点ID;
根据所述目标节点ID,从所述节点索引表中获取与所述目标节点ID对应的索引位置区间;
根据与所述目标节点ID对应的索引位置区间,从所述第二数据存储表中确定所述目标关系ID 所在的第一目标索引位置区间;
针对每个第一目标索引位置,检索与该索引位置对应的邻接节点ID、表征所述目标节点和该邻接节点关系的所述目标关系ID;
根据所述目标节点的邻接节点ID、所述目标节点和该邻接节点的关系ID,得到所述目标实体的SPO三元组的索引数据。
可选地,若所述检索数据还包括检索与所述目标实体存在预设连接方向的目标邻接节点,所述预设连接方向包括正向连接方向和反向连接方向,所述正向连接方向表征所述目标实体为S元组,所述反向连接方向表征所述目标实体为O元组;
所述第二数据存储表包括与关系ID对应的指示关系ID为正向连接方向的第一连接符号,以及指示关系ID为反向连接方向的第二连接符号;
所述检索模块702采用如下方式从预先构建的知识图谱的索引表中检索包括所述目标实体的多个SPO三元组的索引数据:
从所述节点到节点标识ID的映射表中获取所述目标实体的目标节点ID;
根据所述目标节点ID,从所述节点索引表中获取与所述目标节点ID对应的索引位置区间;
若预设连接方向为正向连接方向,则根据与所述目标节点ID对应的索引位置区间,按照关系 ID从大到小的检索顺序,从所述第二数据存储表中检索与每个索引位置对应的邻接节点ID、所述目标节点和该邻接节点的关系ID;或者,
若预设连接方向为反向连接方向,则根据与所述目标节点ID对应的索引位置区间,按照关系 ID从小到大的检索顺序,从所述第二数据存储表中检索与每个索引位置对应的邻接节点ID、所述目标节点和该邻接节点的关系ID;
根据所述目标节点的邻接节点ID、所述目标节点和该邻接节点的关系ID,得到所述目标实体的SPO三元组的索引数据。
可选地,所述知识图谱的索引表还包括节点类型索引表,所述节点类型索引表包括:针对所述知识图谱中的每个节点,以该节点作为根节点的子树,包括该节点ID、起始子节点的起始子节点类型ID、以该节点作为结尾的结尾节点类型ID、以及从所述起始子节点类型ID至所述结尾节点类型 ID的节点类型ID范围;
若所述检索数据还包括所述目标实体的目标邻接节点类型,所述检索模块702采用如下方式从预先构建的知识图谱的索引表中检索包括所述目标实体的多个SPO三元组的索引数据:从所述节点到节点标识ID的映射表中获取所述目标实体的目标节点ID;
从所述节点类型索引表中获取所述节点类型ID范围;
根据所述目标节点ID,从所述节点索引表中获取与所述目标节点ID对应的索引位置区间;
根据与所述目标节点ID对应的索引位置区间,从所述第一数据存储表中确定满足所述节点类型ID范围的第二目标索引位置区间;
针对第二目标索引位置区间中每个第二目标索引位置,从所述数据存储表中检索与该索引位置对应的目标邻接节点ID、表征所述目标节点和该邻接节点关系的所述目标关系ID;
根据所述目标节点的邻接节点ID、所述目标节点和该邻接节点的关系ID,得到所述目标实体的SPO三元组的索引数据。
可选地,若所述检索数据包括检索连接目标实体中的第一目标实体和第二目标实体之间的关系;
所述检索模块702采用如下方式从预先构建的知识图谱的索引表中检索包括所述目标实体的多个SPO三元组的索引数据:
从所述节点到节点标识ID的映射表中获取所述第一目标实体的第一目标节点ID,并获取所述第二目标实体的第二目标节点ID;
根据所述第一目标节点ID,从所述节点索引表中获取与所述第一目标节点ID对应的第一索引位置区间,并根据第二目标节点ID,从所述节点索引表中获取与所述第二目标节点ID对应的第二索引位置区间;
获取所述第一索引位置区间包括的第一位置数量,和所述第二索引位置区间包括的第二位置数量,若所述第一位置数量小于所述第二位置数量,则针对所述第一索引位置区间中的每个索引位置,从所述第一数据存储表中检索与该第一索引位置对应的第一目标邻接节点ID;
根据每个第一目标邻接节点ID,确定第一目标邻接节点ID中包括所述第二目标节点ID的节点 ID,得到包括第二目标节点ID、所述第一目标节点ID和第二目标节点ID的关系ID;
根据所述第二目标节点ID、所述第一目标节点ID和第二目标节点ID的关系ID,得到包括所述第二目标节点ID、所述第一目标节点ID的SPO三元组的索引数据。
可选地,若所述检索数据包括检索连接目标实体中的第三目标实体和第四目标实体之间的公共邻接节点;
所述检索模块702采用如下方式从预先构建的知识图谱的索引表中检索包括所述目标实体的多个SPO三元组的索引数据:
从所述节点到节点标识ID的映射表中获取所述第三目标实体的第三目标节点ID,并获取所述第四目标实体的第四目标节点ID;
根据所述第三目标节点ID,从所述节点索引表中获取与所述第三目标节点ID对应的第三索引位置区间,并根据第四目标节点ID,从所述节点索引表中获取与所述第四目标节点ID对应的第四索引位置区间;
针对所述第三索引位置区间中的每个第三索引位置,以及针对所述第四索引位置区间中的每个第四索引位置,从所述第一数据存储表中检索与所述第三目标节点和所述第四目标节点存在相同邻接节点ID的公共邻接节点ID;
根据所述公共邻接节点ID,确定所述第三目标节点ID和所述公共邻接节点ID的关系ID,并确定所述第四目标节点ID和所述公共邻接节点ID的关系ID;
根据所述公共邻接节点ID,所述第三目标节点ID和所述公共邻接节点ID的关系ID,得到包括所述第三目标节点ID、所述公共邻接节点ID的SPO三元组的索引数据,并根据所述公共邻接节点 ID,所述第四目标节点ID和所述公共邻接节点ID的关系ID,得到包括所述第四目标节点ID、所述公共邻接节点ID的SPO三元组的索引数据。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本公开还提供一种计算机可读存储介质,其上存储有计算机程序指令,该程序指令被处理器执行时实现本公开提供的基于知识图谱的问答方法的步骤。
图8是根据一示例性实施例示出的一种用于基于知识图谱的问答的装置800的框图。例如,装置800可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图8,装置800可以包括以下一个或多个组件:处理组件802,存储器804,电力组件806,多媒体组件808,音频组件810,输入/输出(I/O)的接口812,传感器组件814,以及通信组件816。
处理组件802通常控制装置800的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件802可以包括一个或多个处理器820来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件802可以包括一个或多个模块,便于处理组件802和其他组件之间的交互。例如,处理组件802可以包括多媒体模块,以方便多媒体组件808和处理组件802之间的交互。
存储器804被配置为存储各种类型的数据以支持在装置800的操作。这些数据的示例包括用于在装置800上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器804可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电力组件806为装置800的各种组件提供电力。电力组件806可以包括电源管理系统,一个或多个电源,及其他与为装置800生成、管理和分配电力相关联的组件。
多媒体组件808包括在所述装置800和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件808包括一个前置摄像头和/或后置摄像头。当装置800处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件810被配置为输出和/或输入音频信号。例如,音频组件810包括一个麦克风(MIC),当装置800处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器804或经由通信组件816发送。在一些实施例中,音频组件810还包括一个扬声器,用于输出音频信号。
I/O接口812为处理组件802和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件814包括一个或多个传感器,用于为装置800提供各个方面的状态评估。例如,传感器组件814可以检测到装置800的打开/关闭状态,组件的相对定位,例如所述组件为装置800的显示器和小键盘,传感器组件814还可以检测装置800或装置800一个组件的位置改变,用户与装置 800接触的存在或不存在,装置800方位或加速/减速和装置800的温度变化。传感器组件814可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件814还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件814还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件816被配置为便于装置800和其他设备之间有线或无线方式的通信。装置800可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件 816经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件816还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,装置800可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器804,上述指令可由装置800的处理器820执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在另一示例性实施例中,还提供一种计算机程序产品,该计算机程序产品包含能够由可编程的装置执行的计算机程序,该计算机程序具有当由该可编程的装置执行时用于执行上述的基于知识图谱的问答方法的代码部分。
本领域技术人员在考虑说明书及实践本公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。