
要約
優れた訓練を経た機械学習モデルは、大量のオープンソースソフトウェアデータを活用することで、ソフトウェア工学(SE)タスクの自動化に向けた有望なアプローチとして注目を集めている。過去数年間で、より洗練されたモデルと訓練手法の進展により、多くのSEタスクにおいて性能が着実に向上してきている。さらに多様で質の高いラベル付きデータが豊富にあるほど、モデルの訓練に適しているが、高品質なデータセットを構築することは時間と労力がかかる課題である。そのため、質の高いラベル付きデータの量と多様性を拡張する手法は、広範な適用可能性を持つ。特に、Rubyなどの一部の言語ではラベル付きデータが少ない一方、JavaScriptなどの他の言語では、特定のアプリケーション領域に偏ったデータが多く、多様性に欠ける傾向がある。このようなデータの制約を克服する手段として、本研究では、異なるプログラミング言語で書かれた人間によるコード(同一の機能を実現するもの)は、非常に類似しており、特に識別子の命名パターンが強く保持されているという証拠を提示する。さらに、識別子がソフトウェア工学タスクの訓練データにおいて極めて重要な要素であることも示唆する。この偶然にも似た現象を活用することで、複数言語にまたがる既存の訓練データを活用することで、モデルの性能向上が可能であるという証拠を得た。本研究では、コード要約、コード検索、関数名生成という3つの異なるタスクに対してこのアプローチを検証した。その結果、このデータ拡張手法は、異なるタスク、言語、機械学習モデルと広く互換性を持つことが明らかになった。