CN112947928A - 代码评价的方法、装置、电子设备和存储介质 - Google Patents
代码评价的方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN112947928A CN112947928A CN201911258540.9A CN201911258540A CN112947928A CN 112947928 A CN112947928 A CN 112947928A CN 201911258540 A CN201911258540 A CN 201911258540A CN 112947928 A CN112947928 A CN 112947928A
- Authority
- CN
- China
- Prior art keywords
- evaluation
- code
- evaluation result
- target code
- probability
- 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
- 238000011156 evaluation Methods 0.000 title claims abstract description 261
- 239000013598 vector Substances 0.000 claims abstract description 99
- 238000010801 machine learning Methods 0.000 claims abstract description 59
- 238000000034 method Methods 0.000 claims abstract description 37
- 238000013136 deep learning model Methods 0.000 claims abstract description 24
- 230000011218 segmentation Effects 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 9
- 238000010276 construction Methods 0.000 claims description 5
- 238000004364 calculation method Methods 0.000 claims description 4
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 abstract description 6
- 238000012549 training Methods 0.000 description 22
- 238000007477 logistic regression Methods 0.000 description 13
- 238000012706 support-vector machine Methods 0.000 description 13
- 238000013527 convolutional neural network Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 238000012360 testing method Methods 0.000 description 8
- 239000011800 void material Substances 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 4
- 238000004140 cleaning Methods 0.000 description 3
- 230000004927 fusion Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000003058 natural language processing Methods 0.000 description 3
- 238000011176 pooling Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- ORILYTVJVMAKLC-UHFFFAOYSA-N Adamantane Natural products C1C(C2)CC3CC1CC2C3 ORILYTVJVMAKLC-UHFFFAOYSA-N 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000013145 classification model Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012821 model calculation Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000006467 substitution reaction Methods 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/44—Encoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Machine Translation (AREA)
Abstract
本发明公开了代码评价的方法、装置、电子设备和存储介质,涉及计算机技术领域。该方法的一具体实施方式包括:根据目标代码构建特征向量;将特征向量输入机器学习模型,计算第一评价结果,第一评价结果包括目标代码属于各评价等级的概率;将特征向量输入深度学习模型,计算第二评价结果,第二评价结果包括目标代码属于各评价等级的概率;根据第一评价结果和第二评价结果,确定目标代码的评价等级。该实施方式能够避免评价片面,难以对开发者的编码水品进行全面评估,还会消耗人工和时间成本,降低效率的问题。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种代码评价的方法、装置、电子设备和存储介质。
背景技术
在代码开发的领域,对开发人员编码水品的评价为一种重要需求。目前对开发者编码水品评价的方式通常为,通过人工来审核开发者的一部分代码,从而推测出开发者的编码水品。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
人工审核开发者一部分代码的方式,不仅会导致评价片面,难以对开发者的编码水品进行全面评估,而且还会消耗人工和时间成本,降低效率。
发明内容
有鉴于此,本发明实施例提供一种代码评价的方法、装置、系统和存储介质,能够避免评价片面,难以对开发者的编码水品进行全面评估,还会消耗人工和时间成本,降低效率的问题。
为实现上述目的,根据本发明实施例的一个方面,提供了一种代码评价的方法。
本发明实施例的一种代码评价的方法包括:根据目标代码构建特征向量;将所述特征向量输入机器学习模型,计算第一评价结果,所述第一评价结果包括所述目标代码属于各评价等级的概率;将所述特征向量输入深度学习模型,计算第二评价结果,所述第二评价结果包括所述目标代码属于各评价等级的概率;根据所述第一评价结果和所述第二评价结果,确定所述目标代码的评价等级。
在一个实施例中,所述根据所述第一评价结果和所述第二评价结果确定所述目标代码的评价等级,包括:对每个评价等级,计算所述第一评价结果中所述目标代码属于所述评级等级的概率和所述第二结果中所示目标代码属于所述评价等级的概率之和;将所述概率之和中最大值对应的评价等级,确定为所述目标代码的评价等级。
在又一个实施例中,所述根据目标代码构建特征向量包括:对所述目标代码按照空格分词,得到分词后的代码;根据所述分词后的代码构建特征向量。
在又一个实施例中,所述根据所述分词后的代码构建特征向量,包括:根据待替换代码和所述待替换代码的对应标识,将所述分词后的代码中的待替换代码替换为所述待替换代码的对应标识;根据替换所述待替换代码后的代码,构建特征向量。
在又一个实施例中,所述机器学习模型包括第一机器学习模型和第二机器学习模型;所述将所述特征向量输入机器学习模型,计算第一评价结果,包括:
将所述特征向量输入第一机器学习模型,计算第一机器评价结果,所述第一机器评价结果包括所述目标代码属于各评价等级的概率;
将所述特征向量输入第二机器学习模型,计算第二机器评价结果,所述第二机器评价结果包括所述目标代码属于各评价等级的概率;
根据所述第一机器评价结果和所述第二机器评价结果确定所述第一评价结果。
为实现上述目的,根据本发明的另一方面,提供了一种代码评价的装置。
本发明的一种代码评价的装置包括:构建单元,用于根据目标代码构建特征向量;计算单元,用于将所述特征向量输入机器学习模型,计算第一评价结果,所述第一评价结果包括所述目标代码属于各评价等级的概率;计算单元,用于将所述特征向量输入深度学习模型,计算第二评价结果,所述第二评价结果包括所述目标代码属于各评价等级的概率;确定单元,用于根据所述第一评价结果和所述第二评价结果确定所述目标代码的评价等级。
在一个实施例中,所述确定单元,具体用于:对每个评价等级,计算所述第一评价结果中所述目标代码属于所述评级等级的概率和所述第二结果中所示目标代码属于所述评价等级的概率之和;将所述概率之和中最大值对应的评价等级,确定为所述目标代码的评价等级。
在又一个实施例中,所述构建单元,具体用于:对所述目标代码按照空格分词,得到分词后的代码;根据所述分词后的代码构建特征向量。
在又一个实施例中,所述构建单元,具体用于:
根据待替换代码和所述待替换代码的对应标识,将所述分词后的代码中的待替换代码替换为所述待替换代码的对应标识;
根据替换所述待替换代码后的代码,构建特征向量。
在又一个实施例中,所述机器学习模型包括第一机器学习模型和第二机器学习模型;
所述计算单元,具体用于:
将所述特征向量输入第一机器学习模型,计算第一机器评价结果,所述第一机器评价结果包括所述目标代码属于各评价等级的概率;
将所述特征向量输入第二机器学习模型,计算第二机器评价结果,所述第二机器评价结果包括所述目标代码属于各评价等级的概率;
根据所述第一机器评价结果和所述第二机器评价结果确定所述第一评价结果。
为实现上述目的,根据本发明实施例的再一个方面,提供了一种电子设备。
本发明实施例的一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例提供的代码评价的方法。
为实现上述目的,根据本发明实施例的又一个方面,提供了一种计算机可读介质。
本发明实施例的一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例提供的代码评价的方法。
上述发明中的一个实施例具有如下优点或有益效果:本发明实施例中,对目标代码,可以通过机器学习和深度学习模型,计算目标代码的评价结果,然后将得出的评价结果融合,确定出目标代码的评价等级。如此本发明实施例中通过机器学习和深度学习模型实现对开发人员的代码进行全面的评价,保证评价结果的全面性和准确性;同时本发明实施例不需要人工对开发人员的代码进行审核,节省了人工和时间成本,提高了代码评价的效率。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的代码评价的方法的一种主要流程的示意图;
图2是根据本发明实施例的代码评价的方法的又一种主要流程的示意图;
图3是根据本发明实施例的构建特征向量的方法的一种示意图;
图4是根据本发明实施例的计算第二评价结果的一种示意图;
图5是根据本发明实施例的确定目标代码的评价等级的一种示意图;
图6是根据本发明实施例的代码评价的装置的主要单元的示意图;
图7是本发明实施例可以应用于其中的又一种示例性系统架构图;
图8是适于用来实现本发明实施例的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
需要指出的是,在不冲突的情况下,本发明中的实施例以及实施例中的特征可以互相组合。
本发明实施例提供了一种代码评价的方法,该方法可由计算设备或服务器执行,如图1所示,该方法包括以下步骤。
S101:根据目标代码构建特征向量。
其中,目标代码为需要评价的代码。本发明实施例中对目标代码通过学习模型进行评价,所以需要将目标代码转换为特征向量。
本发明实施例的一种实施方式中,根据目标代码构建特征向量的方式可以执行为:对目标代码按照空格分词,得到分词后的代码;根据分词后的代码构建特征向量。
构建特征向量时,先对目标代码进行分词。代码类似于英文,大多由单词组成,相当于构成中文文本的词汇。代码中各单词通常由空格隔开,所以本发明实施例中可以基于单词之间的空格对目标代码进行切分,进而实现对目标代码的分词,得到分词后的代码。在得到分词后的代码后,可以根据分词后的代码构建目标代码的特征向量。
根据分词后的代码构建目标代码的特征向量的方式可以具体为:根据待替换代码和待替换代码的对应标识,将分词后的代码中的待替换代码替换为待替换代码的对应标识;根据替换待替换代码后的代码,构建特征向量。
由于代码中通常会包括一些类型为数值、字符串、变量等单词,例如用户自定义的数值、打印的字符串、变量名称等,这些单词对代码评价会带来误导,所以本发明实施例中可以对分词后的代码进行数据清洗,来消除这些噪音,以提高代码评价的准确性。对分词后的代码进行数据清洗的方式,可以为将分词后的代码中数值、字符串、变量等单词进行替换。
替换方式可以为,预先设置待替换代码和待替换代码的对应标识,将分词后的代码中的待替换代码替换为与待替换代码的对应标识,然后根据替换待替换代码后的代码来构建特征向量。
需要说明的是,本发明实施例中对目标代码评价中忽略代码中单词的大小写,以便于计算。
S102:将特征向量输入机器学习模型,计算第一评价结果。
其中,第一评价结果包括目标代码属于各评价等级的概率。在确定特征向量后,可以将特征向量输入机器学习模型,机器学习模型为预先训练。机器学习模型对特征向量计算后得出第一评价结果,评价结果为目标代码属于各评价等级的概率。评价等级为对目标代码的评价结果,可以包括多个等级,本发明实施例可以以评价等级包括优和良为例进行说明,则第一评价结果为目标代码分别属于优和良的概率。
机器学习模型包括多种模型,本发明实施例中可以采用多个机器学习模型来计算第一评价结果。
本发明实施例的又一种实施方式中,所述机器学习模型可以包括第一机器学习模型和第二机器学习模型;步骤S102可以具体执行为:将特征向量输入第一机器学习模型,计算第一机器评价结果,第一机器评价结果包括目标代码属于各评价等级的概率;将特征向量输入第二机器学习模型,计算第二机器评价结果,第一机器评价结果包括目标代码属于各评价等级的概率;根据第一机器评价结果和第二机器评价结果确定第一评价结果。
机器学习模型包括第一机器学习模型和第二机器学习模型,特征向量分别输入第一机器学习模型和第二机器学习模型,可以计算出第一机器评价结果和第二机器评价结果,然后根据第一机器评价结果和第二机器评价结果确定出第一评价结果。第一机器评价结果包括目标代码属于各评价等级的概率,第二机器评价结果包括目标代码属于各评价等级的概率,将两个结果中属于相同评价等级的概率相加,再将相加后的各评价等级的概率之和确定为第一评价结果。
本发明实施例中,第一机器学习模型和第二机器学习模型可以具体为LR(Logistic Regression,逻辑回归模型)模型和SVM(Support Vector Machines,支持向量机)模型。
S103:将特征向量输入深度学习模型,计算第二评价结果。
其中,第二评价结果包括目标代码属于各评价等级的概率。
在确定特征向量后,可以将特征向量输入深度学习模型,深度学习模型为预先训练。深度学习模型对特征向量计算后得出第二评价结果,评价结果为目标代码属于各评价等级的概率。本发明实施例以评价等级包括优和良为例进行说明,则第二评价结果为目标代码分别属于优和良的概率。
深度学习模型包括多种模型,本发明实施例中可以采用基于卷积神经网络CNN模型来计算第二评价结果。
S104:根据第一评价结果和第二评价结果,确定目标代码的评价等级。
其中,通过机器学习模型计算出第一评价结果,通过深度学习模型计算出第二评价结果,本步骤中将第一评价结果和第二评价结果融合,来确定出目标代码的评价等级。
本发明实施例的又一种实施方式中,本步骤可以具体执行为:对每个评价等级,计算第一评价结果中目标代码属于评级等级的概率和第二结果中所示目标代码属于评价等级的概率之和;将概率之和中最大值对应的评价等级,确定为目标代码的评价等级。
第一评价结果和第二评价结果中均包括了目标代码属于各评价等级的概率,所以对于每个评价等级,可以将第一结果中目标代码属于该评级等级的概率和第二结果中目标代码属于该评价等级的概率相加,计算出目标代码属于该评级等级的概率之和,进而可以计算出目标代码属于各评价等级的概率之和。然后根据目标代码属于各评价等级的概率之和的大小,将概率之和中最大值对应的评价等级,确定为目标代码的评价等级。
本发明实施例中,对目标代码可以通过机器学习和深度学习模型,计算目标代码的评价结果,然后将得出的评价结果融合,确定出目标代码的评价等级。如此本发明实施例中通过机器学习和深度学习模型实现对开发人员的代码进行全面的评价,保证评价结果的全面性和准确性;同时本发明实施例不需要人工对开发人员的代码进行审核,节省了人工和时间成本,提高了代码评价的效率。
本发明实施例,可以采用自然语言处理技术中的word2vec词嵌入模型,将代码中的关键字、类名、符号等进行向量化表示,再利用文本分类模型进行目标代码的分类,进而确定出目标代码的评价等级。
下面结合图1所示的实施例,本发明实施例以机器学习模型包括LR和SVM,深度学习模型包括CNN模型,评价等级包括优和良为例进行说明。本发明实施例提供了一种代码评价的方法,如图2所示,该方法包括以下步骤。
S201:根据目标代码中空格对目标代码分词。
其中,代码中各单词通常由空格隔开,所以本发明实施例中可以基于单词之间的空格对目标代码进行切分,进而实现对目标代码的分词,得到分词后的代码。
例如,如下代码所示为目标代码中的一部分。
将上述目标代码进行分词,可以得到分词后的代码[class,OrderSoaService,...,orderparam,param,...,>,10,...,}]。
S202:替换分词后代码中的待替换代码。
其中,由于代码中通常会包括一些类型为数值、字符串、变量等单词,例如用户自定义的数值,打印的字符串,变量名称,这些单词对代码评价会带来误导,所以本发明实施例中可以对分词后的代码进行数据清洗,消除这些噪音,以提高代码评价的准确性。对分词后的代码进行数据清洗的方式,可以为将分词后的代码中数值、字符串、变量等单词进行替换。
具体的,可以预先设置与待替换代码的对应标识。例如,待替换代码的类型为数值时,待替换代码的对应标识为number;待替换代码的类型为字符串时,待替换代码的对应标识为str;待替换代码的类型为变量时,待替换代码的对应标识为var。
例如,对于分词后的代码[class,OrderSoaService,...,orderparam,param,...,>,10,...,}],在执行本步骤后可以得出替换后的代码为[class,OrderSoaService,...,orderparam,var,...,>,number,...,}]。
S203:构建特征向量。
需要说明的是,采用文本分类实现对代码水平评价相较于自然语言的文本分类具有特殊性,自然语言的文本中固定词汇、短语等数量大,而代码中固定关键字并不多。代码中符号、关键字出现频次较高,采用词袋模型,代码中关键字词汇的高频次对于识别优秀编码作用不大。如果采用tf-idf模型,会将高频出现的关键字、符号的权重降低,但是代码中专有类名和方法名的权重会变大,也无法很好实现对编码技术优劣的区分。
本发明实施例中构建特征向量主要采用词嵌入的方法,通过word2vec模型学习代码的上下文表达,优秀的代码会在上下文环境中充分地表现,所以可以通过词嵌入的方法构建出目标代码的特征向量。
例如,对于代码:@PostConstruct public void init(),采用CBOW模型作为词嵌入模型构建中间单词void的特征向量,具体如图3所示。参考自然语言处理技术,语言有固定语法、句法、短语等,采用词嵌入模型,词汇可以由其所处的上下文环境表示,语法、句法、固定短语搭配等信息可以进行提炼,并以词向量的形式表示出来。同理,在编码环境中,代码也存在语法、固定短语搭配,其使用规则相较于自然语言更加严格,其单词上下文信息易于被词嵌入模型学习。如图3所示,void为待构建特征向量的单词,对应特征向量为w(t),则@对应特征向量为w(t-3),PostConstruct对应特征向量为w(t-2),public对应特征向量为w(t-1),init对应特征向量为w(t+1),(对应特征向量为w(t+2),)对应特征向量为w(t+3),@PostConstruct public void init()为代码,各代码对应的特征向量为输入层,输入层的各特征向量通过映射层SUM对void上下文各单词的特征向量求和从而得出void的构建特征向量w(t),并输出。
本发明实施例中,可以使用gensim工具包进行词嵌入模型计算,嵌入模型使用CBOW模型,并设置嵌入维度dim=256,窗口大小window size=5,最小词频min_count=5,则得出目标代码中每个单词的特征向量为1×256的特征向量。
词嵌入模型为预先训练,训练数据可以包含5000个类的代码。
S204:将特征向量输入LR模型和SVM模型,计算出第一评价结果。
其中,第一评价结果包括目标代码属于优和良的概率。
LR模型和SVM模型均为机器学习模型,均为预先进行训练。
机器学习模型训练包使用sklearn,将用于训练的代码的特征向量作为X,标签矩阵为Y,组合得出数据(X,Y),然后可以将其按照比例7:3切分为训练集和测试集。将训练集分别输入到LR模型及SVM模型中进行模型训练,其中超参数选用默认值。训练完成的LR模型和SVM模型,使用测试集进行模型测试,输出测试的概率向量,并计算F1-score分数,来判断模型的训练结果,通常F1-score分数可达到0.77。
需要说明的是,对用于训练的代码,可以根据代码的类级别设置标签,例如,将高级别研发人员所开发的代码设置标签为优,低级别研发人员开发项目的代码设置标签为良。
LR模型和SVM模型训练完成后,输入步骤S204中得到的特征向量,可以分别得出评价结果,即目标代码属于优和良的概率,然后将两个模型得出的结果融合确定出第一评价结果。
需要说明的是,在机器学习之前或者本步骤中将特征向量输入LR模型和SVM模型之前,需要对特征向量进行预处理。例如,设代码中单词为n个,代码的特征向量为n×256,则预处理为:将特征向量按照列纬度求和,得到1×256的向量,以1×256的向量进行机器模型的训练。
S205:将特征向量输入CNN模型,计算出第二评价结果。
其中,第二评价结果包括目标代码属于优和良的概率。
具体的,设置目标代码为:@PostConstruct public void init(),则CNN模型对目标代码的处理过程可以如图4所示,目标代码长度为7,设置dim(图4中为d)大小为5,目标代码的特征向量大小为7×5。如图4,CNN模型选用大小分别为2、3、4,并分别包括2个过滤器的卷积核,对特征向量计算,针对于每个卷积核输出大小为2的feature map,然后对得出的各卷积核的feature map进行池化。CNN模型中卷积和池化能很好的捕获代码间的上下文信息及固定搭配,如采用卷积核大小为4,卷积层和池化层能很好的提取@postconstructpublic void这种存在关系。对feature map池化后的结果组合,然后采用solfmax层进行分类,得到输出的的结果,即目标代码分别属于优和良的概率。
CNN模型均为深度学习模型,需要预先进行训练。
训练的代码的特征向量作为X,标签矩阵为Y,组合得出数据(X,Y),然后可以将其按照比例7:3切分为训练集和测试集。将训练集输入到待训练的深度学习模型,即CNN模型,本发明实施例中深度学习框架选用keras,后端backend选用tensorflow,训练的超参数选择epoch=10,batch size=128。训练的损失函数采用二分交叉熵损失函数(binary_crossentropy),优化函数采用adam。采用EarlyStopping方式对深度学习模型的训练过程进行监督,通过F1-score结果判断训练是否完成,在模型训练过程中当连续4次F1-score无提升时,训练停止。模型训练结束后,通过测试集进行模型测试,输出测试的概率向量,并计算F1-score分数,来判断模型的训练结果,通常F1-score分数可达到0.81。
S206:根据第一评价结果和第二评价结果,确定目标代码的评价等级。
将机器学习和深度学习得到的结果中对应相同评价等级的概率相加,然后将相加后概率之和的最大值对应的评价等级作为最终输出结果,确定出目标代码的评价等级。
本步骤是为将步骤204和步骤S205所使用模型进行融合,通过F1-score分数进行评价,F1-score分数可以达到0.82,与深度学习模型相比提升了1个百分点。
由于步骤S204中第一评价结果是LR模型和SVM模型得出结果的融合,所以步骤S206中目标代码的评价等级相当于是LR模型、SVM模型和CNN模型三个模型结果的融合。三个模型结果的融合的方式可以具体如图5所示,图5中以excellent_prob表示评价等级为优的概率,good_prob表示评价等级为良的概率,则LR模型得出的结果为(0.3,0.7),表示excellent_prob等于0.3,good_prob等于0.7;SVM模型得出的结果为(0.4,0.6),表示excellent_prob等于0.4,good_prob等于0.6;CNN模型得出的结果为(0.1,0.9),表示excellent_prob等于0.1,good_prob等于0.9。将LR模型、SVM模型和CNN模型的结果中相同评价等级的概率相加得出结果(0.8,2.2),说明excellent_prob等于0.8,good_prob等于2.2,则2.2大于0.8,确定目标代码的评级等级为良。
本发明实施例中,对目标代码可以通过机器学习和深度学习模型,计算目标代码的评价结果,然后将得出的评价结果融合,确定出目标代码的评价等级。如此本发明实施例中通过机器学习和深度学习模型实现对开发人员的代码进行全面的评价,保证评价结果的全面性和准确性;同时本发明实施例不需要人工对开发人员的代码进行审核,节省了人工和时间成本,提高了代码评价的效率。
需要说明的是,本发明实施例,将自然语言处理技术应用与代码的评价,为代码的理解以及评测提供了一种方式。随着自然语言技术的快速发展,代码作为机器世界的语言,也可借鉴词向量表达技术、文本分类技术,来实现对代码的语法、句法以及语义的深层次理解。
需要说明的是,本发明实施例中,词嵌入的方式还可以通过其他方式实现,如ELMO、GPT等。ELMO、GPT两种模型实现了词汇针对其所处不同上下文环境的不同词向量表达,能很好区分apple(水果),apple(手机)。本发明实施例中所使用的机器学习模型和深度学习模型还可以通过其他方式实现,如Bi-LSTM,RCNN,Bi-LSTM Attention,以及预训练模型Bert等。如LSTM等循环神经网络模型,能学到序列词汇间的内在关系,如句法、语义等信息,以及基于注意力机制的模型能很好的解决循环神经网络的长距离依赖遗忘问题,并对各个词汇投射以不同权重,可以提高结果的准确性。如以Bert模型为代表的预训练模型,用transform结构代替LSTM,结构中的self-attention、multi-head机制、残差网格、encoder-decoder attention等,极大提升了词汇的表达能力及词嵌入模型训练速度,基于Bert的模型可以在多个自然语言处理开源问题上获得了较大提升。
为了解决现有技术存在的问题,本发明实施例提供了一种代码评价的装置600,如图6所示,该装置600包括:
构建单元601,用于根据目标代码构建特征向量;
计算单元602,用于将所述特征向量输入机器学习模型,计算第一评价结果,所述第一评价结果包括所述目标代码属于各评价等级的概率;
计算单元602,用于将所述特征向量输入深度学习模型,计算第二评价结果,所述第二评价结果包括所述目标代码属于各评价等级的概率;
确定单元603,用于根据所述第一评价结果和所述第二评价结果确定所述目标代码的评价等级。
应理解的是,实施本发明实施例的方式与实施图1所示实施例的方式相同,在此不再赘述。
本发明实施例的一种实现方式中,所述确定单元603,具体用于:
对每个评价等级,计算所述第一评价结果中所述目标代码属于所述评级等级的概率和所述第二结果中所示目标代码属于所述评价等级的概率之和;
将所述概率之和中最大值对应的评价等级,确定为所述目标代码的评价等级。
本发明实施例的又一种实现方式中,所述构建单元601,具体用于:
对所述目标代码按照空格分词,得到分词后的代码;
根据所述分词后的代码构建特征向量。
本发明实施例的又一种实现方式中,所述构建单元601,具体用于:
根据待替换代码和所述待替换代码的对应标识,将所述分词后的代码中的待替换代码替换为所述待替换代码的对应标识;
根据替换所述待替换代码后的代码,构建特征向量。
本发明实施例的又一种实现方式中,所述机器学习模型包括第一机器学习模型和第二机器学习模型;
所述计算单元602,具体用于:
将所述特征向量输入第一机器学习模型,计算第一机器评价结果,所述第一机器评价结果包括所述目标代码属于各评价等级的概率;
将所述特征向量输入第二机器学习模型,计算第二机器评价结果,所述第二机器评价结果包括所述目标代码属于各评价等级的概率;
根据所述第一机器评价结果和所述第二机器评价结果确定所述第一评价结果。
应理解的是,实施本发明实施例的方式与实施图1或图2所示实施例的方式相同,在此不再赘述。
本发明实施例中,对目标代码,可以通过机器学习和深度学习模型,计算目标代码的评价结果,然后将得出的评价结果融合,确定出目标代码的评价等级。如此本发明实施例中通过机器学习和深度学习模型实现对开发人员的代码进行全面的评价,保证评价结果的全面性和准确性;同时本发明实施例不需要人工对开发人员的代码进行审核,节省了人工和时间成本,提高了代码评价的效率。
根据本发明的实施例,本发明还提供了一种电子设备和一种可读存储介质。
本发明的电子设备包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行本发明实施例所提供的代码评价的方法。
图7示出了可以应用本发明实施例的代码评价的方法或代码评价的装置的示例性系统架构700。
如图7所示,系统架构700可以包括终端设备701、702、703,网络704和服务器705。网络704用以在终端设备701、702、703和服务器705之间提供通信链路的介质。网络704可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备701、702、703通过网络704与服务器705交互,以接收或发送消息等。终端设备701、702、703上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备701、702、703可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器705可以是提供各种服务的服务器,例如对用户利用终端设备701、702、703所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如产品信息--仅为示例)反馈给终端设备。
需要说明的是,本发明实施例所提供的代码评价的方法一般由服务器705执行,相应地,代码评价的装置一般设置于服务器705中。本发明实施例所提供的代码评价的方法一般由终端设备701、702、703执行,相应地,代码评价的装置一般设置于终端设备701、702、703中。
应该理解,图7中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图8,其示出了适于用来实现本发明实施例的计算机系统800的结构示意图。图8示出的计算机系统仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图8所示,计算机系统800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM 803中,还存储有系统800操作所需的各种程序和数据。CPU 801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个单元、程序段、或代码的一部分,上述单元、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括构建单元、计算单元和确定单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,构建单元还可以被描述为“构建单元的功能的单元”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备执行本发明所提供的代码评价的方法。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (10)
1.一种代码评价的方法,其特征在于,包括:
根据目标代码构建特征向量;
将所述特征向量输入机器学习模型,计算第一评价结果,所述第一评价结果包括所述目标代码属于各评价等级的概率;
将所述特征向量输入深度学习模型,计算第二评价结果,所述第二评价结果包括所述目标代码属于各评价等级的概率;
根据所述第一评价结果和所述第二评价结果,确定所述目标代码的评价等级。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一评价结果和所述第二评价结果确定所述目标代码的评价等级,包括:
对每个评价等级,计算所述第一评价结果中所述目标代码属于所述评级等级的概率和所述第二结果中所示目标代码属于所述评价等级的概率之和;
将所述概率之和中最大值对应的评价等级,确定为所述目标代码的评价等级。
3.根据权利要求1所述的方法,其特征在于,所述根据目标代码构建特征向量包括:
对所述目标代码按照空格分词,得到分词后的代码;
根据所述分词后的代码构建特征向量。
4.根据权利要求3所述的方法,其特征在于,所述根据所述分词后的代码构建特征向量,包括:
根据待替换代码和所述待替换代码的对应标识,将所述分词后的代码中的待替换代码替换为所述待替换代码的对应标识;
根据替换所述待替换代码后的代码,构建特征向量。
5.根据权利要求1所述的方法,其特征在于,所述机器学习模型包括第一机器学习模型和第二机器学习模型;
所述将所述特征向量输入机器学习模型,计算第一评价结果,包括:
将所述特征向量输入第一机器学习模型,计算第一机器评价结果,所述第一机器评价结果包括所述目标代码属于各评价等级的概率;
将所述特征向量输入第二机器学习模型,计算第二机器评价结果,所述第二机器评价结果包括所述目标代码属于各评价等级的概率;
根据所述第一机器评价结果和所述第二机器评价结果确定所述第一评价结果。
6.一种代码评价的装置,其特征在于,包括:
构建单元,用于根据目标代码构建特征向量;
计算单元,用于将所述特征向量输入机器学习模型,计算第一评价结果,所述第一评价结果包括所述目标代码属于各评价等级的概率;
计算单元,用于将所述特征向量输入深度学习模型,计算第二评价结果,所述第二评价结果包括所述目标代码属于各评价等级的概率;
确定单元,用于根据所述第一评价结果和所述第二评价结果确定所述目标代码的评价等级。
7.根据权利要求6所述的装置,其特征在于,所述确定单元,具体用于:
对每个评价等级,计算所述第一评价结果中所述目标代码属于所述评级等级的概率和所述第二结果中所示目标代码属于所述评价等级的概率之和;
将所述概率之和中最大值对应的评价等级,确定为所述目标代码的评价等级。
8.根据权利要求6所述的装置,其特征在于,所述构建单元,具体用于:
对所述目标代码按照空格分词,得到分词后的代码;
根据所述分词后的代码构建特征向量。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5中任一所述的方法。
10.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-5中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911258540.9A CN112947928A (zh) | 2019-12-10 | 2019-12-10 | 代码评价的方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911258540.9A CN112947928A (zh) | 2019-12-10 | 2019-12-10 | 代码评价的方法、装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112947928A true CN112947928A (zh) | 2021-06-11 |
Family
ID=76225438
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911258540.9A Pending CN112947928A (zh) | 2019-12-10 | 2019-12-10 | 代码评价的方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112947928A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115268860A (zh) * | 2022-06-21 | 2022-11-01 | 北京浩泰思特科技有限公司 | 一种智能教学诊断方法及系统 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101261604A (zh) * | 2008-04-09 | 2008-09-10 | 中兴通讯股份有限公司 | 一种软件质量评价装置及软件质量评价的定量分析方法 |
CN107423911A (zh) * | 2017-08-02 | 2017-12-01 | 中国科学院上海高等研究院 | 软件成功度评价方法/系统、计算机可读存储介质及设备 |
CN109376240A (zh) * | 2018-10-11 | 2019-02-22 | 平安科技(深圳)有限公司 | 一种文本分析方法及终端 |
CN109471915A (zh) * | 2018-10-09 | 2019-03-15 | 科大讯飞股份有限公司 | 一种文本评价方法、装置、设备以及可读存储介质 |
CN109657539A (zh) * | 2018-11-05 | 2019-04-19 | 深圳前海达闼云端智能科技有限公司 | 人脸颜值评价方法、装置、可读存储介质及电子设备 |
CN109978005A (zh) * | 2019-02-25 | 2019-07-05 | 深圳市中电数通智慧安全科技股份有限公司 | 一种火灾报警方法、装置、存储介质及终端设备 |
CN109977014A (zh) * | 2019-03-22 | 2019-07-05 | 泰康保险集团股份有限公司 | 基于区块链的代码错误识别方法、装置、设备及存储介质 |
US20190238516A1 (en) * | 2018-01-29 | 2019-08-01 | Sap Se | Method and System for Automated Text Anonymization |
CN110196814A (zh) * | 2019-06-12 | 2019-09-03 | 王轶昆 | 一种软件质量评价方法 |
-
2019
- 2019-12-10 CN CN201911258540.9A patent/CN112947928A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101261604A (zh) * | 2008-04-09 | 2008-09-10 | 中兴通讯股份有限公司 | 一种软件质量评价装置及软件质量评价的定量分析方法 |
CN107423911A (zh) * | 2017-08-02 | 2017-12-01 | 中国科学院上海高等研究院 | 软件成功度评价方法/系统、计算机可读存储介质及设备 |
US20190238516A1 (en) * | 2018-01-29 | 2019-08-01 | Sap Se | Method and System for Automated Text Anonymization |
CN109471915A (zh) * | 2018-10-09 | 2019-03-15 | 科大讯飞股份有限公司 | 一种文本评价方法、装置、设备以及可读存储介质 |
CN109376240A (zh) * | 2018-10-11 | 2019-02-22 | 平安科技(深圳)有限公司 | 一种文本分析方法及终端 |
CN109657539A (zh) * | 2018-11-05 | 2019-04-19 | 深圳前海达闼云端智能科技有限公司 | 人脸颜值评价方法、装置、可读存储介质及电子设备 |
CN109978005A (zh) * | 2019-02-25 | 2019-07-05 | 深圳市中电数通智慧安全科技股份有限公司 | 一种火灾报警方法、装置、存储介质及终端设备 |
CN109977014A (zh) * | 2019-03-22 | 2019-07-05 | 泰康保险集团股份有限公司 | 基于区块链的代码错误识别方法、装置、设备及存储介质 |
CN110196814A (zh) * | 2019-06-12 | 2019-09-03 | 王轶昆 | 一种软件质量评价方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115268860A (zh) * | 2022-06-21 | 2022-11-01 | 北京浩泰思特科技有限公司 | 一种智能教学诊断方法及系统 |
CN115268860B (zh) * | 2022-06-21 | 2023-04-28 | 北京浩泰思特科技有限公司 | 一种智能教学诊断方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11062089B2 (en) | Method and apparatus for generating information | |
CN112560496A (zh) | 语义分析模型的训练方法、装置、电子设备及存储介质 | |
CN110705301A (zh) | 实体关系抽取方法及装置、存储介质、电子设备 | |
CN114861889B (zh) | 深度学习模型的训练方法、目标对象检测方法和装置 | |
CN111191825A (zh) | 用户违约预测方法、装置及电子设备 | |
CN115062718A (zh) | 语言模型训练方法、装置、电子设备及存储介质 | |
CN114021548A (zh) | 敏感信息检测方法、训练方法、装置、设备以及存储介质 | |
CN112632227A (zh) | 简历匹配方法、装置、电子设备、存储介质和程序产品 | |
CN115640520A (zh) | 跨语言跨模态模型的预训练方法、设备和存储介质 | |
CN114037059A (zh) | 预训练模型、模型的生成方法、数据处理方法及装置 | |
CN114036921A (zh) | 一种政策信息匹配方法和装置 | |
CN112906368A (zh) | 行业文本增量方法、相关装置及计算机程序产品 | |
CN112947928A (zh) | 代码评价的方法、装置、电子设备和存储介质 | |
CN114328956B (zh) | 文本信息的确定方法、装置、电子设备及存储介质 | |
CN116383382A (zh) | 敏感信息的识别方法、装置、电子设备及存储介质 | |
CN113688232B (zh) | 招标文本分类方法、装置、存储介质及终端 | |
US20230041339A1 (en) | Method, device, and computer program product for user behavior prediction | |
CN115759292A (zh) | 模型的训练方法及装置、语义识别方法及装置、电子设备 | |
CN115470790A (zh) | 一种识别文件中的命名实体的方法和装置 | |
CN115186738A (zh) | 模型训练方法、装置和存储介质 | |
CN114297235A (zh) | 风险地址识别方法、系统及电子设备 | |
CN111274383B (zh) | 一种应用于报价的分类对象方法和装置 | |
CN114254028A (zh) | 事件属性抽取方法、装置、电子设备和存储介质 | |
CN113806541A (zh) | 情感分类的方法和情感分类模型的训练方法、装置 | |
CN114490969A (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 |