自动生成编程规范问题答案的系统及方法技术方案

技术编号:27260675 阅读:23 留言:0更新日期:2021-02-06 11:18
一种自动生成编程规范问题答案的系统及方法,包括:子图匹配模块、机器阅读理解模块和学习排序模块,本发明专利技术通过构建编程规范知识图谱,通过子图匹配模块将自然语言问题转换为符合SPARQL协议的语句,利用编程规范知识图谱中结构化的信息查询得到候选答案。再通过机器阅读理解模块从自然语言问题中选取所有的名词、名词短语和主语,将这些词标记为关键词,使用Apache Solr引擎搜索得到最相关的10个自然段,并且使用基于TF-IDF的算法对搜索得到的自然段进行打分,再对每个自然段使用训练好的深度学习模型得到候选答案,最后通过学习排序模块对候选答案进行合并生成新的候选答案,然后使用逻辑回归分类器按照正确的概率对新的候选答案进行排序。选答案进行排序。选答案进行排序。

【技术实现步骤摘要】
自动生成编程规范问题答案的系统及方法


[0001]本专利技术涉及一种人工智能语义识别领域的技术,具体涉及一种自动生成编程规范问题答案的系统及方法。

技术介绍

[0002]近年来,编程规范在软件质量保障中扮演了越来越重要的角色。编程规范是一系列的代码准则,帮助软件开发者提高代码的可读性、可维护性和可重用性。当软件开发者遇到编程规范相关的问题时,可以查询编程规范文档。然而一条编程规范可能会出现在多份编程规范文档中,并且每份编程规范文档的内容可能是不同的。因此,软件开发者需要查询或浏览多份文档才能获得想要的信息,十分繁琐。问答机器人系统能够自动生成用户提出的问题的答案,而现有的问答机器人系统并没有结合编程规范领域知识,因此很难高效理解软件开发者提出的关于编程规范的问题并给出正确的回答。

技术实现思路

[0003]本专利技术针对现有问答机器人系统编程规范领域知识利用不充分、用户意图理解不精确等缺陷,提出一种自动生成编程规范问题答案的系统及方法,并通过结合知识图谱和机器阅读理解技术,充分利用编程规范领域知识,更精确地理解用户意图,从而提高了自动生成编程规范问题答案的准确性。
[0004]本专利技术是通过以下技术方案实现的:
[0005]本专利技术涉及一种自动生成编程规范问题答案的系统,包括:子图匹配模块、机器阅读理解模块和学习排序模块,其中:子图匹配模块采集自然语言问题并转换为符合SPARQL(SPARQL Protocol and RDF Query Language)协议的语句,利用编程规范知识图谱中结构化的信息查询得到候选答案;机器阅读理解模块使用深度学习模型自动理解非结构化文本,预测得到候选答案;学习排序模块将子图匹配模块和机器阅读理解模块得到的候选答案合并,使用逻辑回归分类器对候选答案按照正确的概率进行排序。
[0006]所述的自然语言问题包括但不限于:寻找某条编程规范的属性、根据条件寻找某条适用的编程规范等。
[0007]本专利技术涉及上述系统的编程规范问题答案自动生成方法,包括以下步骤:
[0008]步骤1)构建编程规范知识图谱,具体为:基于编程规范知识图谱的本体,收集书籍以及各种组织公开的编程规范文档,将其整理存储为编程规范知识图谱中的三元组。
[0009]步骤2)通过子图匹配模块识别出自然语言问题中的节点,然后使用Stanford CoreNLP工具构建语法依赖树,根据识别出的节点集合和构建的语法依赖树生成查询子图Qu,根据Qu的内容和结构生成SPARQL查询语句,查询知识图谱得到候选答案。
[0010]步骤3)通过机器阅读理解模块从自然语言问题中选取所有的名词、名词短语和主语,将这些词标记为关键词,使用Apache Solr引擎搜索得到最相关的10个自然段,并且使用基于TF-IDF的算法对搜索得到的自然段进行打分,再对每个自然段使用训练好的深度学
and RDF Query Language)协议的语句,利用编程规范知识图谱中结构化的信息查询得到候选答案。
[0026]所述的机器阅读理解模块使用深度学习模型学习非结构化文本预测得到候选答案
[0027]所述的学习排序模块将子图匹配模块和机器阅读理解模块得到的候选答案合并,使用逻辑回归分类器对候选答案按照正确的概率进行排序。
[0028]如图3所示,本实施例涉及上述系统的编程规范问题答案自动生成方法,具体包括以下步骤:
[0029]步骤1)用户以自然语言的方式提出编程规范相关的问题。
[0030]步骤2)子图匹配模块使用如图2所示的流程抽取出问题中的节点,然后使用Stanford CoreNLP工具构建语法依赖树,根据识别出的节点集合和构建的语法依赖树生成查询子图Qu,根据Qu的内容和结构生成SPARQL查询语句,查询知识图谱得到候选答案。
[0031]所述的节点包括疑问词节点和实体节点。疑问词节点是指:用户输入的自然语言问题中wh开头的单词,如what、when等。实体节点是指:知识图谱中的实体,具体识别实体节点的过程为:收集了公开的编程规范术语制作成编程规范术语表,通过查询编程规范术语表找到用户的自然语言问题中包含的编程规范术语,然后使用Jena全文搜索在编程规范知识图谱中找到最匹配的实体形成实体节点。
[0032]步骤3)机器阅读理解模块先从自然语言问题中选取所有的名词、名词短语和主语,将这些词标记为关键词,使用Apache Solr搜索得到最相关的10个自然段。对每个自然段使用训练过的深度学习模型得到候选答案。
[0033]所述的深度学习模型为三层结构的网络,每一层的隐藏层节点数都为150。
[0034]第一层根据自然语言问题和段落的词嵌入向量,将各自的上下文信息分别编码进问题和段落中,该层的输入分别为段落和问题,段落使用矩阵P[d*p]表示,d表示单词的词向量维度,本实施例中为300,p表示段落中的词数,问题使用矩阵Q[d*q]表示,q表示问题中的词数,使用标准的单向带有长短期记忆单元(LSTM)的循环神经网络来分别处理问题和段落,具体为:其中:H
P
[l*p]和H
q
[l*q]是段落和问题经过LSTM后的隐藏层表示,l是隐藏层节点的个数,输出是H
P
和H
q

