CN109033135A - 一种面向软件项目知识图谱的自然语言查询方法及系统 - Google Patents
一种面向软件项目知识图谱的自然语言查询方法及系统 Download PDFInfo
- Publication number
- CN109033135A CN109033135A CN201810575729.XA CN201810575729A CN109033135A CN 109033135 A CN109033135 A CN 109033135A CN 201810575729 A CN201810575729 A CN 201810575729A CN 109033135 A CN109033135 A CN 109033135A
- Authority
- CN
- China
- Prior art keywords
- natural language
- reasoning
- subgraph
- knowledge mapping
- meta
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种面向软件项目知识图谱的自然语言查询方法及系统。本方法为:1)抽取软件项目知识图谱的元模型;2)将自然语言查询语句转换成知识图谱元模型上的一系列子图,称为推理子图,并对推理子图进行了度量;3)基于所述推理子图构造Cypher查询语句,并在软件项目知识图谱上执行,返回查询结果。本发明能够自动提取软件项目知识图谱的元模型,准确理解用户的自然语言问题并构造查询,具有通用性强、扩展性强的特点,提高了软件知识图谱的查询效率。
Description
技术领域
本发明涉及信息检索与数据库查询领域,尤其涉及一种面向软件项目知识图谱的自然语言查询方法及系统。
背景技术
数据库自然语言接口
数据库自然语言接口主要是指为关系数据库构造支持自然语言查询的接口。现有数据库自然语言接口的研究工作主要是围绕自然语言理解展开的,主要采用了基于句法分析将自然语言查询转换为形式化查询的方法、基于构造自然语言模板的方法、以及基于交互式算法提升查询效果的方法。
在基于句法分析的查询转换方面,典型的工作有[Li F 2016],其基本过程是:首先解析自然语言查询并构造其句法依存树,再通过结点匹配,规则扩展等方法进行查询转换,最后得到SQL查询语句。该类方法存在的问题是:需要用户输入的自然语言查询中的词语与数据库表中的某项信息(表名、属性名、记录等)明确对应,否则语法树不完整,无法得到正确答案。
在基于构造自然语言模板研究方面,代表性工作[Zheng W 2015]提出自动从已有问题中提取自然语言问题模板的方法,但其针对的是开放数据集,前提是从yahoo等社区获得大量相关问题。该类方法存在的问题是:软件项目知识图谱回答的问题数量不足,难以利用自动提取模板的方法。
在基于交互式算法研究方面,[A Freitas 2013]提出了基于交互式算法优化查询结果,设计用户的反馈方式以提高准确率,最直观的方法就是记录用户查询的习惯,根据历史查询信息用以辅助下一次的查询。该类方法存在的主要问题是:需要系统的使用比较频繁,以积累用户的使用历史。
图数据库Neo4j
Neo4j是一种高性能的nosql数据库,将数据以针对网络化优化的形式保存在磁盘上的。Neo4j的内核是一种极快的图形引擎,具有成熟数据库的所有特性,包括完全的事务特性与企业级的数据库的所有好处。
本发明所使用的软件项目知识图谱是利用属性图模型对软件知识进行表示的。传统的语义网用于表达较为稳定的领域知识,数据结构较为繁琐,适合做基于规则的推理,使用SparQL进行查询;属性图模型是与RDF类似,描述精度逊于RDF,但更加简单、灵活的数据模型。属性图模型已经有neo4j、Titan等成熟的图数据库。本发明所涉及的知识图谱即建立在neo4j图数据库之上。
现有软件项目知识图谱中只能支持Cypher查询方法,或者通过图遍历的方式访问知识图谱。形式化的cypher查询方法存在如下两个问题:
1)用户需掌握cypher语法,cypher查询较为复杂,学习成本过高;
2)用户需要很清楚软件项目知识图谱的元模型,即了解知识图谱内部有哪些知识实体,以及这些实体在图谱中的用词。
由于现有技术中并不存在一个基于neo4j数据库的软件项目知识图谱的自然语言查询方法。因此,研究一种高效的面向软件项目知识图谱的自然语言查询方法十分必要。
发明内容
本发明的目的是提供面向软件项目知识图谱的自然语言查询方法及系统,本方法及系统接受用户输入的自然语言查询,将其自动转换为系统可以理解的Cypher查询语句,并展现相应的查询结果。
针对上述目的,本发明所采用的技术方案为:
面向软件项目知识图谱的自然语言查询方法,其步骤包括:
1)抽取基于neo4j数据库的软件项目知识图谱的元模型。在已有的软件项目知识图谱生成工具构造出对应的知识图谱之后,对其进行进一步的提炼,得到元模型;
2)将自然语言查询语句转换成知识图谱元模型上的一系列子图,这些子图称为推理子图。其中,自然语言查询语句转化为推理子图包括以下步骤:
2-1)对自然语言查询语句进行单词切分、词性标注、停用词过滤等解析,得到自然语言查询语句的元素;
2-2)将上述自然语言查询语句的元素与知识图谱上的元素进行匹配;
2-3)对自然语言查询语句中出现的带标识的大段文本(这里的“带标识大段文本”具体是指用户查询问题时,事先规定将不可分割的文本用用双引号包括起来,本方法在解析时不会对其进行切分,而是直接按照双引号规则进行提取),构造基于lucene的倒排索引,利用建立的索引机制与知识图谱上的元素进行匹配;
2-4)计算上述步骤2-2)中匹配的各自然语言词语元素与知识图谱上各元素之间的最短编辑距离,对上述步骤2-2)得到的匹配结果进行排序和过滤;对于步骤2-3)的元素匹配结果,同样计算各索引元素和知识图谱上各元素之间的最短编辑距离,根据上述计算得到的最短编辑距离进行升序排序,人工设定阈值K,取排序前K的匹配结果;
2-5)对上述2-4)排序过滤后的元素,构造并度量推理子图。
3)将上述推理子图转化为Cypher查询语句,并在neo4j数据库的软件项目知识图谱上执行,最后返回用户查询结果。同时本发明以提供推理子图中间结果的方式,使用户可以理解形式化查询构造方法的前因后果,从而选择合适的候选结果,解决了许多查询及检索系统需要用户自行验证答案正确性的问题。
进一步地,步骤2-2)中自然语言查询语句中的元素与知识图谱上的元素进行匹配时,根据匹配优先级从高到低分别包括:
1)将上述自然语言查询语句解析后的元素与知识图谱的元模型的元素进行匹配,包括知识图谱元模型的关系类型元素匹配,实体类型元素匹配和属性类型元素匹配;
2)将上述自然语言查询语句解析后的元素与知识图谱的实体匹配;
3)将上述自然语言查询语句解析后的元素与知识图谱的属性匹配。
进一步地,步骤2-5)中构造并度量推理子图包括以下步骤:
1)对上述步骤2-4)中排序过滤后的元素进行候选集合构造;
2)对上述候选集合进行隐藏节点的扩展,具体做法是根据知识图谱的元模型的实体关系进行候选元素之间的关系推断,如果候选元素之间没有与元模型中元素之间的直接实体关系,则增加实体节点(即隐藏节点)扩展候选集合,从而使得候选元素之间存在间接关系;即如果一候选元素a与其他任一候选元素在元模型中均没有直接实体关系,
则增加一实体节点b扩展该候选集合,从而使得候选元素a、b之间存在间接关系;
3)对上述扩展后的候选集合,利用最短路径算法和最小生成树算法构造推理子图森林,并连接生成推理子图;
4)计算上述推理子图和自然语言查询语句之间的文本相似度、结构相似度和推理子图的复杂度,从而度量推理子图的正确性。其中,文本相似度的计算公式为:
Scoresimilar=ωsimilar×∑t∈token1-t.mapping.rank*0.1
其中,ωsimilar是自然语言元素候选集合在自然语言查询语句中占有的权重,rank是元素列表的排名,二者根据人工经验设定,token是自然语言元素的候选集合,t是自然语言词语元素,mapping是自然语言元素匹配的列表元素。
结构相似度的计算利用自然语言依存树与推理子图之间的元素位置距离进行计算得到;推理子图复杂性直接计算推理子图的实体数量与边数量进行衡量。
文本相似度与结构相似度与正确性呈正相关,推理子图复杂度与正确性呈负相关,根据人工经验,进行相应的权重值设定以及正确性阈值设定,从而判断推理子图的正确性。
进一步地,步骤3)中将上述推理子图转化为cypher查询语句包括以下两个步骤:
1)根据上述自然语言查询语句,找到用户关心的结果节点(在切分自然语句的过程中,得到标注的疑问词,例如,who what等用户关注结果),本发明中称之为关注点定位;
2)根据上述推理子图,构造相应的match子句、where子句和return子句,最后自动合并成完整的cypher查询语句。
更进一步地,构造match子句包括以下步骤:
第一步,从关注点开始从元模型中找到一条最长路径;
第二步,在子图中排除前一步找到的最长路径的边,继续第一步,如果关注点度数为零(即子图中没有边与关注点相连)转第三步;
第三步,选取度数最小的结点寻找最长路径,并从子图中排除,直到子图中没有边。
最后所有找到的路径将覆盖原有的推理子图。
构造where子句方法如下:
Where子句对应了推理子图中所有表示属性值的结点,即每个属性值就是对一个实体的过滤条件,本方法将Where子句中每个实体对应的属性值添加到Where子句对应实体中,从而将属性值直接转化为Where子句。
构造return子句方法如下:
本方法在上述步骤1)中已经提供了推理子图关注点定位的方法。关注点即提问者想要的问题答案的实体类型,故而其对应的就是Return子句。当关注点是一个属性时,Return子句返回属性即可,如果不是属性值即为其他实体类型,直接返回实体类型。
面向软件项目知识图谱的自然语言查询系统,包括知识图谱元模型生成模块、自然语言查询语句的解析与匹配模块、推理子图的生成和度量模块、形式化查询转换模块和结果可视化模块。
所述知识图谱元模型生成模块在基于neo4j数据库的知识图谱的基础上,抽取出更抽象的实体类型元素与实体类型关系元素,并根据抽象出的实体类型关系建立实体类型元素的关联关系,构造出知识图谱元模型。
所述自然语言问题的解析与匹配模块将用户输入的自然语言问题进行分词、词性解析、去停用词等过程;基于启发式规则,匹配问题中的词语与知识图谱中的元素;同时基于倒排索引机制,匹配问题中的标识文本。最后得到一个词语匹配集合。
所述推理子图的生成和度量模块利用最短路算法和最小生成树算法生成候选推理子图集合。基于推理子图的度量函数(文本相似度,结构相似度和复杂度的综合)进行判断,并依据计算出的度量值得到最优的推理子图。
所述形式化查询转换模块通过定位推理子图的关注点,利用最长链覆盖算法,将推理子图转换为Cypher查询语言。
所述可视化结果展示模块。提供一个可视化结果展示界面:展示每个候选查询所对应的推理子图,供提问者判断转换的Cypher查询是否正确;同时将Cypher查询运行结果可视化,将推理子图和查询实体结合,直观展示实体和问题中概念的关系。
进一步地,所述自然语言查询语句解析与匹配模块包括自然语言解析模块和知识图谱元素匹配模块;其中知识图谱元素匹配模块包括自然语言元素与知识图谱元素匹配模块、自然语言带标识文本与知识图谱元素匹配模块和匹配结果排序过滤模块:
所述自然语言解析模块对自然语言查询语句进行单词切分,词性标注和停用词过滤;
所述自然语言元素与知识图谱元素匹配模块用于对上述解析后的自然语言元素与知识图谱的元素进行匹配,构成匹配元素集合;
所述自然语言带标识文本与知识图谱元素匹配模块利用lucene构造的倒排索引方法对自然语言查询语句的大段文本进行知识图谱元素的匹配,构成匹配元素集合;
所述匹配结果排序过滤模块调用度量匹配相似度的函数similar(),根据该函数的返回值确定每个匹配结果的排名rank,记录在NLPMapping的rank属性中;
更进一步地,本发明在NLPMapping类中实现了rank()函数,将匹配结果基于相似度排序,并保留top10的结果。这里使用的相似度算法为最小编辑距离和最长公共子串算法。
进一步地,所述推理子图的生成和度量模块包括候选集合模块、隐藏节点扩展模块、子图连接模块和推理子图度量模块:
所述候选集合模块采用深度优先搜索的方式,将每个自然语言解析生成的NLPToken的候选匹配结果在知识图谱元素列表中逐一枚举,构造出一个候选集合;NLPToken是一个数据结构,保存自然语言解析得到的词语元素(即候选匹配结果)。
所述隐藏节点扩展模块调用EdgeMappingSchema类的process()方法,枚举候选集合中的NLPEdgeSchemaMapping(扩展隐藏节点使用的方法类名),其对应了推理子图中的NLPRelation(类名和数据结构)。通过枚举的方法,将每条NLPRelation的两端添加对应类型的隐藏结点;
所述子图连接模块调用LinkAllNodes类中的process()方法中将子图连接问题抽象为一个最短路径+最小生成树问题,实现了将一个不连通的推理子图为输入,最后给出一个最优的连通图;
所述推理子图度量模块调用Evaluator类中的evaluate()方法具体实现了度量逻辑,判断推理子图的正确性。
进一步地,所述形式化查询转换模块包括关注点定位模块和cypher查询语句转化模块:
所述关注点定位模块基于一系列启发式规则定位关注点。在InferenceLinksGenerator类的findStart()方法中实现了该功能,其中,启发式规则如下:
规则1:如果结点对应的自然语言是疑问词,则该结点是一个关注点。
规则2:如果结点匹配的是NLPAttributeSchemaMapping,则该结点是一个关注点。
规则3:如果结点匹配的是NLPVertexSchemaMapping,且结点的入度和出度和为1,则该结点是一个关注点。
规则4:如果结点匹配的是NLPVertexSchemaMapping,则该结点是一个关注点。
符合4条规则的任意一条即为关注点候选,其中规则1~4的优先级从高到底排列,在符合同一优先级规则的情况下,结点对应自然语言文本位置靠前的优先级较高。
所述cypher查询语句模块对Match、Where和Return子部分分别进行构造,在CypherGenerator类中的generate()方法中实现了相关的功能。
本发明的有益效果在于:
本发明提供面向软件项目知识图谱的自然语言查询方法及系统,该系统首先抽取软件项目知识图谱的元模型,通过自然语言查询语句的解析与匹配模块对自然语言进行解析,并将解析后的NLPTokens和知识图谱上的元素进行匹配,对得到的匹配结果进行排序与过滤,得到元素的候选集合;之后通过推理子图生成和度量模块对候选集合进行推理子图森林的构造,扩展出推理必要的隐藏节点,生成推理子图,并计算推理子图候选结果与自然语言查询语句之间的文本相似度和结构相似度,并计算推理子图自身的结构复杂度,从而度量推理子图的正确性;通过推理子图转化为cypher查询语句模块将上述推理子图转化为形式化的cypher查询语句;通过可视化结果展示模块将得到的cypher语句进行执行,并展示出结果反馈给用户。
本发明的优点具体包括:
1.能够自动提取软件项目知识图谱的元模型,通用性强,扩展性强;
2.能够对自然语言查询语句进行形式化的cypher查询语句的转化,提供了自然语言的数据库查询接口;
3.有效地降低了知识图谱使用者的学习成本,大大提高了开发效率。
附图说明
图1为本发明提供的面向软件项目知识图谱的自然语言查询系统框图。
图2为本发明提供的知识图谱描述性标识文本匹配模块流程图。
图3为本发明提供的隐藏结点扩展模块流程图。
图4为本发明提供的推理子图连接模块流程图。
具体实施方式
为使本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图作详细说明如下:
本发明提供面向软件项目知识图谱的自然语言查询系统,如图1所示,该系统包括索引构造与数据存储层、自然语言解析层、推理和度量层和子图展示和查询层。
所述索引构造与数据存储层对基于neo4j的软件项目知识图谱进行遍历与解析,提取出其中的数据元模型。其实现步骤如下:
1)完整遍历知识图谱,存储其中所有的实体,记录所有实体类型作为元模型的结点集合;
2)遍历知识图谱中所有关系,在每一关系两端的实体类型以该关系在元模型中建立两实体类型之间的关联;
最后得到一个以实体类型为结点集合、以关系类型为边集合的图,即为知识图谱的元模型。同时,基于lucene的相关方法,对软件项目知识图谱上的元素进行倒排索引的构建。
所述自然语言解析层将用户输入的自然语言问题进行分词、词性解析、去停用词等过程;基于启发式规则,匹配问题中的词语与知识图谱中的元素;同时基于倒排索引机制,匹配问题中的标识文本;最后得到一个词语匹配图。
下面给出自然语言解析层所涉及的类名术语及数据结构解释:
ExtractModel:实现了抽取元模型的主要功能,主要实现在pipeline()方法中。
GraphSchema:存储知识图谱元模型的相关信息。
Graph:存储知识图谱中各类信息,包含实体、关系和属性。
GraphEdgeType:元模型边类型类,包含了知识图谱中每种边类型的相关信息。
GraphVertexType:元模型实体类型类,包含了知识图谱中每种实体类型的相关信息。
GraphAttributeType:元模型属性类型类,包含了知识图谱中每种实体类型包含的属性类型相关信息。
GraphSchemaKeywords:知识图谱关键词类,记录了知识图谱元模型中每个类型实体中可以唯一确定其实体的属性。
Vertex:知识图谱实体类,记录了知识图谱中每个实体的相关信息,包括其属性以及与其相关联的关系。
Query类:每个自然语言问题对应的实体。每次查询都在一个Query实体的作用域下。
NLPToken类:问题中的每个词语的实体类,定义了词语的各种属性。
NLPMapping类:实体匹配类,定义了每个NLPToken和知识图谱内部元素的匹配结果。
StanfordParser类:调用了StanfordParser开源工具,实现了从一个自然语言问题提取出每个词语的功能,并且解析了每个词语的词性和主被动态。最后以NLPToken类型进行存储。
StopWords类:定义了软件领域和自然语言领域的停用词表,并提供对外接口:isAStopword()。
SynonymJson类:同义词表类,导入定义好的同义词表,并提供同义词查询接口。
进一步地,自然语言解析模块中的TokensGernerator类中实现了generator()方法,该方法实现了自然语言解析的全部工作。具体步骤如下:
1)将标识文本进行文本替换,替换为“Token_n”;Token_n为自然语言集合的标识符,即n个自然语言词语组成的集合;
2)利用StanfordParser进行解析,得到每个Token的相关属性;
3)构造NLPToken实体,存储每个Token的信息。
进一步地,将上述得到的NLPToken集合与知识图谱元素进行匹配,得到NLPMapping集合,得到候选的词语匹配集合。知识图谱元素匹配模块在TokenMapping类中实现了process()方法,该方法实现了元素匹配的全部工作。即候选的词语匹配集合中的每一词语必须与知识图谱中的一对应元素具有匹配的关系类型、实体类型、实体名称、属性类型和属性;具体步骤如下:
1)将每个NLPToken和知识图谱内的关系类型匹配;
2)将每个NLPToken和知识图谱内的实体类型匹配;
3)将每个NLPToken和知识图谱内的实体匹配;
4)将每个NLPToken和知识图谱内的属性类型匹配,根据上下文中的实体和实体匹配信息进行过滤,即匹配的属性类型必须隶属于一个实体;
5)将每个NLPToken和知识图谱内的属性匹配。
更进一步地,知识图谱匹配模块在自然语言问题中提供了标识描述性文本的方法,如图2所示,具体的步骤如下:
1)读取知识图谱内的实体属性构建Lucene倒排索引。其中包含每个属性的类型、属性值、和所属实体以及实体类型;
2)利用倒排索引查询自然语言查询语句中的标识文本对应的属性,并记录下所属的实体ID;
3)将自然语言查询语句中和该标识文本距离最近的Token标记为步骤2中找到的实体ID。
所述推理和度量层利用最短路算法和最小生成树算法生成候选推理子图集合。基于推理子图的度量函数进行剪枝,并依据计算出的度量值得到最优的推理子图,最后将推理子图转化为cypher查询语句。
下面给出推理和度量层所涉及的类名与数据结构解释:
NLPVertexMapping类:定义了问题中每个词语和知识图谱内实体名的候选匹配结果。
NLPVertexSchemaMapping类:问题中词语与知识图谱内实体类型匹配的结果。
NLPAttributeMapping类:问题中词语与知识图谱内实体属性匹配的结果。
NLPAttributeSchemaMapping类:问题中词语和知识图谱中属性类型匹配的结果。
NLPEdgeSchemaMapping类:问题中词语和知识图谱中关系类型匹配结果。
NLPNoticeMapping类:问题中的标识文本和知识图谱中的属性值的匹配结果。
LuceneSearchResult类:定义了Lucene索引的查询结果数据结构。其中index()方法执行索引构建方法。Query()方法实现了基于Lucene的检索方法。
NLPNode:存储推理子图实例中的结点信息,一个NLPNode对应一个知识图谱实体或实体类型。
NLPRelation:存储推理子图实例中边的相关信息,推理子图以邻接表的形式存储。每个NLPRelation包含其对应的知识图谱内的关系信息。
GraphEdgeType:存储了知识图谱关系类型的信息。
GraphPath:推理子图中的路径信息,即两个点之间的多跳路径,由多个GraphEdgeType和GraphVertexType组成。
NLPInferenceLink:推理链类,记录了一个推理链的详细结构信息。
NLPInferenceNode:推理链结点类,记录了推理链结点的详细信息,其与NLPNode具有一一对应的关系。
进一步地,所述推理和度量层包括候选集合模块、隐藏节点扩展模块、子图连接模块、推理子图度量模块和cypher查询语句生成模块:
所述候选集合模块采用深度优先搜索的方式构造候选集合。将每个NLPToken的候选匹配结果逐一枚举,构造出一个候选集合。具体步骤如下:
1)逐一枚举自然语言问题中的NLPToken;
2)按序枚举每个NLPToken对应的匹配结果NLPMapping;
3)将枚举的NLPMapping结果集合作为一个候选;
4)最后得到一个由所有NLPMapping不同组合方式得到的候选集合。
所述隐藏节点扩展模块枚举候选集合中的NLPEdgeSchemaMapping,其对应了推理子图中的NLPRelation。通过枚举的方法,将每条NLPRelation的两端添加对应类型的结点,举例而言e<S,E>一条边是e类型的NLPRelation,两端的实体类型对应的是S和E,e添加隐藏结点的方式有四种,分别是e<S,E>,e<null,E>,e<S,null>,e<null,null>,其中null即为不添加隐藏结点。可参照图3,具体的扩展步骤如下:
1)枚举前文得到的候选集合S;
2)枚举集合S中的NLPEdgeSchemaMapping类edge(类名和数据结构);edge是List<GraphEdgeType>,一个存储类的列表数据结构,GraphEdgeType是存储了知识图谱关系类型的信息。
3)对每个edge利用深度遍历的方式用四种方式添加隐藏结点;
4)得到扩展隐藏结点的候选子图集合S’。
所述推理子图连接模块在LinkAllNodes类中的process()方法中将问题抽象成最小斯坦纳树生成问题,并简化为最短路+最小生成树的问题,本模块以一个不连通的推理子图为输入,最后给出一个最优的连通图。可参照图4所示,具体步骤如下:
1)输入上述步骤的不连通的侯选子图集合S';
2)计算S'的连通分量,得到连通分量集合L;
3)将每个连通分量视为一个结点构造图,记为G’,利用floyd算法计算G’中每对结点之间的距离,得到距离矩阵dis;
4)根据距离矩阵dis,利用prim算法计算最小生成树T;
5)通过将最小生成树T中的边添加到S'中得到连通的推理子图,记为G”,实现将生成树与推理子图进行合并的目的。
所述推理子图度量模块在Evaluator类中的evaluate()方法具体实现了度量逻辑。具体的计算模块如下:
mappingNum:计算推理子图中正确匹配自然语言的词语个数;
offsetValue:通过计算推理子图结点的相对位置和自然语言中的相对位置,评估结构相似度;
graphComplex:通过计算推理子图中隐藏结点和隐藏边的数量计算推理子图的复杂度;
linkEntity:计算推理子图中各种类型边的数量辅助度量子图的复杂度;
similar:计算推理子图结点和自然语言的文本相似度。
所述cypher查询语句生成模块主要包括关注点定位模块和cypher查询语句构造模块,具体实现步骤如下:
1)基于一系列启发式规则定位关注点。在InferenceLinksGenerator类的findStart()方法中实现了该功能。其中依赖了以下规则:
规则1:如果结点对应的自然语言是疑问词,则该结点是一个关注点;
规则2:如果结点匹配的是NLPAttributeSchemaMapping,则该结点是一个关注点;
规则3:如果结点匹配的是NLPVertexSchemaMapping,且结点的入度和出度和为1,则该结点是一个关注点;
规则4:如果结点匹配的是NLPVertexSchemaMapping,则该结点是一个关注点。
2)Cypher查询语句构造模块对Match、Where和Return子部分分别进行构造,在CypherGenerator类中的generate()方法中实现了相关的功能。具体有以下几个步骤:
2-1)实体结点编号:Cypher查询需要表示推理子图的结构,每个实体结点在Cypher查询中都需要一个唯一标识的占位符。例如一个Method结点,编号为x,则其占位符为nx;
2-2)Return子句构造:关注点如果是NLPAttributeSchema,那么Return子句将返回一个实体的属性,子句举例如下:return n2.id,这里n2代表的是在推理子图中编号为2的实体结点,即自然语言问题需要返回的是符合条件的n2结点的id属性;
2-3)Where子句构造:在自然语言问题中,有些词,例如IndexWriter一个词表达了一个完整的实体含义;有些Class that…则需要从句修饰。本文对IndexWriter这类直接表述的实体,在where子句中添加:n3.name=IndexWriter,这里n3是IndexWriter对应的结点,name是Class类型结点的属性;
2-4)Match子句构造:通过上述已经得到了可以覆盖全推理子图的推理链,每条推理链都可以生成一个match子句。举例如下:(n0:JiraIssue)-[:apiNameMention]->(n1:Method),该例表示的是一个长度为2的推理链,从一个JiraIssue类型的结点n0到Method类型的结点n1,通过apiNameMention类型的关系相连。
所述子图展示和查询层使用开源工具D3.js实现推理子图的可视化,D3允许绑定任意数据到DOM,然后将数据驱动转换应用到Document中。由于本发明工具需要在同一个页面中展示多个推理子图,本发明基于ReactJs框架,设计并实现了一个可复用的ReactJs构件,GraphPanel.tsx。
以上实施仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。
Claims (10)
1.一种面向软件项目知识图谱的自然语言查询方法,其步骤包括:
1)抽取软件项目知识图谱的元模型;
2)将自然语言查询语句转换成知识图谱元模型上的一系列子图,称为推理子图;
3)将所述推理子图转化为查询语句,并在软件项目知识图谱上执行,返回查询结果。
2.如权利要求1所述的方法,其特征在于,得到所述推理子图的方法为:
2-1)对自然语言查询语句进行解析,得到自然语言查询语句的元素;
2-2)将各所述元素与知识图谱上的元素进行匹配;
2-3)对自然语言查询语句中设定的不可分割文本,构造基于lucene的倒排索引,利用建立的索引机制与知识图谱上的元素进行匹配;
2-4)计算步骤2-2)中匹配的各自然语言词语元素与知识图谱上各元素之间的最短编辑距离,计算步骤2-3)得到的各匹配元素和知识图谱上各元素之间的最短编辑距离;根据最短编辑距离对上述匹配结果进行排序和过滤,取排序前K的匹配结果;
2-5)对上述2-4)排序过滤后的K个元素,构造并度量推理子图。
3.如权利要求2所述的方法,其特征在于,步骤2-2)中,各所述元素与知识图谱上的元素进行匹配,包括:将自然语言查询语句解析后的元素与所述元模型的元素进行匹配;将自然语言查询语句解析后的元素与知识图谱的实体匹配;将自然语言查询语句解析后的元素与知识图谱的属性匹配。
4.如权利要求3所述的方法,其特征在于,将自然语言查询语句解析后的元素与所述元模型的元素进行匹配,包括自然语言查询语句解析后的元素与元模型的关系类型元素匹配、自然语言查询语句解析后的元素与元模型的实体类型元素匹配、自然语言查询语句解析后的元素与元模型的属性类型元素匹配。
5.如权利要求2所述的方法,其特征在于,构造并度量所述推理子图的方法为:
51)将排序过滤后的元素作为候选元素,得到一候选集合;对该候选集合进行扩展,即根据元模型的实体关系进行候选元素之间的关系推断,如果一候选元素a与其他任一候选元素在元模型中均没有直接实体关系,则增加一实体节点b扩展该候选集合,从而使得候选元素a、b之间存在间接关系;
52)对上述扩展后的候选集合,利用最短路径算法和最小生成树算法构造推理子图森林,并连接生成推理子图;
53)计算上述推理子图和自然语言查询语句之间的文本相似度、结构相似度和推理子图的复杂度,从而度量推理子图的正确性。
6.如权利要求5所述的方法,其特征在于,所述文本相似度为SCoreSimilar=ωSimilar×∑t∈token1-t.mapping.rank*0.1;其中,ωsimilar是自然语言元素候选集合在自然语言查询语句中占有的权重,token是自然语言元素的候选集合,t是自然语言词语元素,mapping是自然语言元素匹配的列表元素,rank是元素列表的排名;利用自然语言依存树与推理子图之间的元素位置距离进行计算得到所述结构相似度;根据推理子图的实体数量与边数量得到所述推理子图的复杂性。
7.如权利要求1所述的方法,其特征在于,步骤1)中,所述软件项目知识图谱为基于neo4j数据库的软件项目知识图谱;步骤3)中,将所述推理子图转化为Cypher查询语句,并在neo4j数据库的软件项目知识图谱上执行,最后返回查询结果。
8.如权利要求7所述的方法,其特征在于,将所述推理子图转化为Cypher查询语句的方法为:根据该自然语言查询语句的解析结果确定出查询关注点,然后根据所述推理子图,构造与查询关注点相应的match子句、where子句和return子句,并合并成完整的cypher查询语句。
9.一种面向软件项目知识图谱的自然语言查询系统,其特征在于,包括元模型生成模块、自然语言查询语句的解析与匹配模块、推理子图的生成和度量模块、形式化查询转换模块和结果可视化模块;
所述元模型生成模块,用于抽取软件项目知识图谱的元模型;
所述自然语言问题的解析与匹配模块,用于对用户输入的自然语言查询语句进行解析,得到自然语言查询语句的元素;
所述推理子图的生成和度量模块,用于将自然语言查询语句转换成知识图谱元模型上的一系列子图,即推理子图;
所述形式化查询转换模块,用于将所述推理子图转化为查询语句;
所述可视化结果展示模块,用于提供一个可视化结果展示界面。
10.如权利要求9所述的系统,其特征在于,所述推理子图的生成和度量模块生成所述推理子图的方法为:将解析自然语言查询语句得到的各元素与知识图谱上的元素进行匹配,然后计算匹配的各自然语言词语元素与知识图谱上各元素之间的最短编辑距离;对自然语言查询语句中设定的不可分割文本,构造基于lucene的倒排索引,利用建立的索引机制与知识图谱上的元素进行匹配,然后计算得到的各匹配元素和知识图谱上各元素之间的最短编辑距离;然后根据最短编辑距离对上述匹配结果进行排序和过滤,取排序前K的匹配结果;对排序过滤后的K个元素,构造并度量推理子图。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810575729.XA CN109033135A (zh) | 2018-06-06 | 2018-06-06 | 一种面向软件项目知识图谱的自然语言查询方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810575729.XA CN109033135A (zh) | 2018-06-06 | 2018-06-06 | 一种面向软件项目知识图谱的自然语言查询方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109033135A true CN109033135A (zh) | 2018-12-18 |
Family
ID=64612411
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810575729.XA Pending CN109033135A (zh) | 2018-06-06 | 2018-06-06 | 一种面向软件项目知识图谱的自然语言查询方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109033135A (zh) |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109491995A (zh) * | 2018-12-25 | 2019-03-19 | 苏宁易购集团股份有限公司 | 基于知识图谱查询金融异常数据的方法及系统 |
CN109885621A (zh) * | 2019-01-07 | 2019-06-14 | 北京科技大学 | 一种数据存储实体关系图提取方法 |
CN109992786A (zh) * | 2019-04-09 | 2019-07-09 | 杭州电子科技大学 | 一种语义敏感的rdf知识图谱近似查询方法 |
CN110019687A (zh) * | 2019-04-11 | 2019-07-16 | 宁波深擎信息科技有限公司 | 一种基于知识图谱的多意图识别系统、方法、设备及介质 |
CN110119404A (zh) * | 2019-04-12 | 2019-08-13 | 杭州量之智能科技有限公司 | 一种基于自然语言理解的智能取数系统及其方法 |
CN110609904A (zh) * | 2019-09-11 | 2019-12-24 | 深圳众赢维融科技有限公司 | 图数据库数据处理方法、装置、电子设备及存储介质 |
CN110795456A (zh) * | 2019-10-28 | 2020-02-14 | 北京百度网讯科技有限公司 | 图谱的查询方法、装置、计算机设备以及存储介质 |
CN110990536A (zh) * | 2019-12-06 | 2020-04-10 | 重庆邮电大学 | 一种基于bert和知识图谱感知的cql生成方法 |
CN111061832A (zh) * | 2019-12-05 | 2020-04-24 | 电子科技大学广东电子信息工程研究院 | 基于开放域信息抽取的人物行为抽取方法 |
CN111130877A (zh) * | 2019-12-23 | 2020-05-08 | 国网江苏省电力有限公司信息通信分公司 | 一种基于nlp的网络日志处理系统及方法 |
CN111241252A (zh) * | 2020-04-17 | 2020-06-05 | 成都数联铭品科技有限公司 | 一种问答方法及问答装置、电子设备、存储介质 |
CN111475658A (zh) * | 2020-06-12 | 2020-07-31 | 北京百度网讯科技有限公司 | 知识表示学习方法、装置、设备以及存储介质 |
CN111611419A (zh) * | 2019-02-26 | 2020-09-01 | 阿里巴巴集团控股有限公司 | 一种子图识别方法及装置 |
CN111831911A (zh) * | 2020-07-16 | 2020-10-27 | 北京奇艺世纪科技有限公司 | 查询信息的处理方法、装置、存储介质和电子装置 |
CN111898760A (zh) * | 2020-07-30 | 2020-11-06 | 厦门渊亭信息科技有限公司 | 一种基于知识图谱路径分析的知识推理方法及系统 |
CN112036150A (zh) * | 2020-07-07 | 2020-12-04 | 远光软件股份有限公司 | 电价政策条款解析方法、存储介质及计算机 |
CN112069791A (zh) * | 2019-05-22 | 2020-12-11 | 谷松 | 以语用为核心的自然语言文本辅助知识库书写和检测系统与方法 |
CN112100406A (zh) * | 2020-11-11 | 2020-12-18 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、设备以及介质 |
CN112328800A (zh) * | 2019-08-05 | 2021-02-05 | 上海交通大学 | 自动生成编程规范问题答案的系统及方法 |
CN113010663A (zh) * | 2021-04-26 | 2021-06-22 | 东华大学 | 一种基于工业认知图谱的自适应推理问答方法和系统 |
CN113361716A (zh) * | 2021-06-25 | 2021-09-07 | 中国电子科技集团公司第十五研究所 | 威胁推理规则构建方法及装置 |
CN114297350A (zh) * | 2021-06-07 | 2022-04-08 | 北京大学 | 一种面向自然语言的城市领域知识模型查询方法和装置 |
CN114579712A (zh) * | 2022-05-05 | 2022-06-03 | 中科雨辰科技有限公司 | 基于动态模型的文本属性提取匹配方法 |
CN114817558A (zh) * | 2022-04-07 | 2022-07-29 | 杭州半云科技有限公司 | 一种构建子图模型进行图谱查询的方法 |
CN116150437A (zh) * | 2023-04-12 | 2023-05-23 | 阿里巴巴(中国)有限公司 | 图查询方法 |
CN117059229A (zh) * | 2023-10-09 | 2023-11-14 | 北京健康有益科技有限公司 | 糖尿病配餐方案生成方法、装置、电子设备以及存储介质 |
CN118132681A (zh) * | 2024-04-30 | 2024-06-04 | 支付宝(杭州)信息技术有限公司 | 医疗知识图谱查询中对多个查询结果的排序方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103927360A (zh) * | 2014-04-18 | 2014-07-16 | 北京大学 | 基于图模型的软件项目语义信息表示及检索方法 |
CN106897273A (zh) * | 2017-04-12 | 2017-06-27 | 福州大学 | 一种基于知识图谱的网络安全动态预警方法 |
CN107193882A (zh) * | 2017-04-27 | 2017-09-22 | 东南大学 | RDF数据上基于图匹配的why‑not查询回答方法 |
-
2018
- 2018-06-06 CN CN201810575729.XA patent/CN109033135A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103927360A (zh) * | 2014-04-18 | 2014-07-16 | 北京大学 | 基于图模型的软件项目语义信息表示及检索方法 |
CN106897273A (zh) * | 2017-04-12 | 2017-06-27 | 福州大学 | 一种基于知识图谱的网络安全动态预警方法 |
CN107193882A (zh) * | 2017-04-27 | 2017-09-22 | 东南大学 | RDF数据上基于图匹配的why‑not查询回答方法 |
Non-Patent Citations (1)
Title |
---|
李文鹏 等: "面向开源软件项目的软件知识图谱构建方法", 《计算机科学与探索》 * |
Cited By (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109491995A (zh) * | 2018-12-25 | 2019-03-19 | 苏宁易购集团股份有限公司 | 基于知识图谱查询金融异常数据的方法及系统 |
CN109885621A (zh) * | 2019-01-07 | 2019-06-14 | 北京科技大学 | 一种数据存储实体关系图提取方法 |
CN109885621B (zh) * | 2019-01-07 | 2020-12-29 | 北京科技大学 | 一种数据存储实体关系图提取方法 |
CN111611419A (zh) * | 2019-02-26 | 2020-09-01 | 阿里巴巴集团控股有限公司 | 一种子图识别方法及装置 |
CN111611419B (zh) * | 2019-02-26 | 2023-06-20 | 阿里巴巴集团控股有限公司 | 一种子图识别方法及装置 |
CN109992786A (zh) * | 2019-04-09 | 2019-07-09 | 杭州电子科技大学 | 一种语义敏感的rdf知识图谱近似查询方法 |
CN109992786B (zh) * | 2019-04-09 | 2022-11-25 | 杭州电子科技大学 | 一种语义敏感的rdf知识图谱近似查询方法 |
CN110019687A (zh) * | 2019-04-11 | 2019-07-16 | 宁波深擎信息科技有限公司 | 一种基于知识图谱的多意图识别系统、方法、设备及介质 |
CN110019687B (zh) * | 2019-04-11 | 2021-03-23 | 宁波深擎信息科技有限公司 | 一种基于知识图谱的多意图识别系统、方法、设备及介质 |
CN110119404B (zh) * | 2019-04-12 | 2021-10-08 | 杭州量之智能科技有限公司 | 一种基于自然语言理解的智能取数系统及其方法 |
CN110119404A (zh) * | 2019-04-12 | 2019-08-13 | 杭州量之智能科技有限公司 | 一种基于自然语言理解的智能取数系统及其方法 |
CN112069791B (zh) * | 2019-05-22 | 2024-04-26 | 谷松 | 以语用为核心的自然语言文本辅助知识库书写和检测系统与方法 |
CN112069791A (zh) * | 2019-05-22 | 2020-12-11 | 谷松 | 以语用为核心的自然语言文本辅助知识库书写和检测系统与方法 |
CN112328800A (zh) * | 2019-08-05 | 2021-02-05 | 上海交通大学 | 自动生成编程规范问题答案的系统及方法 |
CN110609904A (zh) * | 2019-09-11 | 2019-12-24 | 深圳众赢维融科技有限公司 | 图数据库数据处理方法、装置、电子设备及存储介质 |
CN110795456B (zh) * | 2019-10-28 | 2022-06-28 | 北京百度网讯科技有限公司 | 图谱的查询方法、装置、计算机设备以及存储介质 |
CN110795456A (zh) * | 2019-10-28 | 2020-02-14 | 北京百度网讯科技有限公司 | 图谱的查询方法、装置、计算机设备以及存储介质 |
CN111061832A (zh) * | 2019-12-05 | 2020-04-24 | 电子科技大学广东电子信息工程研究院 | 基于开放域信息抽取的人物行为抽取方法 |
CN110990536A (zh) * | 2019-12-06 | 2020-04-10 | 重庆邮电大学 | 一种基于bert和知识图谱感知的cql生成方法 |
CN111130877A (zh) * | 2019-12-23 | 2020-05-08 | 国网江苏省电力有限公司信息通信分公司 | 一种基于nlp的网络日志处理系统及方法 |
CN111130877B (zh) * | 2019-12-23 | 2022-10-04 | 国网江苏省电力有限公司信息通信分公司 | 一种基于nlp的网络日志处理系统及方法 |
CN111241252B (zh) * | 2020-04-17 | 2020-08-14 | 成都数联铭品科技有限公司 | 一种问答方法及问答装置、电子设备、存储介质 |
CN111241252A (zh) * | 2020-04-17 | 2020-06-05 | 成都数联铭品科技有限公司 | 一种问答方法及问答装置、电子设备、存储介质 |
CN111475658A (zh) * | 2020-06-12 | 2020-07-31 | 北京百度网讯科技有限公司 | 知识表示学习方法、装置、设备以及存储介质 |
US11687718B2 (en) | 2020-06-12 | 2023-06-27 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Method, apparatus, device, and storage medium for learning knowledge representation |
CN112036150A (zh) * | 2020-07-07 | 2020-12-04 | 远光软件股份有限公司 | 电价政策条款解析方法、存储介质及计算机 |
CN111831911A (zh) * | 2020-07-16 | 2020-10-27 | 北京奇艺世纪科技有限公司 | 查询信息的处理方法、装置、存储介质和电子装置 |
CN111831911B (zh) * | 2020-07-16 | 2023-07-07 | 北京奇艺世纪科技有限公司 | 查询信息的处理方法、装置、存储介质和电子装置 |
CN111898760A (zh) * | 2020-07-30 | 2020-11-06 | 厦门渊亭信息科技有限公司 | 一种基于知识图谱路径分析的知识推理方法及系统 |
CN112100406A (zh) * | 2020-11-11 | 2020-12-18 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、设备以及介质 |
CN113010663A (zh) * | 2021-04-26 | 2021-06-22 | 东华大学 | 一种基于工业认知图谱的自适应推理问答方法和系统 |
CN114297350B (zh) * | 2021-06-07 | 2024-08-06 | 北京大学 | 一种面向自然语言的城市领域知识模型查询方法和装置 |
CN114297350A (zh) * | 2021-06-07 | 2022-04-08 | 北京大学 | 一种面向自然语言的城市领域知识模型查询方法和装置 |
CN113361716A (zh) * | 2021-06-25 | 2021-09-07 | 中国电子科技集团公司第十五研究所 | 威胁推理规则构建方法及装置 |
CN113361716B (zh) * | 2021-06-25 | 2022-02-08 | 中国电子科技集团公司第十五研究所 | 威胁推理规则构建方法及装置 |
CN114817558B (zh) * | 2022-04-07 | 2024-05-10 | 杭州半云科技有限公司 | 一种构建子图模型进行图谱查询的方法 |
CN114817558A (zh) * | 2022-04-07 | 2022-07-29 | 杭州半云科技有限公司 | 一种构建子图模型进行图谱查询的方法 |
CN114579712A (zh) * | 2022-05-05 | 2022-06-03 | 中科雨辰科技有限公司 | 基于动态模型的文本属性提取匹配方法 |
CN114579712B (zh) * | 2022-05-05 | 2022-07-15 | 中科雨辰科技有限公司 | 基于动态模型的文本属性提取匹配方法 |
CN116150437B (zh) * | 2023-04-12 | 2023-09-26 | 阿里巴巴(中国)有限公司 | 图查询方法 |
CN116150437A (zh) * | 2023-04-12 | 2023-05-23 | 阿里巴巴(中国)有限公司 | 图查询方法 |
CN117059229A (zh) * | 2023-10-09 | 2023-11-14 | 北京健康有益科技有限公司 | 糖尿病配餐方案生成方法、装置、电子设备以及存储介质 |
CN118132681A (zh) * | 2024-04-30 | 2024-06-04 | 支付宝(杭州)信息技术有限公司 | 医疗知识图谱查询中对多个查询结果的排序方法和装置 |
CN118132681B (zh) * | 2024-04-30 | 2024-09-13 | 支付宝(杭州)信息技术有限公司 | 医疗知识图谱查询中对多个查询结果的排序方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109033135A (zh) | 一种面向软件项目知识图谱的自然语言查询方法及系统 | |
KR100533810B1 (ko) | 백과사전 질의응답 시스템의 지식베이스 반자동 구축 방법 | |
Szekely et al. | Connecting the smithsonian american art museum to the linked data cloud | |
US10853357B2 (en) | Extensible automatic query language generator for semantic data | |
JP4451624B2 (ja) | 情報体系対応付け装置および対応付け方法 | |
CN106997399A (zh) | 一种基于数据图谱、信息图谱、知识图谱和智慧图谱关联架构的分类问答系统设计方法 | |
CN106776797A (zh) | 一种基于本体推理的知识问答系统及其工作方法 | |
Jung et al. | Automated conversion from natural language query to SPARQL query | |
CN106844693A (zh) | 一种openEHR Template到关系数据库的转换方法 | |
CN112380325A (zh) | 基于联合知识嵌入模型和事实记忆网络的知识图谱问答系统 | |
CN111949855A (zh) | 一种基于知识图谱的工程技经知识检索平台及其方法 | |
Rinaldi et al. | A matching framework for multimedia data integration using semantics and ontologies | |
Chen et al. | A structure-function knowledge extraction method for bio-inspired design | |
CN113987139A (zh) | 一种基于知识图谱的航空发动机fadec系统软件缺陷案例可视化查询管理系统 | |
Sun | A natural language interface for querying graph databases | |
CN113127650A (zh) | 一种基于图数据库的技术图谱构建方法和系统 | |
Jovanovic et al. | Ore: An iterative approach to the design and evolution of multi-dimensional schemas | |
KR102228442B1 (ko) | 도식을 이용한 아이디에이션 플랫폼 장치 및 방법 | |
Pivert et al. | Fuzzy quality-Aware queries to graph databases | |
Nowroozi et al. | Constructing an ontology based on a thesaurus: A case of ASIS&TOnto based on the ASIS&T Web-based thesaurus | |
Lano et al. | Optimising model-transformations using design patterns | |
Huynh et al. | A method for designing domain-specific document retrieval systems using semantic indexing | |
CN113407688A (zh) | 一种基于知识图谱的勘察规范智能问答系统的建立方法 | |
Hettiarachchi et al. | A Scenario-based ER Diagram and Query Generation Engine | |
JP2006085389A (ja) | 検索装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181218 |