Page 26 - 《软件学报》2021年第6期
P. 26

1600                                     Journal of Software  软件学报 Vol.32, No.6,  June 2021

         据学习到的文档内容重新组织语句,形成摘要.
             TextRank [19] 是抽取式摘要生成方法的典型代表,该方法参考 PageRank 算法             [20] ,将句子作为节点,根据句子
         间的相似度构造无向有权边,得到文章结构图;随后计算图中各个节点的 TextRank 分数,选取 N 个得分最高的节
         点代表的句子组成摘要.随着神经网络的发展,越来越多的研究者开始使用神经网络进行抽取式摘要生成.
         Nallapati 等人 [21] 使用循环神经网络学习句子的表示向量,然后将其输入到分类器中,预测该句是否应当出现在
         摘要中.之后,学者们也开始探索其他神经网络结构在抽取式摘要生成中的应用.例如,Liu 等人                                    [22] 使用
         Transformer 结构对文档进行编码.Zhong 等人为探究 Transformer 和 LSTM 这两种神经网络模型在抽取式摘要
         生成任务中的表现进行了消融实验,实验发现:两种模型大多学习到的是句子的位置信息而非内容信息,而
                                               [4]
                                                                    [7]
         Transformer 比 LSTM 能学习到更多的内容信息 .在此基础上,Wang 等人 认为,基于 Transformer 的神经网络
         结构可看作是一种全连接的图结构,因此其提出了基于图结构的模型,能够学习到更多文章内容信息的猜想.为
         了验证这一猜想,Wang 等人构建了文章结构图,使用图神经网络帮助学习文章内容信息,并取得了不错的效果.
         总的来说,抽取式摘要生成方法思路简单,易于实现,但是其得到的摘要却只能由原文中的句子组成,且摘要句
         之间连接较为生硬.
             完成文本摘要生成任务的另一大类方法是抽象式生成方法.带有注意力机制的编解码模型                                 [23] 是抽象式摘
         要生成方法的常见模型,在此基础上,See 等人              [24] 提出了指针生成网络对该模型进行改进,有效降低了在实际场
         景中未登录词问题对模型表现的影响.当然,也有学者在注意力机制的设计上对原有模型进行改进,例
         如,Gehrmann  等人 [25] 设计了自底向上的注意力机制,使模型能够选取更加有效的信息.Liu 等人                     [26] 则提出了一
         个新颖的解决抽象式文章摘要问题的思路,首先将源文档解析为抽象语义表示(AMR)图,然后将 AMR 图转换为
         摘要图,并根据摘要图来生成文章摘要.除此之外,Yu 等人                 [27] 还引入对抗生成网络帮助生成摘要.总之,使用抽象
         式方法生成的摘要语言要更加灵活,但是也存在生成重复语句、结果可读性差等常见问题.
             上述方法作为文本摘要生成的常见方法,在结构性文档数据集(例如新闻数据集)上取得了良好的效果.但
         非结构性文档没有明显的行文结构,句子的重要性与句子所在位置关联不大,与结构性文档存在较大差异,因此
         上述方法在非结构性文档数据集上的表现并不尽如人意.为此,有研究者提出了适用于非结构性文档数据集的
                                       [5]
         摘要生成方法     [5,28−31] .例如,Zhao 等人 针对会议文档数据集中文档过长、难以捕捉有效信息的问题,设计了分
         层自适应的网络结构.Liu 等人         [30] 则致力于生成客服对话的摘要,其认为客服对话摘要应当具备逻辑的完整性
         与正确性,因此提出了 Leader-Writer 网络用于生成对话摘要.但是,上述方法解决的主要问题都和其使用的数据
         集自身特征有很强的关联性,无法直接应用于解决大粒度 PR 描述生成问题.
         1.3   自然语言处理在软件工程领域的应用

             随着神经网络成功应用在翻译任务中              [32] ,自然语言处理(NLP)技术得到了迅猛的发展,并在各个领域都得
         到了广泛的应用,软件工程领域亦不例外.
             受到神经网络翻译模型         [32] 的启发,在软件工程领域,很多学者开始思考如何将软件领域专业性很强的特定
         文档转换为易读的自然语言形式,以便开发人员理解                    [33−36] .例如,一些学者利用神经机器翻译的方法自动生成
         commit message,并取得了不错的结果       [33,34] ;亦有学者将代码注释生成任务建模为将程序源代码的抽象语法树
         翻译为代码注释的问题,并利用神经网络翻译模型有效完成了该任务                         [35,36] .
             此外,自然语言处理的其他技术亦在软件工程领域中有所应用.例如:Alon 等人                        [37] 受到词嵌入的启发,提出
         了 Code2Vec 方法用于对代码进行嵌入,得到代码的向量表示,为开展后续研究奠定了基础;Ye 等人                           [38] 将命名实
         体识别问题引入软件工程领域,提出了识别软件工程领域特定实体的相关方法;Markovtsev 等人                            [39] 则为了进一
         步获取代码中的语义信息,根据自然语言处理中的分词算法提出了代码分割的方法;Ferrari 等人                             [40] 利用词嵌入
         等方法对需求中可能出现的歧义进行检测;Chen 等人                [41] 则建立了贝叶斯分层主题模型,分析用户与系统交互的
         行为轨迹;Alreshedy 等人   [42] 应用 NLP 技术对 Stack Overflow 中问题和代码片段中所使用的程序语言进行了预
         测;Hao 等人  [43] 则利用 NLP 技术对众包测试中工人提供的测试报告进行处理,然后通过聚类将众包测试工人的
         测试报告汇聚成一份综合完整的报告以供软件项目管理人员参考.
   21   22   23   24   25   26   27   28   29   30   31