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