伪原创相似度查询工具( 一种基于实体类型和语义相似度的知识图谱问答系统)

优采云 发布时间: 2021-10-15 12:44

  伪原创相似度查询工具(

一种基于实体类型和语义相似度的知识图谱问答系统)

  

  本发明涉及人工智能和自然语言处理技术领域,具体涉及一种基于实体类型和语义相似度的知识图谱问答系统。

  背景技术:

  问答系统(qa)是人机交互的门槛。作为聊天机器人的重要组成部分,其技术原理分为搜索引擎、qa数据集和知识图谱(知识库)三大类。其中,基于知识库的问答系统(kbqa)是给定的自然语言问题,对问题进行语义理解和解析后,通过对构建的知识图谱进行查询推理得到答案。与其他两类问答相比,kbqa对信息的集成度、覆盖度和语义层次要求较高,因此在解决领域问题上优势明显。

  知识图谱在kbqa中扮演着“大脑”的角色。它通过实体和关系的形式将领域内的知识聚合成语义网络,进而具备从“实体”和“关系”的角度“解决”和“回答”问题的能力。在技​​术层面,kbqa 的基本方法包括基于模板、语义分析和基于深度学习的方法。

  技术实现要素:

  本发明的目的是在现有技术背景下,在现有知识图谱问答方法的基础上,提供一种基于实体类型和语义相似度的知识图谱问答系统和方法。本发明的方法主要包括:1)实体识别;2) 相似度计算;3) 领域知识图谱查询。

  本发明的技术方案是一种基于实体类型和语义相似度的知识图谱问答方法和系统。基于构建的领域知识图谱,通过以下步骤实现基于实体类型和文本相似度的语义映射:

  第 1 步:实体识别。构建的领域知识图收录不同类型的实体。领域知识图谱中的实体按照实体类型进行分类,为每个类别生成实体词汇表;

  通过全遍历法,即遍历实体词汇表,识别输入问题中收录的实体类型和实体,保存为实体类型和实体对应的二元组,替换输入问题中的实体使用实体类型,输入问题模板,生成问题模板;

  第二步:相似度计算;对于上述替换后得到的问题模板,根据实体类型和词向量,计算给定模板在模板-(词向量)逻辑数据集中的相似度值并排序,返回语义最相似的模板, 查询模板逻辑数据集中模板的逻辑表达式作为输入问题的逻辑表达式;

  第三步:查询领域知识图谱;将步骤1中识别的实体类型和实体二元组链接到知识图谱对应的实体或实体属性,将步骤2得到的逻辑表达式映射到知识图谱中对应的实体关系,形成语义三元组输入问题。基于语义三元组查询知识图谱上的信息以生成答案。

  有益效果:不同于单纯的基于模板的方法,该方法结合实体类型和语义相似性,将自然问题转化为逻辑查询,链接到知识图中的实体和关系,实现智能问答。在构建基于解决知识图谱的问答系统中,如何将自然语言转化为逻辑查询,解决基于知识图谱的语义搜索、精准问答等问题。

  图纸说明

  图1为本发明基于实体类型和语义相似度的知识图谱问答系统流程图。

  详细方法

  下面结合附图和具体实施步骤对本发明作进一步详细说明。

  步骤 1. 实体识别。使用领域知识图识别输入问题中的实体类型和实体对象,将输入问题替换为问题模板的格式。问题中的疑问词统一用“$what$”表示。

  步骤 11. 在字段中输入要回答的问题。

  第 12 步:实体识别。领域知识图中的实体根据实体类型进行分类,并为每个类别生成一个实体词汇表。遍历实体词汇表以识别输入问题中的实体。

  步骤13.标记识别出的实体对象的实体类型,并保存为(entity, entity type)的二元组形式。

  Step 14. 对于输入问题的实体对象,替换为实体类型。问题中疑问词统一用“$what$”表示。例如,在问题“土豆适合与哪些食物一起食用?”中,实体对象“土豆”被标识,其类型为“食物”。将输入问题替换为“$food$ 适合与 $what$ 食物一起吃?”

  Step 15. 实体替换实体类型后输入的问题为问题模板。

  第二步:根据实体类型和词向量计算模板相似度,在模板逻辑数据集中找到与问题模板语义最相似的模板,并将其逻辑表达式作为输入问题的逻辑表达式.

  步骤21,实体类型所代表的问题模板,即步骤15的问题模板。

  步骤22,模板-逻辑数据集,这部分是手工构建的。采集现场常见问题,按照步骤2识别这些问题涉及的实体,获取常见问题的问题模板。然后,根据知识图中的关系,将问题模板中的语义关系一一映射到图中的关系,并用逻辑表达式表示。

  具体来说,问题中的关系包括单关系和多关系。前者根据实体类型和问题类型直接用图中的关系表示,例如:“$food$适合搭配$what$食物一起吃?” “健身”,根据实体类型food和问题类型(“$what$food”),将其映射到知识图谱的“food_fit_food”关系,形成逻辑表达式“(food,food_fit_food,what_food)”。后者将多重关系拆分为一元关系,例如:“哪些蔬菜适合煮土豆?” 进入问题模板“适合用 $what$ 蔬菜烹饪 $food$?”,根据知识图谱Type(food_fit_food, food_belongto_food)上的关系,形成逻辑表达式“(food, food_fit_food, what_food), (what_food, food_belongto_class, class)”。以此类推,对于该领域的常见问题,基于领域知识图谱,通过实体识别和关系映射,形成模板-逻辑数据集。

  步骤23,模板过滤。在模板逻辑数据集中过滤,保留与输入问题模板实体类型一致的模板。

  步骤24、基于词向量的模板相似度计算;即计算给定模板在输入问题模板与模板逻辑数据集中的相似度值并排序,借助wordmover的距离(wmd)计算模板与模板的相似度,wmd越小值,相似度越高;wmd根据词向量计算表达词,用emd计算两个文本词之间的转移成本,具体公式如下:

  c(i,j)=||xi-xj||2

  

  

  

  

  其中xi表示词x的词向量,c(i,j)表示词i和词j之间的余弦距离。ci表示单词出现的频率,di表示单词在文本中的权重,tij表示单词i有多少转移到单词j上。对于词x的词向量,下载中文维基语料库,对语料进行切分,将切分后的语料输入word2vec模型,训练词向量模型;使用开源工具包pyemd()求解公式;

  步骤 25:对计算出的距离进行排序。距离越小,相似度越大。

  Step 26:选择相似度最大的目标作为同义模板。

  步骤27:返回语义最接近的模板,查询模板逻辑数据集中模板的逻辑表达式作为输入问题的逻辑表达式;

  Step 3. 结合逻辑表达式和(entity type, entity)在知识图中展开知识查询,得到查询结果。

  步骤31,输入问题模板的逻辑表达式,即步骤27中的逻辑表达式。

  步骤32:输入问题对应的(实体类型,实体),即步骤13中的二元组(实体类型,实体)。

  步骤33:链接(实体类型,实体)到知识图中对应的实体对象。

  步骤34:将逻辑表达式映射到映射中的关系,例如将逻辑表达式的food_fit_food映射到映射中的食物之间的关系:food_fit_food。

  Step 35:结合实体链接和关系映射的结果,以语义三元组的形式表达问题,即将识别出的实体类型和实体二元组链接到知识图谱对应的实体或实体属性,并将得到的逻辑表达式映射到知识图中对应的实体关系,形成输入问题的语义三元组;根据语义三元组查询知识图谱上的信息以生成答案。

  例如,“土豆适合吃哪些食物?” 以“(what_food,food_fit_food,food:土豆)”的形式表示。

  步骤 36:将语义三元组更改为数据库上的查询语言。以图数据库为例,将上述三元组转换为密码语句“match(n:food)-[:food_fit_food]-(:food{name:"土豆网"})returnn.name”,执行查询语句在地图上。

  步骤37,查询后返回答案。对于知识图中检索到的知识,直接返回查询结果,对于无法从知识图中检索到的知识,答案为“本题的相关知识还没有收录”作为回答。

  尽管本发明已经在优选实施例中如上公开,但并不旨在限制本发明。本发明所属技术领域的普通技术人员可以在不脱离本发明的精神和范围的情况下进行各种变化和修改。因此,本发明的保护范围以权利要求所限定的为准。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线