CN110427317A - 一种相关值确定方法及装置 - Google Patents
一种相关值确定方法及装置 Download PDFInfo
- Publication number
- CN110427317A CN110427317A CN201910604954.6A CN201910604954A CN110427317A CN 110427317 A CN110427317 A CN 110427317A CN 201910604954 A CN201910604954 A CN 201910604954A CN 110427317 A CN110427317 A CN 110427317A
- Authority
- CN
- China
- Prior art keywords
- code
- review
- target
- feature set
- codes
- 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
- 238000000034 method Methods 0.000 title claims abstract description 74
- 238000007689 inspection Methods 0.000 claims abstract description 48
- 238000012549 training Methods 0.000 claims abstract description 29
- 238000012552 review Methods 0.000 claims description 325
- 230000008569 process Effects 0.000 claims description 35
- 238000013528 artificial neural network Methods 0.000 claims description 22
- 230000015654 memory Effects 0.000 claims description 21
- 238000004458 analytical method Methods 0.000 claims description 19
- 238000004422 calculation algorithm Methods 0.000 claims description 19
- 238000012545 processing Methods 0.000 claims description 18
- 238000003860 storage Methods 0.000 claims description 13
- 239000002243 precursor Substances 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 9
- 238000001914 filtration Methods 0.000 claims description 7
- 238000010276 construction Methods 0.000 abstract description 4
- 238000011156 evaluation Methods 0.000 abstract 1
- 230000000875 corresponding effect Effects 0.000 description 35
- 239000013598 vector Substances 0.000 description 25
- 230000006870 function Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 15
- 239000011159 matrix material Substances 0.000 description 12
- 230000002596 correlated effect Effects 0.000 description 9
- 230000011218 segmentation Effects 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 8
- 230000014509 gene expression Effects 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000007405 data analysis Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000010606 normalization Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 2
- 239000000243 solution Substances 0.000 description 2
- 239000007983 Tris buffer Substances 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000003339 best practice Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
-
- 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/42—Syntactic analysis
- G06F8/425—Lexical analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Machine Translation (AREA)
Abstract
本发明实施例适用于模型托管中的模型构建,公开了一种相关值确定方法,包括:获取至少两行代码中每行代码的第一特征集及目标审查意见的第二特征集,目标审查意见为目标代码的审查意见,目标代码为至少两行代码中的其中一行;将第一特征集和第二特征集输入相关值确定模型中进行学习,确定目标代码和目标审查意见的相关程度,该相关值确定模型由评审代码样本特征训练得到。本发明还相应的提出了一种相关值确定装置。采用本发明,可以预测代码及代码对应的审查意见间的相关程度,从而根据相关程度确定代码的相关数据是否存在误差,或者获取代码对应的审查意见,减少人工处理过程及代码数据误差,从而提高代码审查效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种相关值确定方法及装置。
背景技术
在工业软件和开源软件等系统中,为了确保代码的准确性、可行性、健壮性等,代码审查作为一种早期监测和减少软件缺陷的手段被广泛接受和使用。然而,对于如今的代码审查,一般是通过人工评审方式进行,人工评审中很大部分进行的评审涉及代码的编码风格、编码规范、代码结构及最佳实践等问题,这些内容的审查工作增加了审查人员的工作强度,降低了代码评审过程的效率,而且导致代码本身的重要缺陷问题的审查无法成为重点审查工作。同时,在代码已经存在评审意见时,如果代码发生数据转移或者其他的可能会出现数据更改现象时,可能会出现代码和代码对应的审查意见不匹配的情况,且难以察觉,从而造成代码数据误差。
发明内容
本发明实施例提供了一种相关值确定方法及相关装置,可以预测代码及代码对应的审查意见间的相关程度,从而根据相关程度确定代码的相关数据是否存在误差,或者从大量的审查意见中获取代码对应的审查意见,减少人工处理过程及代码数据误差,从而提高代码审查效率。
本发明实施例第一方面提供了一种相关值确定方法,该方法包括:
获取至少两行代码中每行代码的第一特征集及目标审查意见的第二特征集,所述目标审查意见为目标代码的审查意见,所述目标代码为所述至少两行代码中的其中一行,所述第一特征集包括多个第一元素特征,所述第二特征集包括多个第二元素特征;
将所述第一特征集和所述第二特征集输入相关值确定模型进行学习,确定所述目标代码与所述目标审查意见的相关程度,其中,所述相关值确定模型由评审代码样本特征训练得到,所述评审代码样本特征中至少包括第一样本特征和第二样本特征,所述第一样本特征包括第一评审代码特征集、第一非评审代码特征集及第一审查意见特征集,第一评审代码与第一审查意见对应且相关值不小于第一阈值,所述第二样本特征包括第二评审代码特征集、第二非评审代码特征集及第二审查意见特征集,第二评审代码与第二审查意见对应且相关值小于所述第一阈值。
其中,所述获取至少两行代码中每行代码的第一特征集及目标代码对应的目标审查意见的第二特征集之前,包括:
通过词法分析将所述至少两行代码中每行代码进行拆分,得到所述每行代码对应的多个第一元素,并构建所述多个第一元素中每个第一元素的所述第一元素特征,生成所述每行代码的第一特征集;
通过词法分析将所述目标审查意见进行拆分,得到所述目标审查意见对应的多个第二元素,并构建所述多个第二元素中每个第二元素的所述第二元素特征,生成所述目标审查意见的第二特征集。
其中,所述至少两行代码包括前项代码、目标代码及后项代码,所述前项代码为所述目标代码前一行的代码,所述后项代码为所述目标代码后一行的代码;
所述相关值确定模型包括第一LSTM网络、第二LSTM网络、第三LSTM网络、第四LSTM网络及前馈神经网络;
所述第一特征集包括所述前项代码对应的第一前项特征集、所述目标代码对应的第一目标特征集及所述后项代码对应的第一后项特征集;
所述将所述第一特征集和所述第二特征集输入相关值确定模型,包括:
将所述第一前项特征集输入所述第一LSTM网络进行学习,得到前项代码信息;
将所述第一目标特征集输入所述第二LSTM网络进行学习,得到目标代码信息;
将所述第一后项特征集输入所述第三LSTM网络进行学习,得到后项代码信息;
将所述第二特征集输入所述第四LSTM网络进行学习,得到审查意见信息;
对所述前项代码信息、所述目标代码信息、所述后项代码信息及所述审查意见信息执行分组关联,并输入所述前馈神经网络进行学习。
其中,所述对所述前项代码信息、所述目标代码信息、所述后项代码信息及所述审查意见信息执行分组关联,并输入所述前馈神经网络进行学习,包括:
根据所述前项代码信息、所述目标代码信息及所述审查意见信息构建前项代码约束特征;
根据所述后项代码信息、所述目标代码信息及所述审查意见信息构建后项代码约束特征;
将所述前项代码约束特征和所述后项代码约束特征输入所述前馈神经网络进行学习。
具体的,所述获取至少两行代码中每行代码的第一特征集及目标审查意见的第二特征集之前,所述方法还包括:
获取用于相关值确定训练的至少两类评审代码样本数据,其中,所述至少两类评审代码样本数据至少包括第一评审代码样本数据和第二评审代码样本数据,其中,所述第一评审代码样本数据中包括第一评审代码、第一非评审代码及第一审查意见,所述第一评审代码与所述第一审查意见对应且相关值不小于第一阈值,所述第二评审代码样本数据中包括第二评审代码、第二非评审代码及第二审查意见,所述第二评审代码与所述第二审查意见对应且相关值小于所述第一阈值;
构建任一评审代码样本数据中的评审代码和非评审代码中每行代码的第一样本特征集及审查意见的第二样本特征集,所述第一样本特征集包括多个第一样本元素特征,所述第二样本特征集包括多个第二样本元素特征;
将所述任一评审代码样本数据中的所述第一样本特征集和所述第二样本特征集输入相关值确定模型,根据所述任一评审代码样本数据中所述评审代码和所述审查意见的相关值,更新所述相关值确定模型。
其中,所述获取用于相关值确定训练的至少两类评审代码样本数据,包括:
基于大数据分析从审查意见库中获取多个代码数据,并确定每个代码数据中评审代码与所述评审代码的审查意见的相关值,所述多个代码数据中每个代码数据包括已经进行评审的评审代码和未进行评审的非评审代码;
从获取的所述多个代码数据中选取包括相关值不小于所述第一阈值的第一代码数据和相关值小于所述第一阈值的第二代码数据,作为用于相关值确定训练的评审代码样本数据。
其中,所述方法还包括:
若不存在所述目标代码的审查意见,则从审查意见库中获取多个审查意见,将所述多个审查意见中任一审查意见确定为目标审查意见,执行所述获取至少两行代码中每行代码的第一特征集及目标审查意见的第二特征集的步骤,其中,所述审查意见库中包括多个有意义审查,所述有意义审查意见为对所述目标代码的非肯定性描述。
其中,所述方法还包括:
若存在所述目标代码的审查意见,则通过过滤算法判断所述审查意见是否为无意义审查意见,所述无意义审查意见为对所述目标代码的肯定性描述;
若所述审查意见为无意义审查意见,则删除所述审查意见,执行所述若所述目标代码无审查意见,则从审查意见库中获取多个审查意见,将所述多个审查意见中任一审查意见确定为目标审查意见的过程。
本发明实施例第二方面提供了一种相关值确定装置,该装置包括:
获取模块,用于获取至少两行代码中每行代码的第一特征集及目标审查意见的第二特征集,所述目标审查意见为目标代码的审查意见,所述目标代码为所述至少两行代码中的其中一行,所述第一特征集包括多个第一元素特征,所述第二特征集包括多个第二元素特征;
输入模块,用于将所述第一特征集和所述第二特征集输入相关值确定模型进行学习;
确定模块,用于基于所述相关值确定模型确定所述目标代码与所述目标审查意见的相关程度。
其中,该装置还包括:
训练模块,用于通过评审代码样本特征训练得到所述相关值确定模型,所述评审代码样本特征中至少包括第一样本特征和第二样本特征,所述第一样本特征包括第一评审代码特征集、第一非评审代码特征集及第一审查意见特征集,第一评审代码与第一审查意见对应且相关值不小于第一阈值,所述第二样本特征包括第二评审代码特征集、第二非评审代码特征集及第二审查意见特征集,第二评审代码与第二审查意见对应且相关值小于所述第一阈值。
其中,所述装置还包括:
分词模块,用于通过词法分析将所述至少两行代码中每行代码进行拆分,得到所述每行代码对应的多个第一元素;
生成模块,用于构建所述分词模块得到的多个第一元素中每个第一元素的所述第一元素特征,生成所述每行代码的第一特征集;
所述分词模块,还用于通过词法分析将所述目标审查意见进行拆分,得到所述目标审查意见对应的多个第二元素;
所述生成模块,还用于构建所述分词模块得到的多个第二元素中每个第二元素的所述第二元素特征,生成所述目标审查意见的第二特征集。
其中,所述至少两行代码包括前项代码、目标代码及后项代码,所述前项代码为所述目标代码前一行的代码,所述后项代码为所述目标代码后一行的代码;
所述相关值确定模型包括第一LSTM网络、第二LSTM网络、第三LSTM网络、第四LSTM网络及前馈神经网络;
所述第一特征集包括所述前项代码对应的第一前项特征集、所述目标代码对应的第一目标特征集及所述后项代码对应的第一后项特征集;
所述输入模块,还用于:
将所述第一前项特征集输入所述第一LSTM网络进行学习,得到前项代码信息;
将所述第一目标特征集输入所述第二LSTM网络进行学习,得到目标代码信息;
将所述第一后项特征集输入所述第三LSTM网络进行学习,得到后项代码信息;
将所述第二特征集输入所述第四LSTM网络进行学习,得到审查意见信息;
对所述前项代码信息、所述目标代码信息、所述后项代码信息及所述审查意见信息执行分组关联,并输入所述前馈神经网络进行学习。
其中,所述输入模块还用于:
根据所述前项代码信息、所述目标代码信息及所述审查意见信息构建前项代码约束特征;
根据所述后项代码信息、所述目标代码信息及所述审查意见信息构建后项代码约束特征;
将所述前项代码约束特征和所述后项代码约束特征输入所述前馈神经网络进行学习。
其中,所述训练模块包括:
获取单元,用于获取用于相关值确定训练的至少两类评审代码样本数据,其中,所述至少两类评审代码样本数据至少包括第一评审代码样本数据和第二评审代码样本数据,其中,所述第一评审代码样本数据中包括第一评审代码、第一非评审代码及第一审查意见,所述第一评审代码与所述第一审查意见对应且相关值不小于第一阈值,所述第二评审代码样本数据中包括第二评审代码、第二非评审代码及第二审查意见,所述第二评审代码与所述第二审查意见对应且相关值小于所述第一阈值;
生成单元,用于构建任一评审代码样本数据中的评审代码和非评审代码中每行代码的第一样本特征集及审查意见的第二样本特征集,所述第一样本特征集包括多个第一样本元素特征,所述第二样本特征集包括多个第二样本元素特征;
更新单元,用于将所述任一评审代码样本数据中的所述第一样本特征集和所述第二样本特征集输入相关值确定模型,根据所述任一评审代码样本数据中所述评审代码和所述审查意见的相关值,更新所述相关值确定模型。
其中,所述获取单元还用于:
基于大数据分析从审查意见库中获取多个代码数据,并确定每个代码数据中评审代码与所述评审代码的审查意见的相关程度,所述多个代码数据中每个代码数据包括已经进行评审的评审代码和未进行评审的非评审代码;
从获取的所述多个代码数据中选取包括相关值不小于所述第一阈值的第一代码数据和相关值小于所述第一阈值的第二代码数据,作为用于相关值确定训练的评审代码样本数据。
其中,所述获取模块还用于:
若不存在所述目标代码的审查意见,则从审查意见库中获取多个审查意见;
所述确定模块还用于:将所述获取模块获取到的多个审查意见中任一审查意见确定为目标审查意见,并通过所述获取模块执行所述获取至少两行代码中每行代码的第一特征集及目标审查意见的第二特征集的步骤。
其中,所述装置还包括:
判断模块,用于若存在所述目标代码的审查意见,则通过过滤算法判断所述审查意见是否为无意义审查意见,所述无意义审查意见为对所述目标代码的肯定性描述;
删除模块,用于若所述判断模块判断所述审查意见为无意义审查意见,则删除所述审查意见,通过所述获取模块执行所述若所述目标代码无审查意见,则从审查意见库中获取多个审查意见,将所述多个审查意见中任一审查意见确定为目标审查意见的过程。
本发明实施例第三方面提供了一种电子设备,该电子设备包括处理器、存储器、收发器;
所述处理器分别与所述存储器和所述收发器相连,其中,所述收发器用于接收输入数据并生成输出数据,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行如本发明实施例第一方面中所述的相关值确定方法。
本发明实施例通过获取至少两行代码中每行代码的第一特征集及目标审查意见的第二特征集,该目标审查意见为目标代码的审查意见,目标代码为至少两行代码中的其中一行,将第一特征集和第二特征集输入相关值确定模型,基于该相关值确定模型确定目标代码和目标审查意见的相关程度,其中,相关值确定模型是由评审代码样本特征训练得到,具体是通过评审代码样本数据中的代码数据、该代码数据中评审代码和评审代码的审查意见的相关值对相关值确定模型进行训练,更新相关值确定模型。从而可以根据该相关值确定模型得到的相关值确定目标代码与目标审查意见是否匹配,进而判断该目标代码的相关数据是否存在误差。同时,可以通过从审查意见库中获取多个审查意见,通过该相关值确定模型确定每个审查意见与目标代码的相关程度,进而根据该相关程度确定目标代码对应的目标审查意见。减少了人工处理过程及代码相关数据误差,从而提高了代码审查效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
其中:
图1是本发明实施例提供的一种相关程度确定流程示意图;
图2是本发明实施例提供的获取第一特征集和第二特征集的一种示意图;
图3是本发明实施例提供的一种相关值确定模型示意图;
图4是本发明实施例提供的一种相关值确定模型训练流程图;
图5是本发明实施例提供的一种相关程度确定装置示意图;
图6是本发明实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
首先,对本发明实施例中提到的词法分析、词法单元、词素、线性整流函数、长短时记忆网络及正则表达式进行介绍。
1、词法分析(Lexical Analysis):读入源程序的输入字符,将其组成词素,生成并输出一个词法单元序列,每个词法单元对应一个词素。具体的,是将获取的输入数据进行分析拆分,得到多个词法单元。
2、词法单元:由一个词法单元名和一个可选的属性值组成。词法单元名是一个表示某种词法单位的抽象符号,如一个特定的关键字或代表一个标识符的输入字符序列。
3、词素:源程序中的一个字符序列,和某个词法单元的模式匹配,并被词法分析器识别为该词法单元的一个实例。
4、线性整流函数,Rectified Linear Unit,简称ReLU,又称修正线性单元,是一种人工神经网络中常用的激活函数,通常指代以斜坡函数及其变种为代表的非线性函数。
5、长短时记忆网络,Long Short Term Memory Network,简称LSTM,是一种时间递归神经网络,通过门结构实现对输入信息的添加或删除,只有符合算法认证的信息才会留下。
6、正则表达式:又称规则表达式,Regular Expression,通常被用来检索、替换那些符合某个模式(规则)的文本,是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
具体的,参见图1,图1是本发明实施例提供的一种相关程度确定流程示意图。如图1所示,该相关程度确定流程示意图包括如下步骤:
步骤S101,获取至少两行代码中每行代码的第一特征集及目标审查意见的第二特征集。
具体的,获取至少两行代码中每行代码的第一特征集及目标审查意见的第二特征集,该目标审查意见是目标代码的审查意见,目标代码是至少两行代码中的其中一行,其中第一特征集包括多个第一元素特征,第二特征集包括多个第二元素特征。
具体的,该第一特征集和第二特征集是通过对至少两行代码及目标审查意见分词处理并进行组合得到。具体的,通过词法分析将至少两行代码中每行代码进行拆分,得到每行代码对应的多个第一元素,并构建多个第一元素中每个元素的第一元素特征,根据每个元素的第一元素特征生成每行代码的第一特征集;通过词法分析将目标审查意见进行拆分,得到目标审查意见对应的多个第二元素,并构建多个第二元素中每个第二元素的第二元素特征,根据每个第二元素的第二元素特征生成目标审查意见的第二特征集。
可选的,参见图2,图2是本发明实施例提供的获取第一特征集和第二特征集的一种示意图,如图2所示,在一种可能的实现方式中,获取到的至少两行代码及目标审查意见20a中,包括至少两行代码201a及目标审查意见202a,上述至少两行代码201a包括前项代码2011a、目标代码2012a及后项代码2013a,前项代码2011a为目标代码2012a前一行的代码,后项代码2013a为目标代码2012a后一行的代码。在获取到上述至少两行代码201a及目标审查意见202a后,通过词法分析将前项代码2011a进行拆分,得到多个前项词组,并获取多个前项词组中每个前项词组的声明,将每个前项词组的声明及其该前项词组组合得到多个前项词法单元,将多个前项词法单元进行关联生成第一前项特征集2011b;同理通过词法分析将目标代码2012a进行拆分,得到多个目标词组,并获取多个目标词组中每个目标词组的声明,将每个目标词组的声明及其该目标词组组合得到多个目标词法单元,将多个目标词法单元进行关联生成第一目标特征集2012b;通过词法分析将后项代码2013a进行拆分,得到多个后项词组,并获取多个后项词组中每个后项词组的声明,将每个后项词组的声明及其该后项词组组合得到多个后项词法单元,将多个后项词法单元进行关联生成第一后项特征集2013b;通过词法分析将目标审查意见202a进行拆分,得到多个审查词组,并获取多个审查词组中每个审查词组的声明,每个审查词组的声明可以是审查词组的词性,也可以是审查词组的描述性说明等,此处不加以限定,将每个审查词组的声明及其该审查词组组合得到多个审查词法单元,将多个审查词法单元进行关联生成第二特征集202b。其中,在本实现方式中,可以认为,上述第一特征集包括前项代码2011a对应的第一前项特征集2011b、目标代码2012a对应的第一目标特征集2012b及后项代码2013a对应的第一后项特征集2013b;上述第一特征集201b包括的多个第一元素特征为第一前项特征集2011b包括的多个前项词法单元、第一目标特征集2012b包括的多个目标词法单元及第一后项特征集2013b包括的多个后项词法单元;上述第二特征集202b包括的多个第二元素特征为多个审查词法单元。
其中,这里假定将该第一前项特征集2011b记作 将第一目标特征集2012b记作 将第一后项特征集2013b记作 将第二特征集202b记作{R1,R2,...,Ri,...,Rk},n、m、p、k为大于0的整数。其中,表示第一前项特征集2011b中的第i个前项词法单元,表示第一目标特征集2012b中的第i个目标词法单元,表示第一后项特征集2013b中的第i个后项词法单元,Ri表示第二特征集202b中的第i个审查词法单元。
举例来说:目标代码为“x=a+b*2;”,该目标代码的目标审查意见为“该算法的计算效率较低,需要重新设计”。
首先,通过词法分析对该目标代码进行拆分,得到多个目标词组“x”、“=”、“a”、“+”、“b”、“*”、“2”、“;”,获取多个目标词组的声明,可以得到“x”的声明为“identifier”,“=”的声明为“operator”,“a”的声明为“identifier”,“+”的声明为“operator”,“b”的声明为“identifier”,“*”的声明为“operator”,“2”的声明为“literal”,“;”的声明为“separator”,将每个目标词组组合得到多个目标词法单元,将多个目标词法单元进行关联得到目标词法单元序列“[(identifier,x),(operator,=),(identifier,a),(operator,+),(identifier,b),(operator,*),(literal,2),(separator,;)]”,并通过向量转换算法将目标词法单元序列转换成向量,生成第一目标特征集;
其次,将前项代码转换成第一前项特征集,将后项代码转换成第一后项特征集;通过词法分析对目标审查意见进行拆分提取,得到多个审查词组,包括“算法”、“计算效率”、“较低”、“设计”,获取每个审查词组的声明,假设此处审查词组的声明为审查词组的词性,则可得到“算法”的声明为“名词”,“计算效率”的声明为“名词”、“较低”的声明为“形容词”、“设计”的声明为“动词”,将每个审查词组的声明及其该审查词组进行组合得到多个审查词法单元,将多个审查词法单元关联得到审查词法单元序列“[(名词,算法),(名词,计算效率),(形容词,较低),(动词,设计)]”,并通过向量转换算法将审查词法单元序列转换成向量,生成第二特征集。
其中,该向量转换算法可以是word2vec算法,该word2vec是一群用于产生词向量的相关模型,可用来映射每个词到一个向量,可以用来表示词对词间的关系,是通过当前词组的前后词组进行预测,得到当前词组的对应向量。
步骤S102,将第一特征集和第二特征集输入相关值确定模型进行学习,确定目标代码与目标审查意见的相关程度。
具体的,相关值确定模型由评审代码样本特征训练得到,该评审代码样本特征中至少包括第一样本特征和第二样本特征,第一样本特征包括第一评审代码特征集、第一非评审代码特征集及第一审查意见特征集,第一评审代码与第一审查意见对应且相关值不小于第一阈值,所述第二样本特征包括第二评审代码特征集、第二非评审代码特征集及第二审查意见特征集,第二评审代码与第二审查意见对应且相关值小于所述第一阈值。具体的相关值确定模型的训练过程见图4所示,在此不做赘述。
具体的,对于根据相关程度确定该目标代码与目标审查意见是否相关,在一种可能的实现方式中,相关程度包括相关性系数。具体是基于该相关值确定模型直接得到目标代码与目标审查意见间的相关性系数。其中,该相关性系数为目标代码与目标审查意见间的相关值,当该相关性系数不小于第一阈值时,表示目标代码与目标审查意见相关;当该相关性系数小于第一阈值时,表示目标代码与目标审查意见间不相关。
在另一种可能的实现方式中,相关程度包括相关性系数和不相关性系数。具体是基于该相关值确定模型得到目标代码与目标审查意见间的相关性系数和不相关性系数。其中,相关性系数和不相关性系数的和为1。在这一情况下,可以通过相关性系数和第一阈值的比较来确定目标代码与目标审查意见的相关程度,例如,当该相关性系数不小于第一阈值时,表示目标代码与目标审查意见相关;当该相关性系数小于第一阈值时,表示目标代码与目标审查意见间不相关;或者当相关性系数大于不相关性系数时,表示目标代码与目标审查意见相关。或者同理,还可以通过不相关性系数与第二阈值的比较来确定目标代码与目标审查意见的相关程度,在此不再赘述。
其中,参见图3,图3是本发明实施例提供的一种相关值确定模型示意图。如图3所示,在上述至少两行代码为三行代码时,例如包括前项代码、目标代码及后项代码的情况下,上述相关值确定模型30包括LSTM网络301和前馈神经网络302,该LSTM网络301包括第一LSTM网络3011、第二LSTM网络3012、第三LSTM网络3013、第四LSTM网络3014。
具体的,将第一前项特征集输入第一LSTM网络3011进行学习,得到前项代码信息eupper;将第一目标特征集输入第二LSTM网络3012进行学习,得到目标代码信息ecurrent;将第一后项特征集输入第三LSTM网络3013进行学习,得到后项代码信息elower;将第二特征集输入第四LSTM网络3014进行学习,得到审查意见信息er。该过程可以记作:
er=LSTMr(Tr[Ri]) ④
其中,eupper、ecurrent、elower、er为四个LSTM网络的输出;Tx、Tr是嵌入映射(embeddingmapping)函数,表示对前项词法单元序列、目标词法单元序列、后项词法单元序列及审查词法单元序列进行向量转换的过程。其中,上述四个LSTM网络是通用的神经网络,用于对输入的向量进行特征提取。
对前项代码信息、目标代码信息、后项代码信息及审查意见信息执行分组关联,并输入前馈神经网络302进行学习。具体的,根据前项代码信息、目标代码信息及审查意见信息构建前项代码约束特征;根据后项代码信息、目标代码信息及审查意见信息构建后项代码约束特征;将前项代码约束特征和后项代码约束特征输入前馈神经网络302中进行学习。
具体的,在一种可能的实现方式中,根据前项代码信息eupper、目标代码信息ecurrent及审查意见信息er构建前项代码约束特征[eupper|ecurrent|er],并将该前项代码约束特征[eupper|ecurrent|er]与第一权重矩阵W1进行计算,得到第一隐藏特征A1;根据后项代码信息elower、目标代码信息ecurrent及审查意见信息er构建后项代码约束特征[elower|ecurrent|er],并将该后项代码约束特征[elower|ecurrent|er]与第二权重矩阵W2进行计算,得到第二隐藏特征A2,通过稀疏算法对第一隐藏特征A1和第二隐藏特征A2进行处理并关联,得到隐藏特征A。其中,该稀疏算法可以是Relu函数,对第一隐藏特征A1和第二隐藏特征A2引入非线性因素,减少参数间的相互依存关系,增加层与层间的非线性关系。该处理过程可以记作:
A=Relu(W1[eupper|ecurrent|er])|Relu(W2[elower|ecurrent|er]) ⑤
其中,一种可能的情况下,该Relu函数可以是relu(x)=max(0,x)函数。|为拼接运算符,是一种可能的关联方式;第一权重矩阵W1包括W11、W12和W13三部分,第二权重矩阵W2包括W21、W22和W23三部分。
具体的,将隐藏特征A与第三权重矩阵Wf进行计算,并进行归一化处理,得到目标代码与目标审查意见的相关性。其中,该归一化处理公式可以记作:
Srelevance∝Softmax(WfA) ⑥
其中,∝表示成正比,指相关性计算公式的结果正比于Softmax函数的计算结果,此处可以表示为该相关性计算公式的结果是通过该Softmax函数计算得到。Softmax函数为归一化指数函数,实际上是有限项离散概率分布的梯度对数归一化,用于将一个含任意实数的K维向量Z“压缩”到另一个K维实向量σ(Z)中,使得每一个元素的范围都在(0,1)之间,并且所有元素的和为1。
在根据归一化处理公式得到相关值确定模型的预测相关程度Srelevance后,在一种可能的实现方式中,若该预测相关程度Srelevance包括一个值,该值为相关性系数,则获取该相关性系数,当该相关性系数不小于第一阈值,则确定目标代码和目标审查意见相关;当该相关性系数小于第一阈值时,则确定目标代码和目标审查意见不相关。
在另一种可能的实现方式中,若该预测相关程度Srelevance包括两个值,该值为相关性系数和不相关性系数,则获取该相关性系数和不相关性系数。其中,该相关性系数和不相关性系数之和为1。在这一情况下,可以通过相关性系数和第一阈值的比较来确定目标代码与目标审查意见的相关程度,例如,若该相关性系数不小于第一阈值,或相关性系数大于不相关性系数时,确定目标代码和目标审查意见相关;否则确定目标代码和目标审查意见不相关。或者同理,还可以通过不相关性系数与第二阈值的比较来确定目标代码与目标审查意见的相关程度,在此不再赘述。
具体来说,若上述至少两行代码为N行代码,N为大于3的整数,在一种可能的实现方式中,从N行代码中获取包括目标代码在内的三行代码,该三行代码包括目标代码的前一行代码、目标代码及目标代码的后一行代码,执行上述步骤S101~步骤S102所示的相关程度确定过程,得到目标代码和目标审查意见的相关程度。
若上述至少两行代码为N行代码,N为大于3的整数,在另一种可能的实现方式中,当将第一特征集和第二特征集输入相关值确定模型进行学习时,该相关值确定模型包括N+1个LSTM网络和前馈神经网络,将N行代码中每一行代码输入一个LSTM网络,并将目标审查意见输入一个LSTM网络,在该条件下执行上述步骤S101~步骤S102,从而确定目标代码和目标审查意见的相关程度。
上述步骤S101~步骤S102为本发明实施例中一种可能的实现方式,该实现方式为目标代码存在审查意见,且不对该目标代码的审查意见进行判断的情况下,通过相关值确定模型确定目标代码和目标审查意见的相关程度。
在另一种可能的实现方式中,可以对目标代码的审查意见进行判断。具体的,若不存在目标代码的审查意见,则从审查意见库中获取多个审查意见,将多个审查意见中的每个审查意见作为目标审查意见,与目标代码通过上述图1所示步骤S101~步骤S102,确定目标代码和目标审查意见间的相关程度,并根据该相关程度确定该目标代码与目标审查意见是否相关,具体参见图1中步骤S102中所示根据相关程度确定该目标代码与目标审查意见是否相关的步骤,若目标代码与目标审查意见相关,则表示该目标审查意见为该目标代码的审查意见。其中,上述审查意见库中包括多个有意义审查意见,有意义审查意见为对目标代码的非肯定性描述。
若存在目标代码的审查意见,则可以先通过过滤算法判断该审查意见是否为无意义审查意见,对该审查意见进行过滤,其中,无意义审查意见可以认为是对代码的肯定性描述等,即无法对目标代码的改进做出贡献的审查意见。其中,该过滤算法可以是正则表达式。若该审查意见为无意义审查意见,则删除该审查意见,返回执行上述若不存在目标代码的审查意见,则从审查意见库中获取多个审查意见,将多个审查意见中的每个审查意见作为目标审查意见的过程;若该审查意见为有意义审查意见,则返回执行上述获取第一特征集和第二特征集的过程。
或者,在又一种可能的实现方式中,在上述步骤S101中,获取到目标代码的目标审查意见拆分得到的多个审查词组中每个审查词组的声明后,获取每个审查词组的声明的词义偏向,若多个审查词组的声明的词义偏向均为正向说明,则结束此次的相关值确定过程,否则继续执行上述获取第二特征集的过程。其中,本过程可以根据需求增加或者删除。
具体的,通过本发明实施例,可以通过相关值确定模型对目标代码和目标审查意见的相关程度,从而判断目标代码与目标审查意见间是否匹配,进而判断该目标代码的相关数据是否存在误差。还可以获取多个审查意见,通过相关值确定模型确定目标代码和多个审查意见中任一审查意见的相关程度,若该相关程度包括的相关性系数不小于第一阈值,则该相关程度对应的审查意见为目标代码的审查意见。从而减少人工处理过程及代码相关数据误差,进而提高代码审查效率和准确性。
具体的,在一种可能的实现方式中,假定第一LSTM网络输出结果的设定长度为5,第二LSTM网络输出结果的设定长度为4,第三LSTM网络输出结果的设定长度为6;第四LSTM网络输出结果的设定长度为3。对目标代码和目标审查意见执行如图1所示步骤S101~步骤S102,将第一前项特征集输入第一LSTM网络中,得到对应的前项代码信息eupper,可以认为是1*5向量;将第一目标特征集输入第二LSTM网络中,得到对应的目标代码信息ecurrent,可以认为是1*4向量;将一后项特征集输入第三LSTM网络中,得到对应的后项代码信息elower,可以认为是1*6向量;将第二特征集输入第四LSTM网络中,得到对应的审查意见信息er,可以认为是1*3向量。
将eupper、ecurrent、er进行关联,得到1*12向量,并与W1进行加权求和,此处的W1可以认为是12*q的向量,从而得到第一加权结果1*q向量;将elower、ecurrent、er进行关联,得到1*13向量,并与W2进行加权求和,此处的W2可以认为是12*q的向量,从而得到第二加权结果1*q向量。将第一加权结果和第二加权结果进行关联,得到关联结果1*2q向量。最终将关联结果与Wf进行加权求和,得到相关值确定模型的相关性预测结果,该相关性预测结果包括:相关和相关性系数及不相关和不相关性系数,可以认为是1*2向量,此时的Wf可以认为是2q*2的向量。其中,q为大于0的整数。当0表示不相关,1表示相关时,假定得到0的系数为0.1,1的系数为0.9,1的系数大于第一阈值,因此可以预测该目标代码和目标审查意见相关。
参见图4,图4是本发明实施例提供的一种相关值确定模型训练流程图。如图4所示,该相关值确定模型训练过程包括如下步骤:
步骤S401,获取用于相关值确定训练的至少两类评审代码样本数据。
具体的,基于大数据分析从审查意见库中获取多个代码数据,并确定每个代码数据中评审代码与该评审代码的审查意见的相关值,上述多个代码数据中每个代码数据包括已经进行评审的评审代码和未进行评审的非评审代码;从获取的多个代码数据中选取包括相关值不小于第一阈值的第一代码数据和相关值小于第一阈值的第二代码数据,作为用于相关值确定训练的评审代码样本数据。
获取上述评审代码样本数据,该评审代码样本数据至少包括第一评审代码样本数据和第二评审代码样本数据,其中,第一评审代码样本数据包括第一评审代码、第一非评审代码及第一审查意见,第一评审代码与第一审查意见对应且相关值不小于第一阈值,可以认为第一评审代码及第一非评审代码为上述第一代码数据;第二评审代码样本数据中包括第二评审代码、第二非评审代码及第二审查意见,第二评审代码与第二审查意见对应且相关值小于第一阈值,可以认为第二评审代码与第二非评审代码为上述第二代码数据。
步骤S402,构建任一评审代码样本数据中的评审代码和非评审代码中每行代码的第一样本特征集及审查意见的第二样本特征集。
具体的,构建任一评审代码样本数据中的评审代码和非评审代码中每行代码的第一样本特征集及审查意见的第二样本特征集,具体的构建方式见图1中所示步骤S101,在此不做赘述。
具体的,包括通过上述图1中所示步骤S101,构建上述第一评审代码样本数据中的第一评审代码和第一非评审代码中每行代码的一类第一样本特征集,及第一审查意见的一类第二样本特征集;通过上述图1中所示步骤S101,构建上述第二评审代码样本数据中的第二评审代码和第二非评审代码中每行代码的二类第一样本特征集,及第二审查意见的二类第二样本特征集。
步骤S403,根据所述任一评审代码样本数据中所述评审代码和所述审查意见的相关值,更新所述相关值确定模型。
具体的,将任一评审代码样本数据中的第一样本特征集和第二样本特征集输入相关值确定模型中,根据任一评审代码样本数据中评审代码和审查意见的相关值,更新相关值确定模型。具体包括将第一评审代码样本数据中的一类第一样本特征集和一类第二样本特征集输入相关值确定模型,根据第一评审代码样本数据中第一评审代码和第一审查意见的相关值不小于第一阈值,更新相关值确定模型中的参数,实现对相关性预测的模型构建;将第二评审代码样本数据中的二类第一样本特征集和二类第二样本特征集输入相关值确定模型,根据第二评审代码和第二审查意见的相关值小于第一阈值,更新相关值确定模型中的参数,实现对不相关性预测的模型构建。具体的,将第一样本特征集和第二样本特征集输入相关值确定模型后,执行如上述图1中步骤S102所示过程,并对相关值确定模型中的参数进行调整,从而使得该相关值确定模型的预测相关值与评审代码样本数据中评审代码和审查意见的相关值间的误差最小,进而得到更新后的相关值确定模型。
具体的,假定每个代码数据都包括前项代码数据、目标代码数据和后项代码数据,则将一类第一样本特征集和一类第二样本特征集输入相关值确定模型后,执行如上述图1中步骤S102所示过程,计算公式⑥得到的预测相关值与第一评审代码和第一审查意见间的相关值的误差,对第一权重矩阵W1、第二权重矩阵W2及第三权重矩阵Wf进行调整,继续执行上述公式⑤和公式⑥所示过程,并返回执行计算公式⑥得到的预测相关值与第一评审代码和第一审查意见间的相关值的误差的过程,直至该误差最小,从而实现对该相关值确定模型的参数更新,提高对代码和审查意见相关时的预测准确性;将二类第一样本特征集和二类第二样本特征集输入相关值确定模型后,执行如上述图1中步骤S102所示过程,计算公式⑥得到的预测相关值与第二评审代码和第二审查意见间的相关值的误差,对第一权重矩阵W1、第二权重矩阵W2及第三权重矩阵Wf进行调整,继续执行上述公式⑤和公式⑥所示过程,并返回执行计算公式⑥得到的预测相关值与第二评审代码和第二审查意见间的相关值的误差的过程,直至该误差最小,从而实现对该相关值确定模型的参数更新,提高对代码和审查意见不相关时的预测准确性。其中,该相关值确定模型的参数初始值为随机生成,或者获取神经网络中的参数经验值,或者获取配置信息得到。
本发明实施例从评审代码和审查意见相关及评审代码和审查意见不相关两个方向对预测模型中的参数进行更新,并构建相关值确定模型,使得目标代码和目标审查意见在相关或不相关的情况下,都可以得到较为准确的预测结果,提高相关值确定效率和准确性。
可选的,参见图5,图5是本发明实施例提供的相关值确定装置示意图。如图5所示,该相关值确定装置50可以用于上述图1或图4所对应实施例中的电子设备,具体的,该装置可以包括:获取模块501、输入模块502及确定模块503。
获取模块501,用于获取至少两行代码中每行代码的第一特征集及目标审查意见的第二特征集,目标审查意见为目标代码的审查意见,目标代码为上述至少两行代码中的其中一行,第一特征集包括多个第一元素特征,第二特征集包括多个第二元素特征;
输入模块502,用于将第一特征集和第二特征集输入相关值确定模型模型进行学习;
确定模块503,用于基于所述相关值确定模型确定所述目标代码与所述目标审查意见的相关程度。
其中,上述相关值确定装置50还包括:
训练模块504,用于通过评审代码样本特征训练得到相关值确定模型,上述评审代码样本特征中至少包括第一样本特征和第二样本特征,第一样本特征包括第一评审代码特征集、第一非评审代码特征集及第一审查意见特征集,第一评审代码与第一审查意见对应且相关值不小于第一阈值,第二样本特征包括第二评审代码特征集、第二非评审代码特征集及第二审查意见特征集,第二评审代码与第二审查意见对应且相关值小于所述第一阈值。
其中,上述相关值确定装置50还包括:
分词模块505,用于通过词法分析将上述至少两行代码中每行代码进行拆分,得到每行代码对应的多个第一元素;
生成模块506,用于构建上述分词模块505得到的多个第一元素中每个第一元素的第一元素特征,生成每行代码的第一特征集;
上述分词模块505,还用于通过词法分析将目标审查意见进行拆分,得到目标审查意见对应的多个第二元素;
上述生成模块506,还用于构建上述分词模块505得到的多个第二元素中每个第二元素的第二元素特征,生成目标审查意见的第二特征集。
其中,上述至少两行代码包括前项代码、目标代码及后项代码,前项代码为目标代码前一行的代码,后项代码为目标代码后一行的代码;
该相关值确定模型包括第一LSTM网络、第二LSTM网络、第三LSTM网络、第四LSTM网络及前馈神经网络;
第一特征集包括前项代码对应的第一前项特征集、目标代码对应的第一目标特征集及后项代码对应的第一后项特征集;
上述输入模块502,还用于:
将第一前项特征集输入第一LSTM网络进行学习,得到前项代码信息;
将第一目标特征集输入第二LSTM网络进行学习,得到目标代码信息;
将第一后项特征集输入第三LSTM网络进行学习,得到后项代码信息;
将第二特征集输入第四LSTM网络进行学习,得到审查意见信息;
对前项代码信息、目标代码信息、后项代码信息及审查意见信息执行分组关联,并输入前馈神经网络进行学习。
其中,上述输入模块502,还用于:
根据前项代码信息、目标代码信息及审查意见信息构建前项代码约束特征;
根据后项代码信息、目标代码信息及审查意见信息构建后项代码约束特征;
将前项代码约束特征和后项代码约束特征输入前馈神经网络进行学习。
其中,上述训练模块504包括:
获取单元5041,用于获取用于相关值确定训练的至少两类评审代码样本数据,其中,上述至少两类评审代码样本数据至少包括第一评审代码样本数据和第二评审代码样本数据,其中,第一评审代码样本数据中包括第一评审代码、第一非评审代码及第一审查意见,第一评审代码与第一审查意见对应且相关值不小于第一阈值,第二评审代码样本数据中包括第二评审代码、第二非评审代码及第二审查意见,第二评审代码与第二审查意见对应且相关值小于所述第一阈值;
生成单元5042,用于构建任一评审代码样本数据中的评审代码和非评审代码中每行代码的第一样本特征集及审查意见的第二样本特征集,第一样本特征集包括多个第一样本元素特征,第二样本特征集包括多个第二样本元素特征;
更新单元5043,用于将任一评审代码样本数据中的第一样本特征集和第二样本特征集输入相关值确定模型,根据任一评审代码样本数据中评审代码和审查意见的相关值,更新上述相关值确定模型。
其中,上述获取单元5041,还用于:
基于大数据分析从审查意见库中获取多个代码数据,并确定每个代码数据中评审代码与该评审代码的审查意见的相关程度,上述多个代码数据中每个代码数据包括已经进行评审的评审代码和未进行评审的非评审代码;
从获取的多个代码数据中选取包括相关值不小于所述第一阈值的第一代码数据和相关值小于所述第一阈值的第二代码数据,作为用于相关值确定训练的评审代码样本数据。
其中,上述获取模块501还用于:
若不存在目标代码的审查意见,则从审查意见库中获取多个审查意见;
上述确定模块503还用于:将上述获取模块501获取到的多个审查意见中任一审查意见确定为目标审查意见,并通过上述获取模块501执行上述获取至少两行代码中每行代码的第一特征集及目标审查意见的第二特征集的步骤。
其中,上述相关值确定装置50还包括:
判断模块507,用于若存在目标代码的审查意见,则通过过滤算法判断审查意见是否为无意义审查意见,无意义审查意见为对目标代码的肯定性描述;
删除模块508,用于若上述判断模块507判断该审查意见为无意义审查意见,则删除该审查意见,通过上述获取模块501执行上述若目标代码无审查意见,则从审查意见库中获取多个审查意见,将上述多个审查意见中任一审查意见确定为目标审查意见的过程。
本发明实施例提供了一种相关值确定装置,上述装置通过获取至少两行代码中每行代码的第一特征集和目标审查意见的第二特征集,该目标审查意见为目标代码的审查意见,目标代码为至少两行代码中的其中一行,将第一特征集和第二特征集输入相关值确定模型中进行学习,确定目标代码和目标审查意见的相关程度。从而根据该相关程度确定目标代码和目标审查意见是否匹配,进而判断该目标代码的相关数据是否存在误差。同时,该装置还可以通过从审查意见库中获取多个审查意见,通过该相关值确定模型确定每个审查意见和目标代码的相关程度,进而根据该相关程度确定目标代码对应的目标审查意见。减少了人工处理过程及代码相关数据误差,从而提高代码审查效率。
参见图6,图6是本发明实施例提供的电子设备的结构示意图。如图6所示,本实施例中的电子设备可以包括:一个或多个处理器601、存储器602和收发器603。上述处理器601、存储器602和收发器603通过总线604连接。存储器602用于存储计算机程序,该计算机程序包括程序指令,收发器603用于接收输入数据并生成输出数据;处理器601用于执行存储器602存储的程序指令,执行如下操作:
获取至少两行代码中每行代码的第一特征集及目标审查意见的第二特征集,、目标审查意见为目标代码的审查意见,目标代码为上述至少两行代码中的其中一行,第一特征集包括多个第一元素特征,第二特征集包括多个第二元素特征;
将第一特征集和第二特征集输入相关值确定模型进行学习,确定所述目标代码与所述目标审查意见的相关程度,其中,相关值确定模型由评审代码样本特征训练得到,评审代码样本特征中至少包括第一样本特征和第二样本特征,第一样本特征包括第一评审代码特征集、第一非评审代码特征集及第一审查意见特征集,第一评审代码与第一审查意见对应且相关值不小于第一阈值,第二样本特征包括第二评审代码特征集、第二非评审代码特征集及第二审查意见特征集,第二评审代码与第二审查意见对应且相关值小于第一阈值。
在一些可行的实施方式中,上述处理器601可以是中央处理单元(centralprocessing unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digitalsignal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该存储器602可以包括只读存储器和随机存取存储器,并向处理器601和收发器603提供指令和数据。存储器602的一部分还可以包括非易失性随机存取存储器。例如,存储器602还可以存储设备类型的信息。
具体实现中,上述电子设备可通过其内置的各个功能模块执行如上述图1或图4中各个步骤所提供的实现方式,具体可参见上述图1或图4中各个步骤所提供的实现方式,在此不再赘述。
本发明实施例通过提供一种电子设备,包括:处理器、收发器、存储器,通过处理器获取存储器中的计算机指令,执行上述图1或图4中所示方法的各个步骤,进行相关值确定及模型训练操作。通过存储器中的计算机指令,处理器执行对目标代码和目标审查意见间的相关值的预测及对相关值确定模型的训练过程,确定目标代码和目标数审查是否匹配,从而判断该目标代码和目标审查意见间是否存在误差,进而减少了代码相关数据误差,简化容错处理过程;或者根据目标代码和审查意见的相关程度,从多个审查意见中确定目标代码对应的目标审查意见,从而减少人工处理过程,进而提高了审查意见效率。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令被处理器执行时实现图1或图4中各个步骤所提供的相关值确定或相关值确定模型训练方法,具体可参见上述图1或图4中各个步骤所提供的实现方式,在此不再赘述。
上述计算机可读存储介质可以是前述任一实施例提供的相关值确定装置或者上述电子设备的内部存储单元,例如电子设备的硬盘或内存。该计算机可读存储介质也可以是该电子设备的外部存储设备,例如该电子设备上配备的插接式硬盘,智能存储卡(smartmedia card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该电子设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该电子设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本发明实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。另,术语“至少”是用于列举部分情况,以反映实施过程,而非只包括给出的方法实施要求。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
实施本发明实施例,将具有如下有益效果:
采用了相关值确定方法和装置之后,对于目标代码和目标审查意见间的相关性可以直接通过相关值确定模型学习得到,或者通过相关值确定模型得到目标代码和多个审查意见间的相关程度,根据目标代码和多个审查意见间的相关程度确定目标代码对应的目标审查意见。从而减少了人工处理过程及代码相关数据误差,从而提高了代码审查效率。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (10)
1.一种相关值确定方法,其特征在于,所述方法包括:
获取至少两行代码中每行代码的第一特征集及目标审查意见的第二特征集,所述目标审查意见为目标代码的审查意见,所述目标代码为所述至少两行代码中的其中一行,所述第一特征集包括多个第一元素特征,所述第二特征集包括多个第二元素特征;
将所述第一特征集和所述第二特征集输入相关值确定模型进行学习,确定所述目标代码与所述目标审查意见的相关程度,其中,所述相关值确定模型由评审代码样本特征训练得到,所述评审代码样本特征中至少包括第一样本特征和第二样本特征,所述第一样本特征包括第一评审代码的特征集、第一非评审代码的特征集及第一审查意见的特征集,所述第一评审代码与所述第一审查意见对应且相关值不小于第一阈值,所述第二样本特征包括第二评审代码特征集、第二非评审代码特征集及第二审查意见特征集,所述第二评审代码与所述第二审查意见对应且相关值小于所述第一阈值。
2.如权利要求1所述的方法,其特征在于,所述获取至少两行代码中每行代码的第一特征集及目标代码对应的目标审查意见的第二特征集之前,包括:
通过词法分析将所述至少两行代码中每行代码进行拆分,得到所述每行代码对应的多个第一元素,并构建所述多个第一元素中每个第一元素的所述第一元素特征,生成所述每行代码的第一特征集;
通过词法分析将所述目标审查意见进行拆分,得到所述目标审查意见对应的多个第二元素,并构建所述多个第二元素中每个第二元素的所述第二元素特征,生成所述目标审查意见的第二特征集。
3.如权利要求2所述的方法,其特征在于,
所述至少两行代码为三行代码时,所述三行代码包括前项代码、目标代码及后项代码,所述前项代码为所述目标代码前一行的代码,所述后项代码为所述目标代码后一行的代码;
所述相关值确定模型包括第一LSTM网络、第二LSTM网络、第三LSTM网络、第四LSTM网络及前馈神经网络;
所述第一特征集包括所述前项代码对应的第一前项特征集、所述目标代码对应的第一目标特征集及所述后项代码对应的第一后项特征集;
所述将所述第一特征集和所述第二特征集输入相关值确定模型,包括:
将所述第一前项特征集输入所述第一LSTM网络进行学习,得到前项代码信息;
将所述第一目标特征集输入所述第二LSTM网络进行学习,得到目标代码信息;
将所述第一后项特征集输入所述第三LSTM网络进行学习,得到后项代码信息;
将所述第二特征集输入所述第四LSTM网络进行学习,得到审查意见信息;
对所述前项代码信息、所述目标代码信息、所述后项代码信息及所述审查意见信息执行分组关联,并输入所述前馈神经网络进行学习。
4.如权利要求3所述的方法,其特征在于,所述对所述前项代码信息、所述目标代码信息、所述后项代码信息及所述审查意见信息执行分组关联,并输入所述前馈神经网络进行学习,包括:
根据所述前项代码信息、所述目标代码信息及所述审查意见信息构建前项代码约束特征;
根据所述后项代码信息、所述目标代码信息及所述审查意见信息构建后项代码约束特征;
将所述前项代码约束特征和所述后项代码约束特征输入所述前馈神经网络进行学习。
5.如权利要求1所述的方式,其特征在于,所述获取至少两行代码中每行代码的第一特征集及目标审查意见的第二特征集之前,所述方法还包括:
获取用于相关值确定训练的至少两类评审代码样本数据,其中,所述至少两类评审代码样本数据至少包括第一评审代码样本数据和第二评审代码样本数据,其中,所述第一评审代码样本数据中包括第一评审代码、第一非评审代码及第一审查意见,所述第一评审代码与所述第一审查意见对应且相关值不小于第一阈值,所述第二评审代码样本数据中包括第二评审代码、第二非评审代码及第二审查意见,所述第二评审代码与所述第二审查意见对应且相关值小于所述第一阈值;
构建任一评审代码样本数据中的评审代码和非评审代码中每行代码的第一样本特征集及审查意见的第二样本特征集,所述第一样本特征集包括多个第一样本元素特征,所述第二样本特征集包括多个第二样本元素特征;
将所述任一评审代码样本数据中的所述第一样本特征集和所述第二样本特征集输入相关值确定模型,根据所述任一评审代码样本数据中所述评审代码和所述审查意见的相关值,更新所述相关值确定模型。
6.如权利要求1所述的方法,其特征在于,所述方法还包括:
若不存在所述目标代码的审查意见,则从审查意见库中获取多个审查意见,将所述多个审查意见中任一审查意见确定为目标审查意见,执行所述获取至少两行代码中每行代码的第一特征集及目标审查意见的第二特征集的步骤,其中,所述审查意见库中包括多个有意义审查意见,所述有意义审查意见为对所述目标代码的非肯定性描述。
7.如权利要求6所示的方法,其特征在于,所述方法还包括:
若存在所述目标代码的审查意见,则通过过滤算法判断所述审查意见是否为无意义审查意见,所述无意义审查意见为对所述目标代码的肯定性描述;
若所述审查意见为无意义审查意见,则删除所述审查意见,执行所述若所述目标代码无审查意见,则从审查意见库中获取多个审查意见,将所述多个审查意见中任一审查意见确定为目标审查意见的过程。
8.一种相关值确定装置,其特征在于,所述装置包括:
获取模块,用于获取至少两行代码中每行代码的第一特征集及目标审查意见的第二特征集,所述目标审查意见为目标代码的审查意见,所述目标代码为所述至少两行代码中的其中一行,所述第一特征集包括多个第一元素特征,所述第二特征集包括多个第二元素特征;
输入模块,用于将所述第一特征集和所述第二特征集输入相关值确定模型进行学习;
确定模块,用于基于所述相关值确定模型确定所述目标代码与所述目标审查意见的相关程度。
9.一种电子设备,其特征在于,包括处理器、存储器、收发器;
所述处理器分别与所述存储器和所述收发器相连,其中,所述收发器用于接收输入数据并生成输出数据,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行如权利要求1-7任一项所述的方法。
10.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如权利要求1-7任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910604954.6A CN110427317A (zh) | 2019-07-05 | 2019-07-05 | 一种相关值确定方法及装置 |
PCT/CN2020/085919 WO2021004118A1 (zh) | 2019-07-05 | 2020-04-21 | 一种相关值确定方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910604954.6A CN110427317A (zh) | 2019-07-05 | 2019-07-05 | 一种相关值确定方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110427317A true CN110427317A (zh) | 2019-11-08 |
Family
ID=68410273
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910604954.6A Pending CN110427317A (zh) | 2019-07-05 | 2019-07-05 | 一种相关值确定方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110427317A (zh) |
WO (1) | WO2021004118A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021004118A1 (zh) * | 2019-07-05 | 2021-01-14 | 深圳壹账通智能科技有限公司 | 一种相关值确定方法及装置 |
CN117520209A (zh) * | 2024-01-02 | 2024-02-06 | 腾讯科技(深圳)有限公司 | 代码评审方法、装置、计算机设备和存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117806973B (zh) * | 2024-01-03 | 2024-07-09 | 西南民族大学 | 一种基于评审类型感知的代码评审方法和系统 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103176905A (zh) * | 2013-04-12 | 2013-06-26 | 北京邮电大学 | 一种缺陷关联方法及装置 |
US20170075790A1 (en) * | 2015-09-15 | 2017-03-16 | Linkedln Corporation | Integrating quality analysis with a code review tool |
CN107145900A (zh) * | 2017-04-24 | 2017-09-08 | 清华大学 | 基于一致性约束特征学习的行人再识别方法 |
CN107807978A (zh) * | 2017-10-26 | 2018-03-16 | 北京航空航天大学 | 一种基于协同过滤的代码评审者推荐方法 |
CN108628728A (zh) * | 2017-03-15 | 2018-10-09 | 华为技术有限公司 | 检测方法和装置 |
CN109002294A (zh) * | 2018-07-16 | 2018-12-14 | 浪潮电子信息产业股份有限公司 | 一种代码审查方法、装置、设备及可读存储介质 |
CN109219960A (zh) * | 2018-08-31 | 2019-01-15 | 深圳大学 | 视频编码质量平滑度的优化方法、装置、设备及存储介质 |
CN109408389A (zh) * | 2018-10-30 | 2019-03-01 | 北京理工大学 | 一种基于深度学习的代码缺陷检测方法及装置 |
CN109491663A (zh) * | 2018-11-01 | 2019-03-19 | 北京车和家信息技术有限公司 | 代码审查方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10198657B2 (en) * | 2016-12-12 | 2019-02-05 | National Chung Shan Institute Of Science And Technology | All-weather thermal-image pedestrian detection method |
CN107169035B (zh) * | 2017-04-19 | 2019-10-18 | 华南理工大学 | 一种混合长短期记忆网络和卷积神经网络的文本分类方法 |
CN110427317A (zh) * | 2019-07-05 | 2019-11-08 | 深圳壹账通智能科技有限公司 | 一种相关值确定方法及装置 |
-
2019
- 2019-07-05 CN CN201910604954.6A patent/CN110427317A/zh active Pending
-
2020
- 2020-04-21 WO PCT/CN2020/085919 patent/WO2021004118A1/zh active Application Filing
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103176905A (zh) * | 2013-04-12 | 2013-06-26 | 北京邮电大学 | 一种缺陷关联方法及装置 |
US20170075790A1 (en) * | 2015-09-15 | 2017-03-16 | Linkedln Corporation | Integrating quality analysis with a code review tool |
CN108628728A (zh) * | 2017-03-15 | 2018-10-09 | 华为技术有限公司 | 检测方法和装置 |
CN107145900A (zh) * | 2017-04-24 | 2017-09-08 | 清华大学 | 基于一致性约束特征学习的行人再识别方法 |
CN107807978A (zh) * | 2017-10-26 | 2018-03-16 | 北京航空航天大学 | 一种基于协同过滤的代码评审者推荐方法 |
CN109002294A (zh) * | 2018-07-16 | 2018-12-14 | 浪潮电子信息产业股份有限公司 | 一种代码审查方法、装置、设备及可读存储介质 |
CN109219960A (zh) * | 2018-08-31 | 2019-01-15 | 深圳大学 | 视频编码质量平滑度的优化方法、装置、设备及存储介质 |
CN109408389A (zh) * | 2018-10-30 | 2019-03-01 | 北京理工大学 | 一种基于深度学习的代码缺陷检测方法及装置 |
CN109491663A (zh) * | 2018-11-01 | 2019-03-19 | 北京车和家信息技术有限公司 | 代码审查方法及装置 |
Non-Patent Citations (1)
Title |
---|
张晓欣;孙伟杰;: "C程序代码结构自动审查方法研究", 通信技术, no. 04 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021004118A1 (zh) * | 2019-07-05 | 2021-01-14 | 深圳壹账通智能科技有限公司 | 一种相关值确定方法及装置 |
CN117520209A (zh) * | 2024-01-02 | 2024-02-06 | 腾讯科技(深圳)有限公司 | 代码评审方法、装置、计算机设备和存储介质 |
CN117520209B (zh) * | 2024-01-02 | 2024-04-26 | 腾讯科技(深圳)有限公司 | 代码评审方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2021004118A1 (zh) | 2021-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021004118A1 (zh) | 一种相关值确定方法及装置 | |
CN109376535B (zh) | 一种基于智能化符号执行的漏洞分析方法及系统 | |
US20230075290A1 (en) | Method for linking a cve with at least one synthetic cpe | |
Etessami et al. | Model checking of recursive probabilistic systems | |
CN110162297A (zh) | 一种源代码段自然语言描述自动生成方法及系统 | |
CN118276913B (zh) | 一种基于人工智能的代码补全方法 | |
EP4064038B1 (en) | Automated generation and integration of an optimized regular expression | |
CN116956896A (zh) | 基于人工智能的文本分析方法、系统、电子设备及介质 | |
CN116361788A (zh) | 一种基于机器学习的二进制软件漏洞预测方法 | |
CN113761875B (zh) | 事件抽取方法、装置、电子设备及存储介质 | |
WO2024148880A1 (zh) | 一种基于多源异构数据的系统检测方法及装置 | |
CN113780418A (zh) | 一种数据的筛选方法、系统、设备和存储介质 | |
CN113705207A (zh) | 语法错误识别方法及装置 | |
CN116680401A (zh) | 文档处理方法、文档处理装置、设备及存储介质 | |
CN113836297B (zh) | 文本情感分析模型的训练方法及装置 | |
US20210241147A1 (en) | Method and device for predicting pair of similar questions and electronic equipment | |
CN112698977A (zh) | 服务器故障定位方法方法、装置、设备及介质 | |
JP2021099805A (ja) | デジタルデータを処理する装置及び方法 | |
US20240354078A1 (en) | Method for preprocessing code data for a subsequent evaluation | |
CN116453702B (zh) | 孤独症行为特征集的数据处理方法、设备、系统及介质 | |
CN117573956B (zh) | 元数据管理方法、装置、设备及存储介质 | |
CN110502226B (zh) | 在编程环境中推荐代码的方法和装置 | |
CN118839697A (zh) | 一种中文命名实体识别方法、设备、介质及产品 | |
Havtorn | Uncertainty and the Medical Interview: Towards Self-Assessment in Machine Learning Models | |
CN113705558A (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 |