Kernekoncepter
程式碼翻譯面臨著平行訓練資料有限的挑戰,而利用可比語料庫和多重參考譯文進行資料增強,可以顯著提升程式碼翻譯模型的效能。
Resumé
論文資訊
Yiqing Xie, Atharva Naik, Daniel Fried, Carolyn Rosé. (2024). Data Augmentation for Code Translation with Comparable Corpora and Multiple References. arXiv preprint arXiv:2311.00317v2.
研究目標
本研究旨在解決程式碼翻譯中平行訓練資料有限的問題,並探討利用可比語料庫和多重參考譯文進行資料增強的效果。
方法
- 構建可比語料庫:
- 自然存在的可比語料庫: 利用程式競賽網站上相同題目的不同程式語言解法。
- 生成的語料庫: 使用程式碼生成模型,將一種程式語言的程式碼和文件說明轉換成另一種程式語言的程式碼。
- 檢索的可比語料庫: 使用程式碼檢索模型,找到語義相似的不同程式語言程式碼對。
- 多重參考譯文: 使用訓練好的模型為平行語料庫中的每個程式碼生成多個候選譯文,並利用自動生成的測試案例過濾錯誤譯文,最終選擇最具代表性的譯文作為額外參考譯文。
主要發現
- 相較於僅使用平行語料庫訓練的模型,同時使用可比語料庫和多重參考譯文進行訓練,可以顯著提升程式碼翻譯模型的效能,平均計算準確率 (CA@1) 提升了 7.5%。
- 訓練過程中使用可比語料庫,可以降低模型輸出的困惑度,並減少語法錯誤,顯示模型學習到生成更流暢且語法正確的目標語言程式碼。
- 使用多重參考譯文訓練,模型能夠在相同數量輸出中生成更多獨特且正確的譯文,顯示模型學習到更豐富的目標語言表示空間,並減少對單一譯文的過度擬合。
結論
本研究證實了利用可比語料庫和多重參考譯文進行資料增強,可以有效提升程式碼翻譯模型的效能,尤其是在平行訓練資料有限的情況下。
研究限制與未來方向
- 可比語料庫的來源和構建方式可能存在偏差,例如程式競賽網站的資料分佈可能與實際軟體開發有所差異。
- 僅在 TransCoder 資料集上進行評估,該資料集僅包含獨立函數,缺乏對大型軟體專案的評估。
- 未來研究可以探討結合資料增強技術與大型語言模型,以及如何構建更具代表性和品質更高的可比語料庫。
Statistik
平均計算準確率 (CA@1) 提升了 7.5%。
在僅有 100 個平行語料的情況下,CMTrans 的 CA@1 達到 43.1%,而 CodeT5 僅有 6.5%。
AVATAR-comp 中 83.41% 的 Java 程式碼片段中,如果包含 if 語句,則對應的 Python 程式碼片段也包含 if 語句。