一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种面向开发者群体聊天的缺陷报告自动监听和合成方法

2022-06-11 04:26:57 来源:中国专利 TAG:


1.本发明属于计算机技术领域,尤其涉及面向开发者群体聊天的缺陷报告自动监听和合成方法及相应存储介质与电子装置。


背景技术:

2.在软件开发迭代过程中,软件错误报道对软件开发人员了解修复当前软件的错误起着至关重要的作用。软件错误报告是软件开发人员了解软件错误,定位软件错误,重现软件错误的重要信息来源。目前,软件开发人员主要通过用户主动提交软件错误报告的方式来获取软件错误报告。但是,这种方式受限于用户本身的技术水平、对软件的了解程度和是否知道反馈渠道等等情况,软件开发人员往往只能获取到少量的软件错误报告。于此同时,用户常常会在公开的社区中通过在线聊天的方式来讨论他们遇到的软件错误或者异常并寻求解决方案。而这种用户习惯导致了在社区的在线聊天内容中存在着大量的软件错误信息。不过由于在线聊天内容中包含了大量的无关信息,如果软件开发者采取人工的方式获取聊天错误信息并整理成软件错误报告,这将耗费巨大的人力成本和时间成果。如果能够自动的识别在线聊天中的软件错误信息,并自动的整合形成软件错误报告,这将大大的拓展开发人员获取软件错误报告的途径,提高软件的开发效率,减少软件开发成本。


技术实现要素:

