全网唯一标准王
(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202211129739.3 (22)申请日 2022.09.16 (71)申请人 南通大学 地址 226019 江苏省南 通市崇川区啬园路9 号 (72)发明人 陈翔 周彦琳 曲豫宾 施伊涵  杨光 于池 赵俊杰  (74)专利代理 机构 南京经纬专利商标代理有限 公司 32200 专利代理师 张俊俊 (51)Int.Cl. G06F 8/73(2018.01) G06N 20/00(2019.01) G06N 3/08(2006.01) G06K 9/62(2022.01) (54)发明名称 一种基于主动学习的代码注释生成方法 (57)摘要 本发明提供了一种基于主动学习的代码注 释生成方法, 属于计算机技术领域, 解决了在有 限的人工标注预算下, 导致模型训练数据不足, 难以生成高质量代码注释的问题 其技术方案为: 包括以下步骤: (1)搜集域内数据集; (2)预训练 通用模型; (3)设计基于聚类和注意力分散的主 动学习采样策略; (4)在数据采样、 标记和模型微 调这两个步骤中不断迭代, 直到预算用完或达到 预定义的终止条件; (5)在有限的人工标注预算 下微调后的模型会为代码段生成更高质量的代 码注释。 本发明的有益效果为: 基于主动学习训 练的模型可以在有 限的标注预算下使用较少的 训练数据为代码片段生成更高质量的注释, 从而 平衡地达 到一定注释质量所需的人力。 权利要求书2页 说明书7页 附图1页 CN 115480821 A 2022.12.16 CN 115480821 A 1.一种基于主动学习的代码注释生成方法, 其特 征在于, 包括以下步骤: (1)搜集域内数据集: 从GitHub和Etherscan.io中挖掘高质量的开源项目, 搜集开源代 码内的函数和对应的注释, 形成注释生成数据集D, 并进一步划分成训练集和验证集, 训练 集即为初始的未 标记注释生成数据集U; (2)预训练通用模型: 基于域外标记数据集, 预训练一个通用深度学习模型CodeBERT, 初始化模型参数, 该模型考虑6种编程语言, 使用自然语言和编程语言作为其输入, 捕捉自 然语言和编程语言之间的语义连接, 并输出广泛支持自然语言 ‑编程语言任务的通用表示; (3)设计主动学习采样策略: 基于注意力分散的采样策略和基于聚类的采样策略; (4)在验证集中使用神经机器翻译自动评估指标评估生成注释的质量, 如果指标数值 大于所设阈值或标记预算用完, 则终止采样过程, 如果指标数值小于或等于所设阈值, 则继 续执行步骤(5); (5)数据采样与标记: 利用上述步骤(3)中基于聚类和基于注意力分散的主动学习采样 策略, 从未标记注释生成数据集U中选出指 定数量的代码段进 行人工标记, 将采样的数据添 加到已标记注释生成数据集L中, 并从U中移除这些数据, 剩余的形成新的未标记注释生成 数据集U(U=U ‑L); (6)模型微调: 基于已标记注释生成数据集L, 对代码注释生成模型进行微调, 重新训练 模型参数, 并执 行步骤(4); (7)注释生成阶段: 基于主动学习方法微调后的模型在有限的人工标注预算下能为一 个新的目标代码段生成更高质量的代码注释。 2.根据权利要求1所述的基于主动学习的代码注释生成方法, 其特征在于, 所述步骤 (2)中在域外标记数据集上 预训练一个通用模型, 包括如下步骤: (2‑1)使用掩码语言建模训练CodeBERT: 为自然语言和编程语言随机选择一组位置来 屏蔽掉, 然后用特殊的[MASK]标记替换 所选位置, 其目标 是预测被掩盖的原 始标记; (2‑2)使用替换标记检测训练CodeBERT: 训练一个生成器模型, 它是一个类似于n ‑gram 的概率模型进行屏蔽词的生成, 然后训练一个鉴别器模型来确定一个词是否是原 始词。 3.根据权利要求1所述的基于主动学习的代码注释生成方法, 其特征在于, 所述步骤 (3)中设计 基于聚类和基于注意力分散的主动学习采样策略, 包括如下步骤: (3‑1)基于注意力分散的模型相关策略: 利用深度学习模型的注意力分数来获取信息, 选择的是注意力 分散程度较高的代码段, 深度模型在逐个生成目标词时, 模型会关注源代 码段中对当前任务有意义的部分, 如果系统正在翻译一个不确定的样本, 它的注意力机制 将会被分散在整个源序列中, 一个注意力 分散程度较高的样本, 其注意力概率分布为均匀 的, 对于注意力分散采样策略, 选择的代码段将是那些注意力分散程度较高的代码段, 包括 如下步骤: (3‑1‑1)首先, 提取注意力 模型在解码第i个目标词时赋予第j个源词的权重, 即注意力 分布概率ωi,j; (3‑1‑2)其次, 根据如下公式为每个目标词yi计算权重的峰度, 是注意力权重的平均 值:权 利 要 求 书 1/2 页 2 CN 115480821 A 2(3‑1‑3)最后, 对目标句子中所有单词的负峰度值取平均 值, 得到该句的注意力分散得 分: (3‑1‑4)选取注意力分散得分较高, 即注意力分散程度较高的代码段; (3‑2)基于聚类的模型无关策略: 利用聚类的思想, 从样本多样性角度出发, 选择的是 源代码语义嵌入向量之间距离较 远的样本, 包括如下步骤: (3‑2‑1)首先计算域内源代码的语义嵌入向量; (3‑2‑2)接着进行聚类, 随机设置k个特征空间内的点作为初始的聚类中心, 对于其他 每个点计算到k个中心的距离, 接着对着标记的聚类中心之后, 重新计算出每个聚类的新中 心点; (3‑2‑3)聚类完成后, 计算每个类别中代码段的语义向量之间的L2距离, 确定代码段间 的语义相似度, 语义向量之间的距离越长, 语义相似度越低, 不确定性分数就越高; (3‑2‑4)随后在每个类别中选择若干个不确定性分数较高的代码片段作为所采样的代 码段。 4.根据权利要求1所述的基于主动学习的代码注释生成方法, 其特征在于, 所述步骤 (5)中数据采样与标记阶段, 包括如下步骤: (4‑1)根据采样策略的获取函数对未标记数据集U中的每个代码片段进行不确定性评 分; (4‑2)依据评分对代码片段进行降序排列; (4‑3)根据预设条件选择指定数量的高评分代码片段; (4‑4)对这些代码片段进行人工标记, 即通过专家对爬取的代码注释进行手工验证, 如 果注释质量低, 则完成注释的修改, 否则直接使用爬取的代码注释; (4‑5)将这些采样的代码片段 添加到已标记数据集 L中, 得到值得监 督的训练子集。权 利 要 求 书 2/2 页 3 CN 115480821 A 3

.PDF文档 专利 一种基于主动学习的代码注释生成方法

文档预览
中文文档 11 页 50 下载 1000 浏览 0 评论 309 收藏 3.0分
温馨提示:本文档共11页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 一种基于主动学习的代码注释生成方法 第 1 页 专利 一种基于主动学习的代码注释生成方法 第 2 页 专利 一种基于主动学习的代码注释生成方法 第 3 页
下载文档到电脑,方便使用
本文档由 人生无常 于 2024-03-18 12:09:52上传分享
友情链接
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。