🚀 CNMBert
このモデルは、拼音の略語を翻訳するために設計されており、Chinese - BERT - wwmをベースに訓練され、拼音略語の翻訳タスクに最適化されています。GPTモデルやGPT - 4oと比較して、SOTAの性能を達成しています。
🚀 クイックスタート
CNMBertは、拼音の略語を漢字に変換するタスクに特化したモデルです。このモデルは、Chinese-BERT-wwmをベースに、その事前学習タスクを変更することで、拼音略語の翻訳に適応させています。
✨ 主な機能
- 拼音略語の翻訳:"bhys" を "不好意思" のように、拼音の略語を漢字に変換します。
- 高性能:GPTモデルやGPT - 4oと比較して、SOTAの性能を達成しています。
📦 インストール
このモデルを使用するには、必要なライブラリをインストールする必要があります。以下のコードを参考にしてください。
from transformers import AutoTokenizer, BertConfig
from CustomBertModel import predict
from MoELayer import BertWwmMoE
💻 使用例
基本的な使用法
モデルの読み込み
tokenizer = AutoTokenizer.from_pretrained("Midsummra/CNMBert-MoE")
config = BertConfig.from_pretrained('Midsummra/CNMBert-MoE')
model = BertWwmMoE.from_pretrained('Midsummra/CNMBert-MoE', config=config).to('cuda')
単語の予測
print(predict("我有两千kq", "kq", model, tokenizer)[:5])
print(predict("快去给魔理沙看b吧", "b", model, tokenizer[:5]))
高度な使用法
def predict(sentence: str,
predict_word: str,
model,
tokenizer,
top_k=8,
beam_size=16,
threshold=0.005,
fast_mode=True,
strict_mode=True):
def backtrack_predict(sentence: str,
predict_word: str,
model,
tokenizer,
top_k=10,
fast_mode=True,
strict_mode=True):
⚠️ 重要提示
由于BERT的自编码特性,导致其在预测MASK时,顺序不同会导致预测结果不同,如果启用fast_mode
,则会正向和反向分别对输入进行预测,可以提升一点准确率(2%左右),但是会带来更大的性能开销。
💡 使用建议
strict_mode
会对输入进行检查,以判断其是否为一个真实存在的汉语词汇。
📚 ドキュメント
拼音略語とは
"bhys" を "不好意思"、"ys" を "原神" のように、拼音の頭文字を使って漢字を置き換える略語のことを指します。詳細については、大家为什么会讨厌缩写? - 远方青木的回答 - 知乎を参照してください。
モデルの比較
Property |
Details |
Model Type |
CNMBert-Default, CNMBert-MoE |
Model Weights |
Huggingface, Huggingface |
Memory Usage (FP16) |
0.4GB, 0.8GB |
Model Size |
131M, 329M |
QPS |
12.56, 3.20 |
MRR |
59.70, 61.53 |
Acc |
49.74, 51.86 |
- すべてのモデルは、同じ200万件のwikiおよび知乎のコーパスで訓練されています。
- QPSは、queries per secondのことです(現在はpredictをcで書き直していないため、性能は低いです...)。
- MRRは、平均逆順位(mean reciprocal rank)です。
- Accは、正解率(accuracy)です。
モデルの微調整方法
TrainExample.ipynbを参照してください。データセットの形式は、csvの最初の列が訓練するコーパスであれば問題ありません。
Q&A
Q: 精度が低いように感じます。
A: fast_mode
とstrict_mode
をFalse
に設定してみてください。このモデルは、小さなデータセット(200万件)で事前学習されているため、汎化能力が低いのは当然です。より大きなデータセットや細分化された分野で微調整することができます。具体的な微調整方法は、Chinese-BERT-wwmと大きく変わりません。DataCollactor
をCustomBertModel.py
のDataCollatorForMultiMask
に置き換えるだけです。
🔧 技術詳細
このモデルは、Chinese-BERT-wwmをベースに、その事前学習タスクを変更することで、拼音略語の翻訳に適応させています。
📄 ライセンス
このプロジェクトは、AGPL - 3.0ライセンスの下で公開されています。
引用
もしCNMBertの具体的な実装に興味がある場合は、以下の文献を参照してください。
@misc{feng2024cnmbertmodelhanyupinyin,
title={CNMBert: A Model For Hanyu Pinyin Abbreviation to Character Conversion Task},
author={Zishuo Feng and Feng Cao},
year={2024},
eprint={2411.11770},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2411.11770},
}