Page 132 - 《软件学报》2026年第2期
P. 132
李重 等: 基于语义重排序的代码注释生成方法 611
库; 而对于基于 CodeT5 的代码注释生成方法, 我们则通过训练数据集对 Hugging Face [25] 提供的 CodeT5 预训练模
型进行了微调. 对于实验中所使用的基线方法, 均直接采用其开源实现, 并根据作者建议的设置配置参数, 或者使
用原始论文的默认设置, 以确保实验重复的准确性. 另外, 对于基线方法 Code LLaMA, 我们遵循现有工作 [47] 的设
定, 使用 Hugging Face [25] 提供的 CodeLlama-7b-Instruct-hf 模型, 并采用少样本提示来进行代码注释生成. 图 4 展示
了实验所使用的少样本提示词模板. 同时, 为了进一步评估大语言模型在信息检索增强下的代码注释生成能力, 基
于 SRBCS 中所使用的基于 BM25 的词法检索和基于余弦相似度的语义检索构建了 Code LLaMA 在信息检索增
强下的代码注释生成方法. 具体而言, 使用检索到的代码示例对前述少样本提示词中的样例进行替换实现 Code
LLaMA 在信息检索增强下的代码注释生成. 对于基线方法 DeepSeek-Coder 和 Qwen-Coder, 我们分别采用
Hugging Face [25] 提供的 deepseek-coder-33b-instruct 模型和 Qwen2.5-Coder-32B-Instruct 模型. 这两个模型为当前
DeepSeek-Coder 和 Qwen-Coder 开源的最大量级版本. 在初步实验中, 我们发现 DeepSeek-Coder 和 Qwen-Coder
容易输出冗余内容, 因此在现有工作 [47] 的提示词基础上, 我们进一步增加语句“Please keep the output concise
enough and avoid including irrelevant information, and limit the output to 50 tokens as much as possible” 来限制冗余单
词的产生, 具体提示词模板如图 4 所示. 需要指出的是, 尽管不同提示词可能导致不同模型性能, 但本文主要关注
如何集成基于检索的方法和基于深度学习的方法进行代码注释生成, 提示词的调优超出了本文研究范围. 因此, 我
们主要基于已被现有工作 [47] 证实有效性的提示词来设计实验中大模型所使用的提示词. 在本文后续章节中, 为了
描述的简洁性, 分别使用 x-fewshot 和 x-RAG 表示代码大模型 x (即, Code LLaMA、DeepSeek-Coder 和 Qwen-
Coder) 在少样本提示词下和信息检索增强下的代码注释生成. 所有实验均运行在同一机器上, 该机器运行 Ubuntu
18.04.6 LTS, CPU 配置为 Intel(R) Xeon(R) W-2245 CPU @ 3.90 GHz, GPU 配置为 NVIDIA GeForce RTX 3090.
Pretend that you are a programmer writing [Programming Language (Java/Python)] functions. For a given
[Programming Language (Java/Python)] function you have to generate a short documentation describing what the
function does. [(For DeepSeek-Coder and Qwen-Coder) Please keep the output concise enough and avoid
including irrelevant information, and limit the output to 50 tokens as much as possible.]
Example 1:
Code:
# Example of Code
Documentation:
# Example of Code’s summary
...
Now you are given that the following [Programming Language (Java/Python)] function:
Code:
# Target Code
图 4 Code LLaMA、DeepSeek-Coder 和 Qwen-Coder 所采用的少样本提示词
3.5 实验结果与分析
为了评估基于语义重排序的代码注释生成方法 SRBCS 的有效性, 我们研究了以下 5 个问题.
• RQ1: SRBCS 是否比其他代码注释生成的方法更好?
• RQ2: SRBCS 是否能够有效对基于信息检索的方法和基于深度学习的方法进行集成?
• RQ3: SRBCS 生成的代码注释对于开发人员而言是否更为有效?
• RQ4: SRBCS 在不同的基于深度学习的方法上的有效性?
• RQ5: SRBCS 中语义重排序模型在不同配置下的有效性?
RQ1: SRBCS 是否比其他代码注释生成的方法更好?
该研究问题旨在评估 SRBCS 是否能够实现优于现有代码注释生成方法的性能. 为了回答该问题, 将所提出的
方法与第 3.3 节中所列出的所有基线方法进行了比较. 实验结果见表 2. 从表 2 的实验结果中, 可以得到以下发现.

