コード片のプログラミング言語を識別するAIモデルが、6言語を対象とする分類用に調整された。Hugging Faceが示した評価データでは、正解率とF1値がともに0.999を超えた。
コード向けモデルを6言語の分類に転用
Hugging Faceは、事前学習済みのコード向けモデルCodeBERTa-small-v1を追加学習し、コード片の言語を識別するCodeBERTa-language-idを作成した。公開された学習コードでは、Go、Java、JavaScript、PHP、Python、Rubyの6言語を分類対象としている。
分類層を追加し、基盤モデルの重みを固定
言語識別モデルは、事前学習済みモデルの出力を受け取る系列分類用の層を追加している。公開された学習コードでは基盤モデルのパラメーターを固定し、最後の分類層だけを学習する。
入力の処理には、CodeSearchNetのデータで独自に学習した、バイト列を扱うトークナイザーを使う。このトークナイザーでは、空白に続く「:=」が一つのトークンになる。
評価データで正解率とF1値が0.999超
Hugging Faceが示した評価データでは、分類の正解率が0.999を超えた。F1値も0.999を超えており、公開された評価コードは言語ごとの結果をマクロ平均してF1値を計算する。
短いコード片では表記の違いが分類結果に現れる
公開された実行例では、「foo = ‘bar’」はJavaScriptに分類された。一方、文字列の前に「u」を付けた「foo = u’bar’」はPythonに分類されている。