CodeMorph-BERT

CodeMorph-BERT は、CodeSearchNet の Python コードデータを用いて ゼロから 訓練した CodeBERT モデルです。
コード補完、関数名予測、マスクされたトークンの予測に最適化されています。


🔗 Colab で試す

Use on Colab
📌 詳細な使い方は、こちらの Jupyter Notebook をご確認ください。


モデルの詳細

  • ベースモデル: なし(ゼロから CodeBERT を学習)
  • データセット: CodeSearchNet (Python サブセット)
  • トレーニング目的: Masked Language Modeling (MLM)
  • トークナイザー: Python コード向けに訓練された WordPiece トークナイザー

実験結果

CodeSearchNet (候補プールサイズ: 100) における評価

Metric CodeMorph-BERT Microsoft CodeBERT
MRR 0.6678 0.5598
MAP 0.6678 0.5598
R-Precision 0.5650 0.4650
Recall@1 0.5650 0.4650
Recall@5 0.7970 0.6490
Recall@10 0.8600 0.7410
Recall@50 0.9770 0.9640
Recall@100 1.0000 1.0000
Precision@1 0.5650 0.4650
Precision@5 0.6526 0.5351
Precision@10 0.6610 0.5476
Precision@50 0.6675 0.5592
Precision@100 0.6678 0.5598
NDCG@1 0.5650 0.4650
NDCG@5 0.6887 0.5636
NDCG@10 0.7091 0.5936
NDCG@50 0.7363 0.6444
NDCG@100 0.7401 0.6503
F1@1 0.5650 0.4650
F1@5 0.6899 0.5646
F1@10 0.7046 0.5866
F1@50 0.7169 0.6084
F1@100 0.7175 0.6095

詳細な実験内容やコードは、こちらの評価ノートブック でご確認いただけます。(ミスに気が付いたため現在修正中,追加で実験しています.更新までお待ちください、計算の指標自体は変わりませんがpythonのdocstringコメントを消して追実験しています)


💡 使用方法

以下は、Hugging Face Transformers を用いた CodeMorph-BERT の簡単な推論例です。

from transformers import AutoModelForMaskedLM, AutoTokenizer
import torch

# モデルとトークナイザーのロード
model_name = "Shuu12121/CodeMorph-BERT"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForMaskedLM.from_pretrained(model_name)

# 入力コード([MASK] を含む)
text = "def add(a, b): return a [MASK] b"

# トークナイズ
inputs = tokenizer(text, return_tensors="pt")

# 推論実行
with torch.no_grad():
    outputs = model(**inputs)
    logits = outputs.logits

# マスク位置のトークンを予測
mask_token_index = torch.where(inputs.input_ids == tokenizer.mask_token_id)[1]
predicted_token_id = logits[0, mask_token_index, :].argmax(axis=-1)
predicted_token = tokenizer.decode(predicted_token_id)

print("予測されたトークン:", predicted_token)
Downloads last month
20
Safetensors
Model size
63.4M params
Tensor type
F32
·
Inference Providers NEW
This model is not currently available via any of the supported third-party Inference Providers, and HF Inference API was unable to determine this model's library.

Dataset used to train Shuu12121/CodeMorph-BERT