🚀 xlm-roberta-base-language-detection
このモデルは、Language Identification データセットで xlm-roberta-base をファインチューニングしたバージョンです。言語検出に直接使用でき、20 種類の言語をサポートしています。
🚀 クイックスタート
このモデルを使用する最も簡単な方法は、高レベルの pipeline
API を介することです。
from transformers import pipeline
text = [
"Brevity is the soul of wit.",
"Amor, ch'a nullo amato amar perdona."
]
model_ckpt = "papluca/xlm-roberta-base-language-detection"
pipe = pipeline("text-classification", model=model_ckpt)
pipe(text, top_k=1, truncation=True)
または、トークナイザーとモデルを別々に使用することもできます。
import torch
from transformers import AutoModelForSequenceClassification, AutoTokenizer
text = [
"Brevity is the soul of wit.",
"Amor, ch'a nullo amato amar perdona."
]
model_ckpt = "papluca/xlm-roberta-base-language-detection"
tokenizer = AutoTokenizer.from_pretrained(model_ckpt)
model = AutoModelForSequenceClassification.from_pretrained(model_ckpt)
inputs = tokenizer(text, padding=True, truncation=True, return_tensors="pt")
with torch.no_grad():
logits = model(**inputs).logits
preds = torch.softmax(logits, dim=-1)
id2lang = model.config.id2label
vals, idxs = torch.max(preds, dim=1)
{id2lang[k.item()]: v.item() for k, v in zip(idxs, vals)}
✨ 主な機能
- 20種類の言語をサポートする言語検出モデルです。
- テキスト分類タスクに直接使用できます。
📚 ドキュメント
モデルの説明
このモデルは、分類ヘッド(プールされた出力の上に線形層)を持つ XLM - RoBERTa トランスフォーマーモデルです。詳細については、[xlm - roberta - base](https://huggingface.co/xlm - roberta - base) のモデルカード、または Conneau らによる論文 Unsupervised Cross - lingual Representation Learning at Scale を参照してください。
想定される用途と制限
このモデルは言語検出器として直接使用でき、つまりシーケンス分類タスクに使用できます。現在、以下の 20 種類の言語をサポートしています。
アラビア語 (ar), ブルガリア語 (bg), ドイツ語 (de), 現代ギリシャ語 (el), 英語 (en), スペイン語 (es), フランス語 (fr), ヒンディー語 (hi), イタリア語 (it), 日本語 (ja), オランダ語 (nl), ポーランド語 (pl), ポルトガル語 (pt), ロシア語 (ru), スワヒリ語 (sw), タイ語 (th), トルコ語 (tr), ウルドゥー語 (ur), ベトナム語 (vi), 中国語 (zh)
トレーニングと評価データ
このモデルは、20 種類の言語のテキストシーケンスから構成される Language Identification データセットでファインチューニングされました。トレーニングセットには 70k のサンプルが含まれ、検証セットとテストセットにはそれぞれ 10k のサンプルが含まれています。テストセットでの平均精度は 99.6% です(テストセットが完全にバランスが取れているため、平均マクロ/加重 F1 スコアと一致します)。以下の表により詳細な評価が提供されています。
言語 |
適合率 |
再現率 |
F1 スコア |
サポート |
ar |
0.998 |
0.996 |
0.997 |
500 |
bg |
0.998 |
0.964 |
0.981 |
500 |
de |
0.998 |
0.996 |
0.997 |
500 |
el |
0.996 |
1.000 |
0.998 |
500 |
en |
1.000 |
1.000 |
1.000 |
500 |
es |
0.967 |
1.000 |
0.983 |
500 |
fr |
1.000 |
1.000 |
1.000 |
500 |
hi |
0.994 |
0.992 |
0.993 |
500 |
it |
1.000 |
0.992 |
0.996 |
500 |
ja |
0.996 |
0.996 |
0.996 |
500 |
nl |
1.000 |
1.000 |
1.000 |
500 |
pl |
1.000 |
1.000 |
1.000 |
500 |
pt |
0.988 |
1.000 |
0.994 |
500 |
ru |
1.000 |
0.994 |
0.997 |
500 |
sw |
1.000 |
1.000 |
1.000 |
500 |
th |
1.000 |
0.998 |
0.999 |
500 |
tr |
0.994 |
0.992 |
0.993 |
500 |
ur |
1.000 |
1.000 |
1.000 |
500 |
vi |
0.992 |
1.000 |
0.996 |
500 |
zh |
1.000 |
1.000 |
1.000 |
500 |
ベンチマーク
xlm - roberta - base - language - detection
と比較するベースラインとして、Python の langid ライブラリを使用しました。このライブラリは 97 種類の言語で事前学習されているため、.set_languages()
メソッドを使用して言語セットを 20 種類の言語に制限しました。langid のテストセットでの平均精度は 98.5% です。以下の表に詳細を示します。
言語 |
適合率 |
再現率 |
F1 スコア |
サポート |
ar |
0.990 |
0.970 |
0.980 |
500 |
bg |
0.998 |
0.964 |
0.981 |
500 |
de |
0.992 |
0.944 |
0.967 |
500 |
el |
1.000 |
0.998 |
0.999 |
500 |
en |
1.000 |
1.000 |
1.000 |
500 |
es |
1.000 |
0.968 |
0.984 |
500 |
fr |
0.996 |
1.000 |
0.998 |
500 |
hi |
0.949 |
0.976 |
0.963 |
500 |
it |
0.990 |
0.980 |
0.985 |
500 |
ja |
0.927 |
0.988 |
0.956 |
500 |
nl |
0.980 |
1.000 |
0.990 |
500 |
pl |
0.986 |
0.996 |
0.991 |
500 |
pt |
0.950 |
0.996 |
0.973 |
500 |
ru |
0.996 |
0.974 |
0.985 |
500 |
sw |
1.000 |
1.000 |
1.000 |
500 |
th |
1.000 |
0.996 |
0.998 |
500 |
tr |
0.990 |
0.968 |
0.979 |
500 |
ur |
0.998 |
0.996 |
0.997 |
500 |
vi |
0.971 |
0.990 |
0.980 |
500 |
zh |
1.000 |
1.000 |
1.000 |
500 |
トレーニング手順
ファインチューニングは Trainer
API を介して行われました。トレーニングコードが含まれる Colab ノートブック はこちらです。
トレーニングハイパーパラメータ
トレーニング中に以下のハイパーパラメータが使用されました。
- 学習率: 2e - 05
- トレーニングバッチサイズ: 64
- 評価バッチサイズ: 128
- シード: 42
- オプティマイザ: Adam (betas=(0.9, 0.999), epsilon = 1e - 08)
- 学習率スケジューラタイプ: 線形
- エポック数: 2
- 混合精度トレーニング: Native AMP
トレーニング結果
Language Identification データセットの valid
スプリットでの検証結果を以下にまとめます。
トレーニング損失 |
エポック |
ステップ |
検証損失 |
精度 |
F1 スコア |
0.2492 |
1.0 |
1094 |
0.0149 |
0.9969 |
0.9969 |
0.0101 |
2.0 |
2188 |
0.0103 |
0.9977 |
0.9977 |
簡単に言うと、検証セットで以下の結果が得られます。
- 損失: 0.0101
- 精度: 0.9977
- F1 スコア: 0.9977
フレームワークバージョン
- Transformers 4.12.5
- Pytorch 1.10.0+cu111
- Datasets 1.15.1
- Tokenizers 0.10.3
📄 ライセンス
このモデルは MIT ライセンスの下で提供されています。