🚀 CNMBert
このモデルは拼音の頭文字を中国語に変換するためのもので、Chinese - BERT - wwmをベースに訓練され、GPTモデルやGPT - 4oと比べてSOTAの性能を達成しました。
🚀 クイックスタート
CNMBertは、拼音の頭文字を中国語に翻訳するためのモデルです。このモデルはChinese-BERT-wwmをベースに訓練され、その事前学習タスクを修正することで、拼音の頭文字を中国語に変換するタスクに適合するようになりました。
✨ 主な機能
- 拼音の頭文字を中国語に翻訳することができます。
- 微調整されたGPTモデルやGPT - 4oと比べて、SOTAの性能を達成しました。
📦 インストール
このモデルを使用するには、transformers
ライブラリが必要です。以下のコマンドでインストールできます。
pip install transformers
💻 使用例
基本的な使用法
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" -> "原神"
这样的,使用拼音首字母来代替汉字的缩写,我们姑且称之为拼音缩写。
如果对拼音缩写感兴趣可以看看这个↓
大家为什么会讨厌缩写? - 远方青木的回答 - 知乎
CNMBertの性能比較
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はクエリーパーセカンドです(predictをCで書き直していないため、現在のパフォーマンスは低いです...)
- MRRは平均逆順位(mean reciprocal rank)です。
- Accは正解率(accuracy)です。
如何微调模型
請参考TrainExample.ipynb、データセットの形式に関しては、csvの最初の列が訓練するコーパスであればOKです。
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},
}