[0035]第二层将段落和自然语言问题整合,其输入为上一层的输出H
P
和H
q
。顺序的遍历段落中的每个词,对于每个词i,计算出注意力权重矩阵具体为:具体为:其中:W
p
,W
q
,W
r
,b
p
,W
T
,b均为待学习的参数,是指LSTM中在i-1处的隐藏层向量,即权重向量,其中第i行,第j列的数值为段落的第i个位置的词和问题的第j个位置的匹配程度。之后就可以把这个权重应用在问题上,获得一个加了权重的问题向量公式为:公式为:
最后得到输出为最后得到输出为
[0036]第三层从段落中预测答案的起始位置,其输入为上一层的输出H
r
,输出是(a
s
,a
e
),其中a
s
,a
e
分别为答案的开始和终止位置在段落中的下标。
[0037]所述的词嵌入向量指的是使用词嵌入工具GloVe将数据集中段落、问题和答案中的每个单词表示成一个d维的词嵌入向量,在本实施例中设置d为300。
[0038]所述的GloVe是一个词嵌入工具,它可以把一个单词表达成一个由实数组成的向量。
[0039]所述的P[d*p],指的是P是d行,p列的矩阵,本文中形如A[m*n],指的是A是m行,n列的矩阵。
[0040]所述的预测答案的起始位置,即p(a|H
r
)=p(a
s
|H
r
)*p(a
s
|a
e
,H...

【技术保护点】

【技术特征摘要】
1.一种自动生成编程规范问题答案的系统,其特征在于,包括:子图匹配模块、机器阅读理解模块和学习排序模块,其中:子图匹配模块采集自然语言问题并转换为符合SPARQL协议的语句,利用编程规范知识图谱中结构化的信息查询得到候选答案;机器阅读理解模块使用深度学习模型自动理解非结构化文本,预测得到候选答案;学习排序模块将子图匹配模块和机器阅读理解模块得到的候选答案合并,使用逻辑回归分类器对候选答案按照正确的概率进行排序。2.一种根据权利要求1所述系统的自动生成编程规范问题答案的方法,其特征在于,包括以下步骤:步骤1)构建编程规范知识图谱,具体为:基于编程规范知识图谱的本体,收集书籍以及各种组织公开的编程规范文档,将其整理存储为编程规范知识图谱中的三元组;步骤2)通过子图匹配模块识别出自然语言问题中的节点,然后使用Stanford CoreNLP工具构建语法依赖树,根据识别出的节点集合和构建的语法依赖树生成查询子图Qu,根据Qu的内容和结构生成SPARQL查询语句,查询知识图谱得到候选答案;步骤3)通过机器阅读理解模块从自然语言问题中选取所有的名词、名词短语和主语,将这些词标记为关键词,使用Apache Solr引擎搜索得到最相关的10个自然段,并且使用基于TF-IDF的算法对搜索得到的自然段进行打分,再对每个自然段使用训练好的深度学习模型得到候选答案;步骤4)学习排序模块对步骤2和步骤3产生的候选答案进行合并生成新的候选答案,然后使用逻辑回归分类器按照正确的概率对新的候选答案进行排序;所述的编程规范知识图谱包括:结构化数据和非结构化数据;所述的结构化数据是指:实体、关系/属性、实体构成的三元组。3.根据权利要求2所述的方法,其特征是,所述的编程规范文档中的每个段落对应一条非结构化数据,具体构建流程为:将编程规范文档拆分成段落,使用TF-IDF计算段落和实体的相似度,通过添加属性的方式把段落连接在相似度最高的实体上。4.根据权利要求3所述的方法,其特征是,所述的TF-IDF是指:用词频和逆文档频率来评估每个词在句子中的重要程度。当某个词在句子中出现的频率高,并且它在其他句子中出现的次数较少,则认为该词比较重要。5.根据权利要求2所述的方法,其特征是,所述的节点包括:疑问词节点和实体节点,其中:疑问词节点是指:用户输入的自然语言问题中wh开头的单词;实体节点是指:知识图谱中的实体;识别实体节点的过程为:收集了公开的编程规范术语制作成编程规范术语表,通过查询编程规范术语表找到用户的自然语言问题中包含的编程规范术语,然后使用Jena引擎全文搜索在编程规范知识图谱中找到最匹配的实体形成实体节点,并按匹配程度从高到低返回结果。6.根据权利要求2所述的方法,其特征是,所述的查询子图Qu,通过以下方式得到:对于给定的语法依赖树和节点集合V,在查询子图Qu中添加节点集合V,当两个节点v1,v2的简单路径中没有其他节点,那么就在Qu中为这两个节点添加一条边,语法依赖树中v1和v2之间的简单路径包含的单词形成Qu该边的标签,遍历每个节点重复上述操作就可以构建出查询子图Qu。
7.根据权利要求2所述的方法...

【专利技术属性】
技术研发人员:吴秦月杜天蛟曹峻铭李威沈备军陈雨亭
申请(专利权)人:上海交通大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1