阅读笔记|Retrieve and Refine: Exemplar-based Neural Comment Generation
原文鏈接: Retrieve and Refine: Exemplar-based Neural Comment Generation
Abstract
代碼注釋生成是軟件自動化開發領域的一項重要任務,它旨在為源代碼自動生成一種自然的語言描述。傳統的注釋生成方法使用手工制作的模板或信息檢索(IR)技術為源代碼生成摘要。近年來,基于神經網絡的方法利用著名的編碼器-解碼器深度學習框架,從大規模的并行代碼語料庫中學習評論生成模式,取得了令人印象深刻的結果。但是,這些新出現的方法只接受與代碼相關的信息作為輸入。軟件重用在軟件開發過程中是常見的,這意味著類似代碼片段的注釋有助于注釋的生成。在本文中,受基于IR和基于模板的方法的啟發,我們提出了一種神經網絡注釋生成方法,使用類似代碼片段的現有注釋作為范例來指導注釋生成。具體來說,給定一段代碼,我們首先使用IR技術檢索類似的代碼片段,并將其注釋作為范例。然后,我們設計了一個新穎的seq2seq神經網絡,該網絡以給定的代碼、其AST、類似的代碼及其范例作為輸入,并利用來自范例的信息,根據源代碼和類似代碼之間的語義相似性來協助生成目標注釋。我們在一個包含約2M個樣本的大規模Java語料庫上評估了我們的方法,實驗結果表明,我們的模型在很大程度上超過了SOTA。
Introduction
做代碼注釋生成的三種方法:
雖然基于神經網絡的方法取得了最好的性能[14,16,25],但它往往會在評論中傾向于產生高頻詞,或者有時會“失控”。例如,根據LeClair等人的研究[25],測試集中21%的評論包含頻率低于100的標記。相反,他們提出的方法預測的評論只有7%包含頻率低于100的符號。此外,超過兩千條生成的評論甚至沒有正常的序列結束標記。具體地說,由神經模型生成的注釋在可讀性和信息性方面是有損失的。這種現象也在其他領域的NMT模型中出現,因此如果只用source code作為生成摘要的信息源是有損失的。
受方法(1)和(2)的啟發,我們假設相似代碼段的摘要可以提供生成注釋的參考示例,還可能包含與源碼有關的低頻詞信息以增強模型輸出低頻詞的能力。同時由于神經網絡具有很強的模式識別能力[2],我們認為編解碼器神經網絡可以與傳統的基于模板的方法和基于IR的方法相結合。所以作者提出了一個名為Re2Com的模型,具有Retrieve模塊和Refine模塊。Retrieve模塊使用IR技術抽取最相似的代碼段,將其摘要作為exemplar。Refine模塊使用seq2seq神經網絡學習生成摘要的patterns。
Motivation
鑒于近年來軟件工程領域對深度學習方法有效性的許多討論[17,27],我們認為我們的研究可能是一個很好的起點,將傳統的具體任務方法與深度學習方法相結合。以往的方法是將神經網絡應用于軟件工程中的任務求解。雖然已經提出了針對特定任務的具體輸入,如AST和控制流程圖,但以前的研究人員沒有分析深度學習方法存在的問題,如過擬合(往往會產生高頻項)。因此,我們認為可以將傳統方法建模為神經網絡來提高性能。
Proposed Approach
數據預處理:從代碼倉庫中抽取<java method, comment>,然后把它們按項目劃分為訓練、測試和驗證集(即相同項目的代碼段一定全分在一個集合里)。
training and test:
Experiment
使用每個段代碼的配套文檔的第一句話作為對應的摘要。考慮到自動生成和重復的代碼(由于名稱更改、代碼克隆等)為了避免對神經模型評估產生負面影響,作者使用啟發式規則[36]移除了這些樣本,并向訓練集添加了唯一的、自動生成的代碼,以確保沒有對這些樣本執行任何測試。在拆分camel case和下劃線符號、去掉非字母字符并設置為小寫字符之后,作者按項目將數據集分為訓練集、驗證集和測試集,這意味著一個項目中的所有方法都歸為一類。他們認為,為了評估神經模型的性能,數據集的預處理是必要的。** 如果沒有這些預處理,神經模型的評價結果會被夸大。 **例如,在ICPC‘18論文[14]中,DeepCom報告的BLEU得分約為38分,而在該數據集上的結果僅為約19分。
數據集用的是LeClair等人在《A neural model for generating natural language summaries of program subroutines》文中提供的數據集,基本信息如下:
本文作者將數據集劃分為標準數據集和挑戰數據集:
- 標準數據集包括Java method(source code), an SBT-AO sequence of Java method, and a comment
- 挑戰數據集僅有SBT-AO sequence and comment
SBT-AO把SBT序列里的每個token都用<Other>替換了,僅保留了結構信息。
Result
Re2Com vs neural baseline
Re2Com vs IR baseline
Exemplar信息源的有效性證明
在低頻詞生成上的表現
Tab 5相當于Recall,Fig 6相當于Precision。
總結
以上是生活随笔為你收集整理的阅读笔记|Retrieve and Refine: Exemplar-based Neural Comment Generation的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows Azure案例:迈阿密市
- 下一篇: 网易平台服务器修改魔兽,魔兽世界怀旧服: