CN115291888A - 基于自注意力交互式网络的软件社区仓库挖掘方法及装置 - Google Patents
基于自注意力交互式网络的软件社区仓库挖掘方法及装置 Download PDFInfo
- Publication number
- CN115291888A CN115291888A CN202211003813.7A CN202211003813A CN115291888A CN 115291888 A CN115291888 A CN 115291888A CN 202211003813 A CN202211003813 A CN 202211003813A CN 115291888 A CN115291888 A CN 115291888A
- Authority
- CN
- China
- Prior art keywords
- code
- query
- attention
- code segment
- query description
- 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
- 238000005065 mining Methods 0.000 title claims abstract description 76
- 238000000034 method Methods 0.000 title claims abstract description 51
- 230000002452 interceptive effect Effects 0.000 title claims abstract description 27
- 239000011159 matrix material Substances 0.000 claims abstract description 37
- 230000004927 fusion Effects 0.000 claims abstract description 30
- 230000003993 interaction Effects 0.000 claims abstract description 23
- 238000012545 processing Methods 0.000 claims abstract description 17
- 230000014509 gene expression Effects 0.000 claims abstract description 15
- 239000013598 vector Substances 0.000 claims description 80
- 239000012634 fragment Substances 0.000 claims description 50
- 238000012549 training Methods 0.000 claims description 28
- 230000006870 function Effects 0.000 claims description 26
- 230000007246 mechanism Effects 0.000 claims description 16
- 238000011176 pooling Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 11
- 238000012795 verification Methods 0.000 claims description 7
- 238000009826 distribution Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 claims description 6
- 238000013528 artificial neural network Methods 0.000 claims description 5
- 238000002372 labelling Methods 0.000 claims description 5
- 238000009827 uniform distribution Methods 0.000 claims description 5
- 238000010606 normalization Methods 0.000 claims description 3
- 230000004913 activation Effects 0.000 claims description 2
- 238000001514 detection method Methods 0.000 claims description 2
- 238000010200 validation analysis Methods 0.000 claims 2
- 238000009412 basement excavation Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 9
- 238000006243 chemical reaction Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000013527 convolutional neural network Methods 0.000 description 5
- 238000011156 evaluation Methods 0.000 description 5
- 239000000284 extract Substances 0.000 description 5
- 238000003058 natural language processing Methods 0.000 description 4
- 239000000047 product Substances 0.000 description 4
- 238000005070 sampling Methods 0.000 description 4
- 230000002457 bidirectional effect Effects 0.000 description 3
- 238000002955 isolation Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 241001522296 Erithacus rubecula Species 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 241000288105 Grus Species 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000012467 final product Substances 0.000 description 1
- 238000011478 gradient descent method Methods 0.000 description 1
- 238000011068 loading method Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011056 performance test Methods 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000013179 statistical model Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/436—Semantic checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
- G06F16/3344—Query execution using natural language analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/335—Filtering based on additional data, e.g. user or group profiles
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2216/00—Indexing scheme relating to additional aspects of information retrieval not explicitly covered by G06F16/00 and subgroups
- G06F2216/03—Data mining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了基于自注意力交互式网络的软件社区仓库挖掘方法及装置。输入代码片段及其上下文和查询描述至软件仓库挖掘模型获得预测结果,软件仓库挖掘模型包括:自注意力网络层提取词嵌入处理后的代码片段、代码片段上下文和查询描述的特征矩阵;交互层分别获得代码片段和查询描述的共同注意表示;信息融合层获得代码片段上下文、代码片段和查询描述的融合信息;标签预测层,预测代码片段是否为查询描述对应的独立解决方案。采用基于自注意力词嵌入网络具有更好的执行效率,通过交互层充分挖掘代码片段和查询描述的语义关联性,以及融合代码片段、其上下文信息和查询描述,基于融合信息进行预测,有效地提高了预测准确性。
Description
技术领域
本发明涉及软件工程的软件仓库挖掘领域,具体涉及基于自注意力交互式网络的软件社区仓库挖掘方法及装置。
背景技术
基于自然语言处理(NLP)技术的软件开发人员辅助工具的迅速发展,软件开发人员辅助工具已用于代码补全、代码摘要、源代码自动文档、去混淆、跨语言移植、代码检索、以及甚至来从自然语言进行代码合成。这些成功案例归因于软件源代码的两个属性:首先是高度重复性,在统计意义上可预测,这种统计可预测性使研究人员能够从使用具有悠久历史的手工规则创建的源代码和自然语言模型扩展到已证明灵活、相对容易的创建数据驱动模型;其次,由于开源软件的普及,以及开放访问、“大代码”存储库(如GitHub网站和Stack Overflow社区)的增长,源代码可以大量被软件开发人员复用,这些平台分别托管数以千万计的代码存储库和与编程相关的查询描述和代码答案,并且拥有正在用于训练此类模型的海量软件数据。
然而,为许多此类应用程序提供动力的统计模型仅与它们所训练的数据一样有用,例如垃圾输入、垃圾输出。对于特定类别的应用程序,例如给定自然查询检索源代码、面向自然语言的代码摘要和代码生成,所有这些都涉及挖掘自然语言和程序语言之间的对应语义关系,因此必须能够访问大量、高质量、并行的软件数据,其中自然语言和源代码彼此尽量需要紧密对齐。
软件社区以Stack Overflow(S0)为例,提供了一个可以创建高质量的软件仓库数据集的来源,查询描述多种多样,其中大多数都有对应的高质量代码片段和上下文描述,即查询总会有一个对应的独立代码解决方案。
有研究工作提出了一个针对S0中的Python和SQL语言领域的“how to do it”问题的软件仓库挖掘的BiV-HNN模型,它假设给定问题的答案帖子具有一系列块{S1、C1、S2、...、Si、Ci、Si+1、...、SL-1、CL-1、SL},即L个文本块Si′s和L-1个代码块Ci′s相互交错,从中获取真正独立回答查询描述的代码片段。该模型首先通过Bi-GRU(双向门控循环单元)网络对每一个代码块(代码片段及其文本上下文)和查询描述统一转换到高维矢量空间,接着使用全连接网络将代码内容和查询描述进行向量拼接融合,最后再次通过Bi-GRU去融合代码块的上下文描述嵌入、代码和查询描述的融合嵌入以得到最后代码片段综合信息的表示,去判定代码片段是否为查询描述的独立解决方案。
本申请发明人在实际实施中,发现BiV-HNN模型依赖于GRU(门控循环单元),在GRU的内部,下一个时间步的计算取决于前一个时间步的输出,而一般来说代码的扁平序列内容相对较长,属于篇章级的文档,GRU在较长的文本序列中容易遗忘历史编码信息。并且从计算效率的角度来看,这种根据时间步依次嵌入编码的模式使得GRU无法在GPU显卡中实现并进行计算。此外,BiV-HNN模型用两个独立的Bi-GRU分别表示代码片段和自然语言描述,忽略了代码片段与其描述之间的语义关系,使得BiV-HNN模型的挖掘性能存在着不足。
发明内容
本发明旨在解决现有BiV-HNN模型的挖掘性能的不足,提供一种基于自注意力交互式网络的软件社区仓库挖掘方法及装置。
为了实现本发明的上述目的,根据本发明的第一个方面,本发明提供了一种基于自注意力交互式网络的软件社区仓库挖掘方法,将获取的代码片段、代码片段上下文和查询描述输入训练好的软件仓库挖掘模型,所述软件仓库挖掘模型输出代码片段是否为查询描述对应的独立解决方案的预测结果,所述软件仓库挖掘模型包括:词嵌入层,分别对代码片段、代码片段上下文和查询描述进行词嵌入处理;自注意力网络层,基于自注意力机制分别提取词嵌入处理后的代码片段、代码片段上下文和查询描述的特征矩阵;代码片段和查询描述交互层,对代码片段和查询描述的语义关联性进行检测获得代码片段的共同注意表示和查询描述的共同注意表示;信息融合层,通过Bi-GRU对代码片段上下文的特征矩阵平均池化后的池化结果、代码片段的共同注意表示和查询描述的共同注意表示进行融合获得融合信息;标签预测层,基于融合信息预测代码片段是否为查询描述对应的独立解决方案。
为了实现本发明的上述目的,基于同样的发明构思,本发明的第二个方面提供了一种基于自注意力交互式网络的软件社区仓库挖掘装置,包括:输入模块,用于将代码片段、代码片段上下文和查询描述输入软件仓库挖掘模块;软件仓库挖掘模块,输出代码片段是否为查询描述对应的独立解决方案的预测结果,所述软件仓库挖掘模块包括:词嵌入模块,分别对代码片段、代码片段上下文和查询描述进行词嵌入处理;自注意力网络模块,基于自注意力机制分别提取词嵌入处理后的代码片段、代码片段上下文和查询描述的特征矩阵;代码片段和查询描述交互模块,对代码片段和查询描述的语义关联性进行检测获得代码片段的共同注意表示和查询描述的共同注意表示;信息融合模块,通过Bi-GRU双向门控循环单元对代码片段上下文的特征矩阵平均池化后的池化结果、代码片段的共同注意表示和查询描述的共同注意表示进行融合获得融合信息;标签预测模块,基于融合信息预测代码片段是否为查询描述对应的独立解决方案。
为了实现本发明的上述目的,基于同样的发明构思,本发明的第三个方面提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被执行时实现本发明第一方面所述的方法。
为了实现本发明的上述目的,基于同样的发明构思,本发明的第四个方面提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本发明第一方面所述的方法。
上述技术方案:与GRU这种只能为序列中的每个元素提取有限的上下文信息且无法在GPU中实现并行计算的模型相比,本发明采用基于自注意力词嵌入网络具有更好的执行效率,且能对代码片段及其文本上下文和查询描述进行建模,可以更好地捕获序列中每个元素的上下文信息,实现从自然语言到编程语言的精确映射,以提升跨自然语言和程序语言的代码生成、代码检索和代码摘要等软件任务的性能;与先前工作中孤立表示代码片段和查询描述的模型不同,本发明采用基于Bi-GRU双向交互的网络,来对查询描述和相应的独立解决方案中的代码片段中的关注信号进行足够完善的建模;同时,本发明使用注意力机制来训练并学习代码片段和查询描述的重要性权重,这种新颖的权值加权模型能够对查询描述和代码片段术语在各自的方向上给予不同的关注,从而对查询描述产生不同的关注;通过交互层充分挖掘代码片段和查询描述的语义关联性,以及融合代码片段、其上下文信息和查询描述,基于融合信息进行预测,这样有效地提高了预测准确性。
附图说明
图1是本发明实施例1中软件仓库挖掘模型的整体结构示意图;
图2是本发明实施例1中软件仓库挖掘模型的细节结构示意图;
图3是本发明实施例2中软件社区仓库挖掘装置的结构示意图;
图4是本发明实施例3中计算机可读存储介质的结构框图;
图5是本发明实施例4中计算机设备的结构图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
在本发明的描述中,需要理解的是,术语“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
在本发明的描述中,除非另有规定和限定,需要说明的是,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是机械连接或电连接,也可以是两个元件内部的连通,可以是直接相连,也可以通过中间媒介间接相连,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。
本申请发明人通过大量的研究与实践发现:
现有技术中的挖掘S0问题代码的方法BiV-HNN模型,采用Bi-GRU作为底层架构,其中GRU只能为序列中的每个元素提取有限的上下文信息。从效率的角度来看,这种模式使得GRU无法在GPU(Graphics Processing Units)中实现并行计算。CNN虽然可以更好地实现并行计算,但不适合对序列进行编码。原因是对于每个元素,由于卷积核的大小有限,CNN只为其提取局部语义信息。因此,如果想通过CNN提取全局语义信息,需要多次堆叠CNN,这使得模型变得复杂。至于自注意力网络,它是基于自注意力机制设计的。具体来说,当表示一个序列中的一个元素时,自注意力机制使这个元素通过点积操作关注这个序列中的所有元素,然后通过加权平均操作来表示这个元素,这说明了自注意力机制不需要考虑距离因素。因此,自注意力网络可以捕获序列中每个元素的上下文信息。考虑到执行效率,自注意力机制的顺序操作是O(1),而GRU需要O(n)顺序操作。在计算复杂度方面,当序列长度n小于单词表示维数d时,自注意力层比GRU层更快。此外,自注意力网络可以在GPU上实现并行计算,因为自注意力网络的核心是点积运算。所以自注意力网络在需要高度语义信息的机器翻译任务中取得了最先进的性能,这表明自注意力机制可以比GRU和CNN更好地捕获上下文信息。
另外,BiV-HNN中对代码片段和查询描述的建模复用了自然语言处理中一些现有的双模式神经网络模型,而不是专门为查询描述和源代码设计交互式建模。它们无法融合代码及其查询描述的交互信息,从而有效地捕获异构语言中更深层次的语义匹配信号。同时查询描述中不同的词对于代码片段中不同令牌的关注程度是不同,通常称之为注意力机制。而事实证明,在大多数自然语言处理及程序语言理解任务中,如机器翻译和代码自动摘要研究中,注意力机制在代码挖掘中能够捕获更多查询对所关注独立解决方案中的代码片段不同部分的信息。
整体来说,现有工作在S0中挖掘社区软件仓库的时候,在预测代码片段是否为查询描述的独立解决方案的时候会在受到捕获代码片段及其上下文和查询描述序列信息不全的影响,并且忽略了代码片段与查询描述之间的语义关联。
基于以上考虑,本发明提出了一种基于自注意力交互式网络的软件社区仓库挖掘方法,它是一种用于在S0社区实例中挖掘软件仓库的新型网络模型。本发明首先使用基于自注意力网络去捕获代码块和查询描述的特征矩阵;然后学习查询描述和代码片段的对齐注意矩阵,得到不同方向的注意力投影向量,最后融合代码片段及其上下文和查询描述的信息,去预测代码片段是不是查询描述的独立解决方案。本发明根据先前从S0社区收集的2种大规模人工标注的Python和SQL代码库进行实证评估。结果表明,本发明可以有效地预测代码片段是否为查询描述的独立代码解决方案。下面通过四个实施例对本发明的发明构思进行详细阐述。
实施例1
本实施例公开了一种基于自注意力交互式网络的软件社区仓库挖掘方法,将获取的代码片段、代码片段上下文和查询描述输入训练好的软件仓库挖掘模型,软件仓库挖掘模型输出代码片段是否为查询描述对应的独立解决方案的预测结果,软件仓库挖掘模型的整体结构如图1所示,具体包括词嵌入层、自注意力网络层、代码片段和查询描述交互层、信息融合层和标签预测层。
(1)词嵌入层,分别对代码片段、代码片段上下文和查询描述进行词嵌入处理。
在给定代码段序列及其文本上下文序列 和相应的查询描述序列Q=q1,...,q|Q|时,其中,|Ci|表示代码片段|Ci|的单词总数,|Q|表示查询描述的单词总数,|Si|表示代码片段上文的单词总数,|Si+1|表示代码片段下文的单词总数。首先利用已有的词嵌入词典查询序列中的每个单词相应的单词嵌入构建其对应序列编码向量,查询公式如下:
其中,是预训练的代码词嵌入的矩阵,是预训练的自然语言文本词嵌入矩阵,分别是代码片段中第k个单词的嵌入矢量、查询描述中第l个单词ql的嵌入矢量、代码片段上文中第m个单词的嵌入矢量和代码片段下文中第n个单词的嵌入矢量。VC和VT分别是代码和自然语言的固定大小的词汇,d是单词嵌入的维度。
(2)自注意力网络层,基于自注意力机制分别提取词嵌入处理后的代码片段、代码片段上下文和查询描述的特征矩阵,用于捕获每个单词的历史和未来信息。自注意力网络层具体执行:
步骤S21,分别通过查询权重WQ∈Rd×d、键权重WK∈Rd×d、值权重WV∈Rd×d将词嵌入处理后的代码片段/代码片段上下文/查询描述转换为对应的查询向量、键向量和值向量。
具体的,对于词嵌入后的代码片段在构建每个单词的词嵌入后,每个单词都具有相同的表示维度d,通过三个不同权重查询权重WQ∈Rd×d、键权重WK∈Rd×d、值权重WV∈Rd×d将Ci e转换为代码片段对应的查询向量键向量和值向量具体的:
按照上述过程对词嵌入后的查询描述序列和代码片段的上下文转换为对应的查询向量、键向量和值向量,在此不再赘述。将词嵌入后的查询描述序列Qe=q1 e,...,q|Q| e转换为查询向量QQ∈R|Q|×d、键向量KQ∈R|Q|×d、值向量VQ∈R|Q|×d。对于词嵌入后的代码片段的上下文序列和将Si e转换为对应的查询向量键向量和值向量将Si+1 e转换为对应的查询向量键向量和值向量
步骤S22,将代码片段/代码片段上下文/查询描述对应的查询向量、键向量、值向量输入自注意力机制获得代码片段/代码片段上下文/查询描述的语义信息。如图2所示,设置四个自注意力网络,分别与代码片段、代码片段上文、代码片段下文和查询描述对应。
其中,Att(·)表示缩放的点积注意力模型
将查询描述的查询向量、键向量、值向量输入对应的自注意力网络获得代码片段的语义信息contextQ:
步骤S23,将代码片段/代码片段上下文/查询描述的语义信息输入全连接前馈网络,全连接前馈网络输出代码片段/代码片段上下文/查询描述的特征矩阵。
将代码片段、代码片段上下文、查询描述的语义信息分别应用到一个全连接前馈网络获得对应的特征矩阵,代码片段/代码片段上下文/查询描述的特征矩阵为:
vD=ReLu(contextD·W1+b1)·W2+b2;
其中,序列D=Ci或Si或Si+1或Q,Ci表示代码片段,Si表示代码片段上文,Si+1表示代码片段下文,Q表示查询描述;ReLu(·)表示ReLu激活函数;contextD表示序列D的语义信息;contextD=Att(QD·KD)·VD,Att(·)表示缩放的点积注意力模型,SoftMax(·)为归一化函数,QD表示序列D的查询向量,KD表示序列D的键向量,VD表示序列D的值向量;d表示词嵌入后单词的维度;W1、W2、b1分别表示全连接前馈网络中第一可学习参数、第二可学习参数、第三可学习参数,具体的:当D=Ci,代码片段的特征矩阵为:
当D=Si,代码片段上文的特征矩阵为:
当D=Si+1,代码片段下文的特征矩阵为:
当D=Q,查询描述的特征矩阵为:vQ=ReLu(contextQ·W1+b1).W2+b2。
由于以往的工作是采用GRU为基础的循环神经网络的Bi-GRU,通过总结两个方向的上下文信息来学习基础表示。与Bi-GRU只能提取序列中每个元素提取有限的上下文信息相比,本实施例采用自注意力网络,序列中每个元素提取所有的上下文信息更好的捕获每个单词的历史和未来信息。
(3)代码片段和查询描述交互层,对代码片段和查询描述的语义关联性进行检测获得代码片段的共同注意表示和查询描述的共同注意表示。代码片段和查询描述交互层具体执行:
步骤S31,计算代码片段和查询描述的语义相关矩阵F:
其中,表示代码片段的特征矩阵;vQ表示查询描述的特征矩阵;U表示语义关联性检测神经网络的参数矩阵,该参数矩阵通过神经网络学习获得;语义相关矩阵F能够对代码片段代码词和查询描述词的语义关联性进行协同注意观察,F中的每个元素Fk,l(第k行l列元素)代表两个对齐向量之间的语义相关性,即代表第k个代码词,代表第l个查询描述词。具体来说,F中的第k行表示查询描述中的每个单词与第k个代码词的语义关联。F中的第l列表示代码中每个词与第l个描述词的语义关联。
在F上沿行和列进行平均池化操作,以获得用于代码片段和查询描述的语义向量和gQ∈R|Q|。的第k个元素表示代码片段Ci中的第k个词与其在查询描述Q中所有词的重要性得分。同样,gQ的第l个元素表示在查询描述Q中的第l个词之间的与它在代码片段Ci中所有词的重要性得分。因此我们采取的平均池化操作如下:
gi Q=avgpooling[Fl,1,…,Fl,|Q|]。
gQ=[g1 Q,...,g|Q| Q]。
代码片段和查询描述交互层采用双向交互方法来进行交互信息抽取。由于以往的工作忽略代码片段和查询描述之间的语义相关性,因此本实施例引入交互注意力机制,通过动态对齐代码和查询向量相应的部分来解决此问题。在平均池化或最大池化操作之前,基于自注意力编码输出的嵌入矢量将乘以经过softmax操作的权重,该权重由自注意力中嵌入矢量序列确定。基于注意力机制的交互嵌入方法,与先前工作中孤立表示代码片段和查询描述的模型不同,本发明采用基于双向交互的网络,来对查询描述与相应的独立解决方案中的代码片段中的关注信号进行足够完善的建模。同时,本发明使用注意力机制来训练并学习代码和查询描述的重要性权重,这种新颖的权值加权模型能够对查询描述和代码片段术语在各自的方向上给予不同的关注。
(4)信息融合层,通过Bi-GRU对代码片段上下文的特征矩阵平均池化后的池化结果、代码片段的共同注意表示和查询描述的共同注意表示进行融合获得融合信息。
具体的,得到了代码片段和查询描述的共同注意表示和rQ∈Rd,而代码片段的文本上下文的特征矩阵分别为和为了融合代码片段及其文本上下文和查询描述,将特征矩阵进行平均池化得到文本上下文的最终表示和采取的平均池化操作如下:
H=[h1,...ht,...,hn];
(5)标签预测层,基于融合信息预测代码片段是否为查询描述对应的独立解决方案。标签预测层按照如下公式进行预测:
yi=softmax(wyHi+by);
其中,yi表示预测结果,yi=[yi0,yi1],yi0为代码片段不为查询描述对应的独立解决方案的表示标签,yi1表示代码片段为查询描述对应的独立解决方案的表示标签,Hi表示融合信息,wy、by分别表示标签预测层的第一可学习参数和第二可学习参数。
在本实施例中,以代码片段机器上下文和查询描述作为输入,预测其代码片段是否是查询描述的独立解决方案。
在本实施例中,为提高模型的预测准确率,在模型训练中,构建的损失函数过程中没有单纯地拟合one hot分布,而是基于one hot分布和均匀分布一起构建损失函数。优选地,软件仓库挖掘模型的训练过程为:基于人工标注数据集获取训练集和验证集,利用训练集训练软件仓库挖掘模型的网络参数,在验证集上迭代预设次直到损失函数收敛,完成软件仓库挖掘模型训练,其中,损失函数基于one hot分布和均匀分布构建,具体为:
其中,Loss表示损失;ε表示均匀分布损失函数所占比重,0≤ε≤1;第一变量yi0表示代码片段不为查询描述对应的独立解决方案的表示标签,pi0表示yi0的置信度,0≤pi0≤1;yi1表示代码片段为查询描述对应的独立解决方案的表示标签,pi1表示yi1的置信度,0≤pi1≤1。其包含的思想如下,当预测结果为[yi_1,yi_2],预测目标为[1,0]盲目地增大比例使得接近于1,就不再是最优解了,从而可以缓解softmax过于自信的情况,如果第i个代码片段被手动注释为解决方案,则pi0=0和pi1=1;否则,pi0=1和pi1=0。
在本实施例中,优选地,结合预训练的结构词嵌入以提前融合模型外部软件数据提供的结构化知识,使用来自Python和SQL域的人工标注数据集。
在模型的训练过程中,首先将先前工作中预训练得到的词嵌入加载到软件仓库挖掘模型(SACodeMF模型)。然后在软件仓库挖掘模型参数初始化中,设置代码片段、代码片段的上下文和查询描述的最大长度分别302、100、34,注意力维度为150,在Python语言中,按照0.25的概率在词嵌入层、自注意力网络层、查询描述和代码片段交互层、预测标签层进行采样,在信息融合层按照0.4的概率进行采样;在SQL语言中,按照0.25的概率在词嵌入层进行采样,在自注意力网络层、查询描述和代码片段交互层、信息融合层、预测标签层、按照0.5的概率进行采样。得到训练集后按照学习率为0.001和Aadm随机梯度下降法来训练拟合软件仓库挖掘模型(SACodeMF模型)的超参数,直到在验证集迭达150次后停止训练,并保存软件仓库挖掘模型(SACodeMF模型)的超参数文件。
为说明本发明软件仓库挖掘模型(SACodeMF模型)在软件社区对软件仓库挖掘的性能表现,根据训练好的软件仓库挖掘模型(SACodeMF模型),在以Python和SQL域为例的人工标注测试集上进行模型性能测试,可给出相应的Precison、Recall、F1、Accuracy评价指标,并将其与现有的基准模型BiV-HNN模型进行比较,来说明本发明软件仓库挖掘模型(SACodeMF模型)的性能。实验结果如表1和表2所示,本发明的实验效果要优于BiV-HNN基线模型。结果表明,本发明的方法,因采用了基于自注意力网络以及交互式嵌入方法后比先前方法更准确的预测了查询描述所对应的代码片段(独立的代码解决方案)。因此,给定一个代码块(代码片段及其上下文)和查询描述,本发明可以更准确的预测出一个代码片段否是为查询描述的独立解决方案。
表1不同软件仓库挖掘模型在Python域测试集上的评价指标
表2不同软件仓库挖掘模型在SQL域测试集上的评价指标
本发明的创新点包括:
1)基于自注意力网络的嵌入方法;与GRU这种只能为序列中的每个元素提取有限的上下文信息且无法在GPU中实现并行计算的模型相比,本发明采用基于自注意力的编码嵌入网络,其具有更好的执行效率,且能对代码片段及其文本上下文和查询描述进行建模,更好的捕获可以捕获序列中每个元素的上下文信息。
2)基于注意力机制的交互嵌入方法,与先前工作中孤立表示代码片段和查询描述的模型不同,本发明采用基于双向交互的网络,来对查询描述和相应的独立解决方案中的代码片段中的关注信号进行足够完善的建模。同时,本发明使用注意力机制来训练并学习代码和查询描述的重要性权重。这种新颖的权值加权模型能够对查询描述和代码片段术语在各自的方向上给予不同的关注,从而对查询描述产生不同的关注。
此外,需要说明是,本实施例中对于软件仓库的挖掘网络模型可以采用其他的神经网络架构,且可以适用除S0社区实例以外的其他软件社区,因而本实施例对此不作具体的限定和说明。
本实施例可以捕获软件社区仓库中查询描述和代码片段及其文本上下文的语义以判定代码片段是否为程序查询描述对应的独立代码解决方案。本发明专注软件社区,例如Stack Overflow的“How-to-do-it(如何做)”类型的问题,这些问题询问如何实现某个任务,因此这些问题的答案很可能是独立的代码解决方案。在本实施例中,首先针对每个代码片段以及其文本上下文和查询描述,构建自注意力网络层、查询描述和代码片段交互层、信息融合层和标签预测层的自注意力交互式模型SACodeMF,并设置训练网络的损失函数,其中自注意力网络层用于捕获并对每个代码块(代码片段Ci及其文本上下文Si、Si+1)和查询描述的序列信息,所述交互注意力层用于捕获并编码代码段和查询描述的交互信息,信息融合层融合代码片段的上下文和代码片段以及查询描述的信息,标签预测层用于预测代码片段是否是问题的独立解决方案,然后将预训练的结构词嵌入加载至软件仓库挖掘模型(自注意力交互式模型SACodeMF),在以Python和SQL语言为例的人工标注数据集上对软件仓库挖掘模型进行参数训练,最后利用训练好的软件仓库挖掘模型对待处理的诸多代码片段进行分类,判定代码片段是否为程序查询描述所对应的独立解决方案。
通过这种基于自注意力去捕获序列信息的以及交互式嵌入相结合的方法,本发明可以提供高质量软件社区仓库,所包含的查询和代码对来实现从自然语言到编程语言的精确映射,以提升跨自然语言和程序语言的代码生成、代码检索和代码摘要等软件任务的性能。
实施例2
基于同样的发明构思,本实施例公开了一种基于自注意力交互式网络的软件社区仓库挖掘装置,如图3所示,包括:输入模块,用于将代码片段、代码片段上下文和查询描述输入软件仓库挖掘模块;软件仓库挖掘模块,输出代码片段是否为查询描述对应的独立解决方案的预测结果,所述软件仓库挖掘模块包括:词嵌入模块,分别对代码片段、代码片段上下文和查询描述进行词嵌入处理;自注意力网络模块,基于自注意力机制分别提取词嵌入处理后的代码片段、代码片段上下文和查询描述的特征矩阵;代码片段和查询描述交互模块,对代码片段和查询描述的语义关联性进行检测获得代码片段的共同注意表示和查询描述的共同注意表示;信息融合模块,通过Bi-GRU对代码片段上下文的特征矩阵平均池化后的池化结果、代码片段的共同注意表示和查询描述的共同注意表示进行融合获得融合信息;标签预测模块,基于融合信息预测代码片段是否为查询描述对应的独立解决方案。
在本实施例中,优选地,如图3所示,还包括模型训练模块,模型训练模块基于人工标注数据集获取训练集和验证集,利用训练集训练软件仓库挖掘模型的网络参数,在验证集上迭代预设次直到损失函数收敛,完成软件仓库挖掘模型训练,其中,损失函数基于onehot分布和均匀分布构建,具体为:
其中,Loss表示损失;ε表示均匀分布损失函数所占比重;第一变量yi0表示代码片段不为查询描述对应的独立解决方案的表示标签,pi0表示yi0的置信度;yi1表示代码片段为查询描述对应的独立解决方案的表示标签,pi1表示yi1的置信度。
由于本发明实施例2所介绍的装置,为实施本发明实施例1中基于自注意力交互式网络的软件社区仓库挖掘方法所采用的装置,故而基于本发明实施例1所介绍的方法,本领域所属人员能够了解该装置的具体结构及变形,故而在此不再赘述。凡是本发明实施例1的方法所采用的装置都属于本发明所欲保护的范围。
实施例3
基于同样的发明构思,本实施例公开了一种计算机可读存储介质300,请参见图4,其上存储有计算机程序311,该程序被执行时实现实施例1中的方法。
由于本发明实施例3所介绍的计算机可读存储介质300为实施本发明实施例1中基于自注意力交互式网络的软件社区仓库挖掘方法所采用的计算机可读存储介质300,故而基于本发明实施例1所介绍的方法,本领域所属人员能够了解该计算机可读存储介质300的具体结构及变形,故而在此不再赘述。凡是本发明实施例1中方法所采用的计算机可读存储介质300都属于本发明所欲保护的范围。
实施例4
基于同样的发明构思,本实施例公开了一种计算机设备,请参见图5,包括存储器401、处理器402及存储在存储器401上并可在处理器402上运行的计算机程序403,处理器402执行上述程序时实现如实施例1中的方法
由于本发明实施例4所介绍的计算机设备为实施本发明实施例1基于自注意力交互式网络的软件社区仓库挖掘方法所采用的计算机设备,故而基于本发明实施例1所介绍的方法,本领域所属人员能够了解该计算机设备的具体结构及变形,故而在此不再赘述。凡是本发明实施例1中方法所采用的计算机设备都属于本发明所欲保护的范围。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.基于自注意力交互式网络的软件社区仓库挖掘方法,其特征在于,将获取的代码片段、代码片段上下文和查询描述输入训练好的软件仓库挖掘模型,所述软件仓库挖掘模型输出代码片段是否为查询描述对应的独立解决方案的预测结果,所述软件仓库挖掘模型包括:
词嵌入层,分别对代码片段、代码片段上下文和查询描述进行词嵌入处理;
自注意力网络层,基于自注意力机制分别提取词嵌入处理后的代码片段、代码片段上下文和查询描述的特征矩阵;
代码片段和查询描述交互层,对代码片段和查询描述的语义关联性进行检测获得代码片段的共同注意表示和查询描述的共同注意表示;
信息融合层,通过Bi-GRU对代码片段上下文的特征矩阵平均池化后的池化结果、代码片段的共同注意表示和查询描述的共同注意表示进行融合获得融合信息;
标签预测层,基于融合信息预测代码片段是否为查询描述对应的独立解决方案。
2.如权利要求1所述的基于自注意力交互式网络的软件社区仓库挖掘方法,其特征在于,所述自注意力网络层具体执行:
步骤S21,分别通过查询权重、键权重、值权重将词嵌入处理后的代码片段/代码片段上下文/查询描述转换为对应的查询向量、键向量和值向量;
步骤S22,将代码片段/代码片段上下文/查询描述对应的查询向量、键向量、值向量输入自注意力机制获得代码片段/代码片段上下文/查询描述的语义信息;
步骤S23,将代码片段/代码片段上下文/查询描述的语义信息输入全连接前馈网络,全连接前馈网络输出代码片段/代码片段上下文/查询描述的特征矩阵。
3.如权利要求2所述的基于自注意力交互式网络的软件社区仓库挖掘方法,其特征在于,代码片段/代码片段上下文/查询描述的特征矩阵为:
4.如权利要求1所述的基于自注意力交互式网络的软件社区仓库挖掘方法,其特征在于,所述代码片段和查询描述交互层具体执行:
步骤S31,计算代码片段和查询描述的语义相关矩阵F:
5.如权利要求1所述的基于自注意力交互式网络的软件社区仓库挖掘方法,其特征在于,所述标签预测层按照如下公式进行预测:
yi=softmax(wyHi+by);
其中,yi表示预测结果,yi=[yi0,yi1],yi0为代码片段不为查询描述对应的独立解决方案的表示标签,yi1表示代码片段为查询描述对应的独立解决方案的表示标签,Hi表示融合信息,wy、by分别表示标签预测层的第一可学习参数、第二可学习参数。
7.基于自注意力交互式网络的软件社区仓库挖掘装置,其特征在于,包括:
输入模块,用于将代码片段、代码片段上下文和查询描述输入软件仓库挖掘模块;
软件仓库挖掘模块,输出代码片段是否为查询描述对应的独立解决方案的预测结果,所述软件仓库挖掘模块包括:
词嵌入模块,分别对代码片段、代码片段上下文和查询描述进行词嵌入处理;
自注意力网络模块,基于自注意力机制分别提取词嵌入处理后的代码片段、代码片段上下文和查询描述的特征矩阵;
代码片段和查询描述交互模块,对代码片段和查询描述的语义关联性进行检测获得代码片段的共同注意表示和查询描述的共同注意表示;
信息融合模块,通过Bi-GRU对代码片段上下文的特征矩阵平均池化后的池化结果、代码片段的共同注意表示和查询描述的共同注意表示进行融合获得融合信息;
标签预测模块,基于融合信息预测代码片段是否为查询描述对应的独立解决方案。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被执行时实现如权利要求1至6中任一项权利要求所述的方法。
10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6中任一项权利要求所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211003813.7A CN115291888A (zh) | 2022-08-22 | 2022-08-22 | 基于自注意力交互式网络的软件社区仓库挖掘方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211003813.7A CN115291888A (zh) | 2022-08-22 | 2022-08-22 | 基于自注意力交互式网络的软件社区仓库挖掘方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115291888A true CN115291888A (zh) | 2022-11-04 |
Family
ID=83830075
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211003813.7A Pending CN115291888A (zh) | 2022-08-22 | 2022-08-22 | 基于自注意力交互式网络的软件社区仓库挖掘方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115291888A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115878094A (zh) * | 2023-01-06 | 2023-03-31 | 粤港澳大湾区数字经济研究院(福田) | 代码搜索方法、装置、设备及存储介质 |
-
2022
- 2022-08-22 CN CN202211003813.7A patent/CN115291888A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115878094A (zh) * | 2023-01-06 | 2023-03-31 | 粤港澳大湾区数字经济研究院(福田) | 代码搜索方法、装置、设备及存储介质 |
CN115878094B (zh) * | 2023-01-06 | 2023-07-14 | 粤港澳大湾区数字经济研究院(福田) | 代码搜索方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109033068B (zh) | 基于注意力机制的用于阅读理解的方法、装置和电子设备 | |
Yu et al. | Beyond bilinear: Generalized multimodal factorized high-order pooling for visual question answering | |
CN108733742B (zh) | 全局归一化阅读器系统和方法 | |
CN108804530B (zh) | 对图像的区域加字幕 | |
CN112487820B (zh) | 一种中文医疗命名实体识别方法 | |
WO2023160472A1 (zh) | 一种模型训练方法及相关设备 | |
Xiao et al. | Dense semantic embedding network for image captioning | |
CN111966812B (zh) | 一种基于动态词向量的自动问答方法和存储介质 | |
CN110990555B (zh) | 端到端检索式对话方法与系统及计算机设备 | |
WO2023236977A1 (zh) | 一种数据处理方法及相关设备 | |
CN112541356A (zh) | 一种生物医学命名实体识别的方法和系统 | |
CN109214006A (zh) | 图像增强的层次化语义表示的自然语言推理方法 | |
US20240152770A1 (en) | Neural network search method and related device | |
Huang et al. | Local-to-global GCN with knowledge-aware representation for distantly supervised relation extraction | |
CN116932722A (zh) | 一种基于跨模态数据融合的医学视觉问答方法及系统 | |
CN110956039A (zh) | 一种基于多维度向量化编码的文本相似度计算方法及装置 | |
Khan et al. | A deep neural framework for image caption generation using gru-based attention mechanism | |
CN114254645A (zh) | 一种人工智能辅助写作系统 | |
CN111597816A (zh) | 一种自注意力命名实体识别方法、装置、设备及存储介质 | |
CN111444720A (zh) | 一种英文文本的命名实体识别方法 | |
CN116982054A (zh) | 使用前瞻树搜索的序列到序列神经网络系统 | |
CN115291888A (zh) | 基于自注意力交互式网络的软件社区仓库挖掘方法及装置 | |
Perdana et al. | Instance-based deep transfer learning on cross-domain image captioning | |
CN116842955A (zh) | 一种基于多特征提取的医学实体关系方法 | |
CN111666375A (zh) | 文本相似度的匹配方法、电子设备和计算机可读介质 |
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 |