3.针对上述问题,本发明提出了面向开发者群体聊天的缺陷报告自动监听和合成方法及相应存储介质与电子装置,目的在于解决从大量繁杂冗余的聊天信息中快速、准确提取软件错误信息并生成错误报告,拓宽软件开发人员的错误报告的获取途径,从而提高软件开发质量,降低软件开发成本。本方法采取结合了自然语言处理、文本挖掘、深度学习等技术,并在社区聊天对话数据库上进行模型的训练及优化,以克服聊天信息中软件错误描述的灵活性、不规范等等问题。
4.本发明通过基于深度学习的语义分析和数据挖掘技术对自然语言描述的聊天信息进行自动化的解耦,理解用户聊天对话的语义信息,辨别出含有软件错误信息的对话,并从该对话中抽取软件错误信息,进而自动的生成软件错误报告。通过从公开社区的用户聊天信息中自动生成软件错误报告,本发明可以拓宽软件开发人员获取软件错误报告的途径,让软件开发人员获取更多的软件错误信息。以便帮助软件开发人员提高软件的开发效率,同时降低软件的维护成本。
5.本发明面向开发者群体聊天的缺陷报告自动监听和合成方法,其步骤包括:
6.1)采集在线聊天数据,使用基于前向神经网络的对话解耦模型对上述聊天信息进行解耦并进行基于简单数据增强技术(eda)的数据增强,从而获得数据增强后的对话解耦数据集。
7.2)将解耦得到的对话解耦数据集送入基于图神经网络对话分类模型,分类出包含软件错误信息的对话和不包含软件错误信息的对话。
8.3)将得到的包含软件错误信息的对话送入基于迁移学习的软件错误信息抽取模型,得到每个句子的所属类别,从而生成软件错误报告。
9.进一步,所述使用基于前向网络的对话解耦模型进行上述聊天信息解耦,其步骤包括:
10.1)对原始聊天信息进行预处理,过滤掉图片、表情,并将网址、代码、邮件地址、版本、 html元素转化为[url]、[code]、[email]、[version]、[html]这五个特征标签。
[0011]
2)本发明采用了基于前向神经网络的模型来解耦对话数据。该模型是kummerfeld提出的一个对话解耦模型,它由两层前向神经网络组成,每层具有512个隐藏单元。我们将预处理后的聊天数据输入到对话解耦模型中,获得解耦输出。
[0012]
3)根据解耦输出,重构出聊天信息中的每一组对话,一组对话内包含n条具有相同主题的用户发言。
[0013]
进一步,所述进行基于eda的数据增强的过程包括:
[0014]
1)原始对话中包含n条用户发言,对其中的每一条发言,根据发言包含的单词数量(长度),选择词替换或发言替换策略进行增强。当发言的长度大于阈值θ时,采用词替换,即使用同义词替换掉用户发言中的部分词语,生成一个新的用户发言;当发言的长度不大于阈值θ时,采用发言替换方法,即从对话数据集中随机抽取一条长度不大于θ的用户发言替换掉当前的用户发言。
[0015]
2)通过上述词替换和发言替换两种策略,对含有n条用户发言的原始对话,可以生成n 条新的用户发言。将新生成的n条用户发言组合成一个新的对话。进一步,所述的基于图神经网络的对话分类模型对对话的分类过程包括:
[0016]
1)将待预测的对话输入对话分类模型。
[0017]
2)使用预训练的bert语言模型,对输入对话中每个语句的词语进行词编码操作得到对应词语的词向量。bert是谷歌提出的一个语言表征模型,由双向的transformer编码器组成,通过在大量数据上预训练得到。bert模型已经被广泛运用到各种自然语言处理任务上。
[0018]
3)将每个语句的所有词语的词向量输入textcnn模型,得到每个语句的句向量表示。
[0019]
4)将每个语句的句向量表示输入图神经网络模型中,得到每个语句的上下文句向量表示。图神经网络是一种直接作用于图结构上的神经网络。它可以通过信息传播机制,将邻居结点的信息传递到相邻结点,从而使图中的每个结点都能获取到其他结点的信息。我们将每一个对话构建为一个对话图,每个语句作为对话图中的结点,进而利用图神经网络学习每个语句的上下文表示。
[0020]
5)将每个语句的句向量和上下文句向量拼接,并输入至求和池化(sum pooling)和最大池化(max pooling)层,得到对话级别的向量表示。
[0021]
6)将对话级别的向量表示输入一个全连接的分类层,得到模型对该对话类别的预测。
[0022]
进一步,所述的基于迁移学习软件错误信息抽取模型的构建的过程包括:
[0023]
1)获取公开软件错误报告数据集,并对软件错误报告数据集中的句子进行大写字母转小写、分词、删除非英文句子和删除过长句子等文本处理操作,并人工对句子进行标注
[0024]
2)将一个bert预训练语言模型和全连接层相连,其中全连接层作为最终的输出层,从而构建了信息抽取模型。在信息抽取模型中,bert预训练模型的前9层参数被冻结,剩余的3层参数被解冻,以便参与下面的两次微调。
[0025]
3)将获得的句子送入信息抽取模型中进行第一次微调,从而获得第一个微调后的信息抽取模型。
[0026]
4)对包含软件错误信息的对话中由对话发起人所说的句子进行标注,并根据启发式规则对标注的句子进行过滤,从而获得软件错误信息句子训练集。
[0027]
5)将第一次微调后的信息抽取模型的全连接层替换为一个全新的全连接层。其中全新的全连接层中的参数被随机的初始化,通过本次替换,以便信息抽取模型能够更加快速的学习软件错误信息句子训练集中的信息。然后使用软件错误信息句子训练集训练替换后的信息抽取模型,重新学习模型参数进行迁移学习的第二次微调,从而获得基于迁移学习的两次微调后的软件错误信息抽取模型。
[0028]
进一步,每个句子的所属类别包括观察到的行为(ob)、期待的行为(eb)、复现的步骤(sr)和其他(other)。
[0029]
进一步,生成软件错误报告的过程包括:
[0030]
1)依据信息抽取模型的结果(即每个句子的所属类别),将句子根据所属类别成四类。
[0031]
2)将聚类的结果输入到软件错误报告模版中,生成软件错误报告。
[0032]
一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序执行上述方法。
[0033]
一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述方法。
[0034]
与现有技术相比,本发明的优点在于:
[0035]
本发明首次尝试了从聊天信息中自动的生成软件错误信息。
[0036]
本发明提出了提出了运用图神经网络来获取聊天信息的上下文信息构建对话分类模型,实现了高效识别对话中是否含有软件错误信息。
[0037]
本发明提出了运用迁移学习并结合启发式规则来构建信息抽取模型,实现了准确识别对话中句子所属的类别。
[0038]
本发明无需人工介入,克服了聊天信息中用户描述不规范、灵活度高的语言表述情况,并具备跨领域的自适应能力,实现了从聊天信息到软件错误报告生成的全过程自动化,以达到从较大规模聊天信息中快速而准确的生成软件错误报告,降低软件开发过程中获取软件错误报告的成本,拓宽了软件错误报告的获取途径,提高了软件开发和维护效率。
[0039]
本发明中的对话模型在测试集上取得了77.74%的平均f1值,相较于基线提高了12.96%。同时信息抽取模型在测试集上取得了在ob类别上84.62%的平均f1值,在eb类别上取得了 71.46%的平均f1值,在sr类别上取得了73.13%的平均f1值,并比基线分别提高了9.32%、 12.21%、10.91%。
附图说明
[0040]
图1为本发明软件报告自动生成方法框架图。
[0041]
图2为本发明训练对话分类模型的流程图。
[0042]
图3为本发明信息抽取模型的流程图。
具体实施方式
[0043]
尽管为说明本发明目的公开了本发明的具体内容、实施算法以及附图,其目的在于帮助理解本发明的内容并据以实施,但是本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。本发明不应局限于本说明书最佳实施例和附图所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
[0044]
本发明首次提出了一种从聊天信息中自动生成软件错误报告的方法。本发明通过语义分析和自然语言处理技术,采用前向神经网络自动解耦聊天信息得到一组聊天对话,再采用图神经网络来获取聊天对话中的上下文信息,得到了对聊天对话内容的准确判断能力,进一步通过利用迁移学习的得到的信息抽取模型,抽取聊天对话中的软件错误信息内容,最后通过模版自动的生成软件错误报告。本发明提供了从聊天信息中生成软件错误报告的全流程自动化方案。下面通过具体的实施方案对本方面作进一步的说明。
[0045]
如图1所示,为本发明从聊天信息中自动生成软件错误报告的方法框架图。本发明包括五个主要的步骤:对话解耦、数据增强、训练对话分类模型、句子预处理、句子分类:
[0046]
步骤1、采集并对聊天信息进行解耦。首先,从社区聊天频道中收集聊天信息,并在本地保存,文件格式为txt。然后通过聊天解耦之前的预处理工作,过滤掉图片、表情,同时将聊天中的网址、代码、邮件地址、版本、html元素转化为[url]、[code]、[email]、[version]、 [html]这五个特征标签。这样就得到预处理之后的聊天信息处理文本。然后将得到的处理后聊天信息文本送入预训练的前向神经网络模型,经过模型解耦就可以到一组聊天对话:
[0047]
l={d1,d2,

,dn}
[0048]
d={u1,u2,

,un}
[0049]
其中l代表了聊天信息,它是由数组聊天对话构成。而di代表了一个用户对话,它是数个用户发言构成的。而ui则代表了一次用户发言。
[0050]
步骤2、对聊天对话进行数据增强。在数据增强中我们采取了词替换和发言替换两种替换策略。定义发言的长度为l,发言长度的阈值为θ,增强后的发言为u

