Page 27 - 《软件学报》2021年第6期
P. 27
邝砾 等:大粒度 Pull Request 描述自动生成 1601
PR 描述自动生成是近年来由 Liu 等人提出的新问题,可以看作是 NLP 技术在软件工程领域中的一个新应
[3]
用.Liu 等人发现,在 GitHub 平台中有大量的 PR 缺少描述,这将不利于 PR 在评审中取得好的结果 .为此,Liu 等
人将 PR 描述自动生成建模为抽象式文档摘要生成问题,将 PR 中的文本信息看作源文档,将 PR 描述看作摘要,
利用带有注意力机制的编解码模型生成 PR 描述.在此基础上,生成 PR 描述还需要解决两个关键问题,即未登录
词问题以及训练目标和评价指标不一致的问题,因此,其又引入了指针生成网络 [22] 和强化学习来提升模型表现,
并在评价指标和人工评审方面都取得了不错的成绩.然而,该方法却没有考虑到 PR 粒度对结果的影响,并不能
为大粒度的 PR 生成良好的描述.
2 基于图神经网络的 PR 描述生成方法
[3]
与 Liu 等人 的思路类似,本文将 PR 描述生成问题建模为摘要生成问题,将 PR 中的 commit message 和 code
comment 等文本信息看作是源文档,将 PR 描述看作摘要.然而,与之不同的是,为了避免生成结果出现逻辑错误,
我们使用抽取式摘要生成模型,采用序列标注的思路进行 PR 描述生成.为了能够学习到 PR 语句中更为丰富的
内容信息,我们构建了词-句异质图,建立起 PR 语句间的联系,利用图神经网络进行节点间的消息传递,进一步挖
掘 PR 语句节点的内容特征.
PR 描述生成问题形式化定义如下:对于给定的 PR 描述源文档 S,其包含一系列的句子(s 1 ,s 2 ,…,s n ).PR 描述
生成器的目标是在文档 S 中抽取 k 个句子,使其组成一条 PR 描述 D.对于源文档中 S 中的每一个句子 s n 而言,
生成器预测其标签 y n ∈{0,1},其中,0 代表该句未被选为描述句,1 代表该句被选为描述句.基于图神经网络的 PR
描述生成方法总体结构如图 2 所示.我们首先对 PR 描述文档进行预处理,建立与之对应的词-句异质图;然后将
异质图作为 PR 描述生成器的输入,利用生成器生成 PR 描述.此外,由于 PR 数据集缺少人工标注的真实标签,
难以进行监督训练,我们使用强化学习方法对模型进行训练.具体的,将 PR 描述生成器看作智能体,PR 源文档看
作状态,生成器选择哪几个句子组成 PR 描述看作智能体作出的策略,生成的 PR 描述看作新的状态.在将 PR 源
文档输入进生成器后,生成器会作出相应策略生成 PR 描述,模型利用奖励函数对 PR 描述进行评价,并根据结果
调整生成器的相关参数,从而使模型得到训练.本节主要对基于图神经网络的 PR 描述生成方法进行详细描述.
Fig.2 Structure of PR description method
图 2 PR 描述生成方法结构
2.1 图的构成
本文将 PR 源文档建模为以词节点、句子节点及其对应的边组成的带权异质图,其结构如图 3 所示.