日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

阅读笔记|Retrieve and Refine: Exemplar-based Neural Comment Generation

發布時間:2023/12/8 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 阅读笔记|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

做代碼注釋生成的三種方法:

  • manually-craft template method:為不同類型的程序定義不同的模板,以生成可讀性文本描述,優點是生成的摘要fluent and informative。
  • IR-based method:抽取關鍵信息或借助相似代碼段的摘要信息,優點就是能利用相似代碼段的摘要信息。
  • neural-based method:神經機器翻譯,seq2seq架構。優點是能學習到NL和PL之間的semantic connection。
  • 雖然基于神經網絡的方法取得了最好的性能[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的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。