[論文レビュー] AVATAR: A Parallel Corpus for Java-Python Program Translation
本稿では、競技プログラミングサイトおよびオープンソースリポジトリから収集した、JavaおよびPythonの対応する解答を備えた9,515件のプログラミング問題からなる並列コーパス、Avatarを紹介する。このデータセットには、関数的正しさの評価のための単体テストを備えた250例が含まれており、事前学習済みコード言語モデルのファインチューニングを可能にするが、実験の結果、強力な語彙的パフォーマンスを示しても、依然として関数的正しさの面で既存のモデルが困難を抱えていることが示された。
Program translation refers to migrating source code from one programming language to another. It has tremendous practical value in software development, as porting software across languages is time-consuming and costly. Automating program translation is of paramount importance in software migration, and recently researchers explored unsupervised approaches due to the unavailability of parallel corpora. However, the availability of pre-trained language models for programming languages enables supervised fine-tuning with a small number of labeled examples. Therefore, we present AVATAR, a collection of 9,515 programming problems and their solutions written in two popular languages, Java and Python. AVATAR is collected from competitive programming sites, online platforms, and open-source repositories. Furthermore, AVATAR includes unit tests for 250 examples to facilitate functional correctness evaluation. We benchmark several pre-trained language models fine-tuned on AVATAR. Experiment results show that the models lack in generating functionally accurate code.
研究の動機と目的
- Java-Pythonプログラム翻訳のための大規模かつ高品質な並列コーパスの不足に対処すること。
- 事前学習済みコード言語モデル(PLM)の教師ありファインチューニングを可能にし、翻訳パフォーマンスの向上を図ること。
- 単体テストを備えたベンチマークを提供し、翻訳コードの関数的正しさを評価すること。
- 現在のニューラルモデルが、関数的に正しいコードを生成する際に抱える制限を調査すること。
- 多様で公開可能なデータセットをリリースすることで、将来の自動プログラム翻訳分野の研究を支援すること。
提案手法
- 競技プログラミングプラットフォーム(AtCoder、Codeforces、AIZU、Code Jam、LeetCode、Project Euler)およびオンラインリポジトリ(GeeksforGeeks、GitHub)から解答を収集した。
- コメントおよびドキュメンテーション文字列を除去し、トークン化およびフィルタリングを行い、一貫性を確保するための長さのしきい値(≤464トークン)を適用した。
- 重複を避けるために、1問題あたり最大5つの異なる解答を保持した。
- データセットを75%の訓練用、5%の検証用、20%のテスト用に分割し、検証およびテストセットには複数の正解解答を保持した。
- 構文的および語彙的マッチングを超えた関数的正しさの評価を可能にするために、250例の単体テストを提供した。
- 翻訳タスクのためのAvatarデータセット上で、複数の事前学習済みコード言語モデル(例:CodeBERT、GraphCodeBERT、TransCoder-ST、PLBART)をファインチューニングした。
実験結果
リサーチクエスチョン
- RQ1事前学習済みコード言語モデルが、新しい大規模並列コーパスを用いてファインチューニングされた場合、Java-Python翻訳においてどの程度効果的か。
- RQ2現在のモデルが、単体テストによる検証を通じて、どの程度関数的に正しいコードを生成するか。
- RQ3語彙的正確性と関数的正しさのギャップを生じさせる要因は何か。
- RQ4学習データの多様性および品質が、モデルの一般化および関数的正しさに与える影響は何か。
- RQ5洗練された並列コーパスは、未学習の問題におけるゼロショットまたはフェイシュット翻訳パフォーマンスを向上させることができるか。
主な発見
- Avatarデータセットには、250例の単体テストがアノテーションされた9,515件のプログラミング問題が含まれており、関数的正しさの評価が可能である。
- ファインチューニングされたモデルは語彙的および構文的メトリクスで優れたパフォーマンスを示したが、単体テスト実行による関数的正しさの指標では顕著に低い正確性を示した。
- 評価されたモデルの中で、ファインチューニングされたTransCoder-STが語彙的および関数的メトリクスの両方で最高のパフォーマンスを示し、次いでPLBARTがそれに続いた。
- 強力な語彙的マッチにもかかわらず、モデルは頻繁に関数的に正しいコードを生成できず、意味的理解のギャップが顕著であることが示された。
- データセットは、特にデータ構造や制御構造の処理において、構文的に正しいが論理的に誤ったコードを生成する傾向があることを明らかにした。
- 限定的なモデルファインチューニングと中程度のデータセットサイズのため、トレーニングの炭素足跡は低かった(7.5kg CO2当量)。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。