,那么替换策略满足如下的公式:
[0051][0052]
当发言的长度l大于θ时,采用词替换方法,即使用同义词替换掉用户发言中的部分词语,生成一个新的用户发言;当发言的长度l不大于θ时,采用发言替换方法,即从对话数据集中随机抽取一条长度不大于θ的用户发言替换掉当前的用户发言,生成一个新的用户发言。
[0053]
将增强后的发言组合成新的用户对话d
aug

[0054]daug
={u
′1,u
′2,

,u
′n}
[0055]
经过数据增强后,我们最终得到对话解耦数据集。
[0056]
步骤3、对话分类模型。如图2所示,整个对话分类模型包含三层:语句编码层、基于图的上下文编码层、对话编码和分类层。对于模型训练阶段:输入为已知标签类别的对话 d={u1,u2,

,un},首先在语句编码层,本发明采用预训练的深度语言模型bert对对话d 中每个语句ui的所有子词进行词嵌入操作,得到每个语句的所有词向量。再利用textcnn模型对每个语句的词向量进行卷积运算,得到对应语句的句向量
[0057]
由于同一对话中的语句之间通常存在回复(reply-to)关系,所以一个语句的上下文也包含了该语句的语义信息。为了获得更深层的语义信息,本发明利用图神经网络来捕捉语句的上下文信息。具体地说,给定一对话,基于该对话语句间的回复关系,构建一个对话图 g=(v,e,w,t)。其中v表示对话图的顶点集合,对话中的每个语句句向量作为对话图中的每个顶点e表示对话图的边集合,若对话中的两个语句之间存在回复关系,那么相应的对话图中两个顶点之间存在一条边e
ij
;w表示对话图中边的权重,基于相邻顶点和的语义相似度计算其边e
ij
的权重w
ij
,为第j个语句句向量对应的顶点;t表示对话图中的边的类型,针对对话中的不同角色,考虑了四种不同边的类型。得到对话图g后,本发明采用两层的图神经网络来学习语句的上下文信息。第一层是基础的gnn,其计算如下:
[0058][0059]
其中是第一层gnn网络输出的顶点向量,w
1(1)
和w
2(1)
是可学习的参数,n
(*,i)
表示所有指向顶点i的顶点的集合。第二层是关系图卷积网络(rgcn),其计算如下:
[0060][0061]
其中是第二层rgcn网络输出的顶点向量,n
t(*,i)
在关系t下所有指向顶点i的顶点的集合,c
i,t
是一个正则化的常量,可以预先指定。将句向量和包含上下文信息的句向量拼接,得到最终的句向量
[0062]
对得到的所有的句向量进行sum pooling和max pooling,得到对话级别的向量表示:
[0063][0064]
最后,将对话级别的向量表示输入一个全连接的分类层,得到模型对该对话类别的预测。本发明采用focal loss损失函数来优化模型:
[0065][0066]
其中yk表示真实标签,pk表示预测的概率,αk和γ是可调整的参数,k的取值为0或1。 p0表示预测为不是缺陷对话的概率,p1表示预测为是缺陷对话的概率,α0表示真实标签为不是预测对话时的权重,α1表示真实标签是预测对话时的权重。
[0067]
在模型预测阶段,输入未知标签类别的对话,经过上述三层模型(语句编码层、基
于图的上下文编码层、对话编码和分类层)的计算,分别得到该对话属于和不属于缺陷对话的概率。若该对话属于缺陷对话的概率大于不属于缺陷对话的概率,则将该对话预测为缺陷对话,反之亦然。
[0068]
步骤4、句子预处理,涉及对含有软件错误信息的对话的用户发言进行分句同时运用启发式规则对判断含有软件错误的用户对话进行过滤。其中关于启发式规则中规则定义如下:
[0069]
1)删除所有非对话发起人的句子。
[0070]
2)删除满足对话长度小于五、停顿词占比超过百分之五十同时不含有[url]、[code]、
[0071]
[email]、[version]、[html]这五个特征标签的句子。
[0072]
3)删除句子中出现的问候语,如“你好”、“下午好”、“大家好”等等。
[0073]
上文中提及的对话发起人指的是在一个对话中开启话题的那位用户。通过句子预处理步骤,我们就得到了处理后的对话句子数据集。
[0074]
步骤5、句子分类,主要对含有软件错误信息对话中的句子进行分类。分类的句子可以看作四类,它们分别是观察到的行为(ob)、期待的行为(eb)、复现的步骤(sr)和其他(other)。
[0075]
整个句子分类步骤涉及对信息抽取模型的训练和应用。
[0076]
其中信息抽取模型的训练如图3所示,首先收集网络上公开的软件错误报告开源数据集,并对它进行一些预处理,其中涉及的步骤如下:
[0077]
1)对软件错误报告进行分句。
[0078]
2)对软件错误报告中的句子进行大写字母转小写字母操作。
[0079]
3)对软件错误报告中的句子进行分词操作。
[0080]
4)删除软件错误报告中非英文句子。
[0081]
5)删除软件错误报告中过长句子。
[0082]
6)对软件错误报告的句子人工打上分类标签。
[0083]
使用一个bert预训练语言模型并将其与一个全连接层相连,其中全连接层作为最终的输出层,从而构建了信息抽取模型。在信息抽取模型中,bert预训练模型的前9层参数被冻结,剩余的3层参数被解冻,以便参与下面的两次微调。
[0084]
将公开的软件错误报告的开源数据集中的句子送入信息抽取模型中进行第一次微调,保存最好效果的模型,从而获得第一个微调后的信息抽取模型。
[0085]
对包含软件错误信息的对话中由对话发起人所说的句子进行标注,并根据启发式规则对标注的句子进行过滤,从而获得软件错误信息句子训练集。其中启发式规则如下:
[0086]
1)删除句子长度小于5同时不包含[url]、[code]、[email]、[version]、[html五个特征标签的句子。
[0087]
2)删除句子中问候词或者感谢词,如“谢谢”,“下午好”,“你好”等等。
[0088]
在进行信息抽取模型的迁移学习的第二次微调时,替换掉之前第一次微调的信息抽取模型中最后的输出层,换成一个完全没有进行过训练的输出层,其参数都是随机的。然后,将前面获得的处理后的软件错误信息对话句子数据集,输入到替换过输出层的预训练的信息抽取模型中,进行重新训练。最终保存最好的信息抽取模型。在实际训练过程中,处
理后的对话句子数据集被分为两个部分,一部分为训练集,一部分为测试集。训练集用于训练模型,而测试集用于测试模型的表现。
[0089]
其中在以上的信息抽取模型两次训练过程中,本发明都采用如下的公式的最小值为训练目标:
[0090][0091]
其中loss表示模型训练过程的损失,pe、po、p
sr
和po分别表示了一个句子被判断为eb标签、ob标签、sr标签和other标签的概率。而ye、yo、y
sr
和yo则代表一个句子对这个标签的真实值情况。
[0092]
在对话中的句子经过信息抽取模型进行抽取,分成四种不同的类别后。在根据句子所分的类别,进行聚类操作,并将其结果输入到软件错误报告模版中,最终生成软件错误报告。
[0093]
尽管为说明目的公开了本发明的具体实施例,其目的在于帮助理解本发明的内容并据以实施,本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。因此,本发明不应局限于最佳实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献