--- license: mit datasets: - google/code_x_glue_tc_nl_code_search_adv base_model: - Shuu12121/CodeMorph-BERT pipeline_tag: fill-mask tags: - code --- description: | このモデルは `Shuu12121/CodeMorph-BERT` をベースに、`google/code_x_glue_tc_nl_code_search_adv` データセットを用いて追加トレーニングを行いました。 これにより、コード検索精度の向上を実現しました。 実験コードはこちらです 📄 [CodeMorphV2 Notebook (GitHub)](https://github.com/Shun0212/CodeBERTPretrained/blob/5c296a620cdbaadb7753b82ff419be0a142e1176/codemorphv2.ipynb) ### 🔬 **実験結果** #### **CodeSearchNet (候補プールサイズ: 100) における評価** | Metric | CodeMorph-BERT | CodeMorph-BERTv2 | Microsoft CodeBERT | |---------------|---------------|------------------|--------------------| | **MRR** | 0.6678 | 0.6607 | 0.5598 | | **MAP** | 0.6678 | 0.6607 | 0.5598 | | **R-Precision** | 0.5650 | 0.5510 | 0.4650 | | **Recall@1** | 0.5650 | 0.5510 | 0.4650 | | **Recall@5** | 0.7970 | 0.7970 | 0.6490 | | **Recall@10** | 0.8600 | 0.8630 | 0.7410 | | **Recall@50** | 0.9770 | 0.9790 | 0.9640 | | **Recall@100** | 1.0000 | 1.0000 | 1.0000 | | **Precision@1** | 0.5650 | 0.5510 | 0.4650 | | **NDCG@10** | 0.7091 | 0.7050 | 0.5936 | #### **google/code_x_glue_tc_nl_code_search_adv データセットでの評価** | Metric | CodeMorph-BERT | CodeMorph-BERTv2 | Microsoft CodeBERT | |---------------|---------------|------------------|--------------------| | **MRR** | 0.3023 | 0.3154 | 0.3562 | | **Recall@1** | 0.2035 | 0.2185 | 0.2527 | | **Recall@5** | 0.3909 | 0.4021 | 0.4490 | | **Recall@10** | 0.4936 | 0.5046 | 0.5622 | | **Recall@50** | 0.8134 | 0.8231 | 0.8995 | | **Recall@100** | 1.0000 | 1.0000 | 1.0000 | | **Precision@1** | 0.2035 | 0.2185 | 0.2527 | | **NDCG@10** | 0.3344 | 0.3469 | 0.3912 | --- ## 📝 **CodeMorph-BERT vs CodeMorph-BERTv2 の比較** - **CodeSearchNet におけるパフォーマンス** - `CodeMorph-BERTv2` は `CodeMorph-BERT` とほぼ同等の精度を維持しており、リコールとNDCGにおいてわずかに改善が見られます。 - `Recall@10` や `Recall@50` は v2 のほうがわずかに高く、全体的に検索精度が向上しています。 - **google/code_x_glue_tc_nl_code_search_adv におけるパフォーマンス** - `CodeMorph-BERTv2` は `CodeMorph-BERT` より **MRR、Recall@1、Recall@5、Recall@10** の値が向上しており、検索精度の改善が見られます。 - `Precision@1` も向上しており、上位検索結果の精度が向上していることが分かります。 - **総合的な考察** - `CodeMorph-BERTv2` は `CodeMorph-BERT` と比べて **コード検索の再現率 (Recall) を向上** させており、より優れた検索結果を返すことが可能になりました。 - ただし、`Microsoft CodeBERT` と比較すると、`google/code_x_glue_tc_nl_code_search_adv` のデータセットではまだ改善の余地があり、さらなるチューニングの余地が残っています。 --- ## 💡 **使用方法** ```python from transformers import AutoModelForMaskedLM, AutoTokenizer import torch # モデルとトークナイザーのロード model_name = "Shuu12121/CodeMorph-BERTv2" 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)