[发明专利]一种基于最近邻算法的代码变更日志自动生成方法有效
申请号: | 201910967684.5 | 申请日: | 2019-10-12 |
公开(公告)号: | CN111090460B | 公开(公告)日: | 2021-05-04 |
发明(设计)人: | 蔡亮;张洋;鄢萌;刘忠鑫;夏鑫;李善平;王新宇 | 申请(专利权)人: | 浙江大学 |
主分类号: | G06F8/73 | 分类号: | G06F8/73 |
代理公司: | 杭州求是专利事务所有限公司 33200 | 代理人: | 邱启旺 |
地址: | 310058 浙江*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 近邻 算法 代码 变更 日志 自动 生成 方法 | ||
1.一种基于最近邻算法的代码变更日志自动生成方法,其特征在于,具体包括以下步骤:
步骤一:输入数据的预处理:每一个原始数据的提交都对应于一个diff文件,所述diff文件通过Git原生命令git diff获得,所述diff文件保存工作区中的当前文件和历史版本文件的差异内容;
步骤二:训练集数据预处理:对步骤一所得diff文件进行训练,所述diff文件中包含工程的commit对,通过正则表达式过滤掉所述diff文件中的由集成开发工具自动生成的冗余信息的commit对或者缺失信息的commit对,最终获得训练集数据;每个commit对由diff文件和与之对应的commit message组成;
步骤三:通过词袋模型获取词频向量对的集合:将待生成日志diff文件通过词袋模型建立所述diff文件的词频向量对的集合;所述词频向量对表示为d,ti,其中d表示diff文件生成的词向量,ti表示训练集中第i个数据对应的词向量;词向量的维度记为n,diff文件的词汇表集合记为D,第i个数据对应词词频向量对的集合记为Ti,n=|D∪Ti|;
步骤四:KNN算法计算候选中间结果:对步骤三中获得的词频向量对的集合分别做余弦相似度计算,获得相似度值,将相似度值最大的5个词频向量对作为候选中间结果:
其中,tij为ti向量的第j个分量,dj为diff文件生成的词向量的第j个分量;
步骤五:计算BLEU-4值:对步骤四中得到的候选中间结果所对应的词频向量对d,ti,分别计算BLEU-4值,将其中BLEU-4值最大的词频向量对所对应的commit message文件作为最终的结果输出;
步骤五中所述BLEU-4值的计算方法如下:
首先计算修正的n个连续的单词片段精确度,对于任意的n,所述单词片段精确度通过以下计算得到:
Cntclip(n-gram)=min(Cntgen(n-gram),Cntref(n-gram)) (3)
其中,gen是ti中所有的不同的n-grams组成的集合;Cntclip由方程(3)定义;Cntgen为某一个n-gram在ti中出现的次数;Cntref为某一个n-gram在d中出现的次数;
其次,BLEU的定义如下:
其中,N是最长的连续单词片段,此处选择经验值4;pn是由方程(2)计算而得;BP由方程(5)定义;r是d所对应的diff语句的长度,c是ti所对应的commit message的长度。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江大学,未经浙江大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910967684.5/1.html,转载请声明来源钻瓜专利网。