🚀 EstBERTベースのエストニア語固有表現認識モデル
このモデルは、エストニア語固有表現認識(NER)データセットで tartuNLP/EstBERTをファインチューニングしたバージョンです。このモデルは、タルトゥ大学のコンピュータ科学研究所に所属するNLP研究グループであるtartuNLPによって学習されました。
テストセットでは、以下の結果を達成しています。
- 損失: 0.3565
- 適合率: 0.7612
- 再現率: 0.7744
- F1値: 0.7678
- 正解率: 0.9672
エンティティレベルの結果は以下の通りです。
|
適合率 |
再現率 |
F1値 |
数 |
DATE |
0.7278 |
0.7258 |
0.7268 |
372 |
EVENT |
0.3721 |
0.5714 |
0.4507 |
28 |
GPE |
0.8679 |
0.8369 |
0.8521 |
840 |
LOC |
0.6545 |
0.4832 |
0.5560 |
149 |
MONEY |
0.6625 |
0.6023 |
0.6310 |
88 |
ORG |
0.6761 |
0.7267 |
0.7005 |
589 |
PER |
0.8255 |
0.9068 |
0.8642 |
751 |
PERCENT |
1.0 |
0.9589 |
0.9790 |
73 |
PROD |
0.6030 |
0.5430 |
0.5714 |
221 |
TIME |
0.5682 |
0.5556 |
0.5618 |
45 |
TITLE |
0.7 |
0.8063 |
0.7494 |
191 |
🚀 クイックスタート
このモデルは、NER用のTransformersパイプラインで使用できます。モデルがサブワードトークンをエンティティとしてタグ付けすることがあるため、結果の後処理が必要になる場合があります。
from transformers import BertTokenizer, BertForTokenClassification
from transformers import pipeline
tokenizer = BertTokenizer.from_pretrained('tartuNLP/EstBERT_NER')
bertner = BertForTokenClassification.from_pretrained('tartuNLP/EstBERT_NER')
nlp = pipeline("ner", model=bertner, tokenizer=tokenizer)
text = "Kaia Kanepi (WTA 57.) langes USA-s Charlestonis toimuval WTA 500 kategooria tenniseturniiril konkurentsist kaheksandikfinaalis, kaotades poolatarile Magda Linette'ile (WTA 64.) 3 : 6, 6 : 4, 2 : 6."
ner_results = nlp(text)
tokens=tokenizer(text)
tokens=tokenizer.convert_ids_to_tokens(tokens['input_ids'])
print(f'tokens: {tokens}')
print(f'NER model:{ner_results}')
tokens: ['[CLS]', 'kai', '##a', 'kanepi', '(', 'w', '##ta', '57', '.', ')', 'langes', 'usa', '-', 's', 'cha', '##rl', '##est', '##onis', 'toimuval', 'w', '##ta', '500', 'kategooria', 'tennise', '##turniiril', 'konkurentsist', 'kaheksandik', '##finaalis', ',', 'kaotades', 'poola', '##tari', '##le', 'ma', '##gda', 'line', '##tte', "'", 'ile', '(', 'w', '##ta', '64', '.', ')', '3', ':', '6', ',', '6', ':', '4', ',', '2', ':', '6', '.', '[SEP]']
NER model: [{'entity': 'B-PER', 'score': 0.99999887, 'index': 1, 'word': 'kai', 'start': None, 'end': None}, {'entity': 'B-PER', 'score': 0.97371966, 'index': 2, 'word': '##a', 'start': None, 'end': None}, {'entity': 'I-PER', 'score': 0.99999815, 'index': 3, 'word': 'kanepi', 'start': None, 'end': None}, {'entity': 'B-ORG', 'score': 0.63085276, 'index': 5, 'word': 'w', 'start': None, 'end': None}, {'entity': 'B-GPE', 'score': 0.99999934, 'index': 11, 'word': 'usa', 'start': None, 'end': None}, {'entity': 'B-GPE', 'score': 0.9999685, 'index': 14, 'word': 'cha', 'start': None, 'end': None}, {'entity': 'I-GPE', 'score': 0.8875574, 'index': 15, 'word': '##rl', 'start': None, 'end': None}, {'entity': 'I-GPE', 'score': 0.9996168, 'index': 16, 'word': '##est', 'start': None, 'end': None}, {'entity': 'I-GPE', 'score': 0.9992657, 'index': 17, 'word': '##onis', 'start': None, 'end': None}, {'entity': 'B-EVENT', 'score': 0.99999064, 'index': 19, 'word': 'w', 'start': None, 'end': None}, {'entity': 'I-EVENT', 'score': 0.9772493, 'index': 20, 'word': '##ta', 'start': None, 'end': None}, {'entity': 'I-EVENT', 'score': 0.99999076, 'index': 21, 'word': '500', 'start': None, 'end': None}, {'entity': 'I-EVENT', 'score': 0.99955636, 'index': 22, 'word': 'kategooria', 'start': None, 'end': None}, {'entity': 'B-TITLE', 'score': 0.8771319, 'index': 30, 'word': 'poola', 'start': None, 'end': None}, {'entity': 'B-PER', 'score': 0.99999785, 'index': 33, 'word': 'ma', 'start': None, 'end': None}, {'entity': 'B-PER', 'score': 0.9998398, 'index': 34, 'word': '##gda', 'start': None, 'end': None}, {'entity': 'I-PER', 'score': 0.9999987, 'index': 35, 'word': 'line', 'start': None, 'end': None}, {'entity': 'I-PER', 'score': 0.9999976, 'index': 36, 'word': '##tte', 'start': None, 'end': None}, {'entity': 'I-PER', 'score': 0.99999285, 'index': 37, 'word': "'", 'start': None, 'end': None}, {'entity': 'I-PER', 'score': 0.9999794, 'index': 38, 'word': 'ile', 'start': None, 'end': None}, {'entity': 'B-ORG', 'score': 0.7664479, 'index': 40, 'word': 'w', 'start': None, 'end': None}]
✨ 主な機能
このモデルは、エストニア語のテキストから固有表現を見つけるために使用できます。誰でもこのモデルを無料で使用することができます。ただし、tartuNLPは、このモデルが誰にも何にも役立つことを保証するものではなく、生成される結果について一切の責任を負いません。
📦 インストール
このセクションでは、モデルを使用するための依存関係のインストールについて説明します。以下のコマンドを使用して、必要なライブラリをインストールしてください。
pip install transformers
📚 ドキュメント
学習と評価データ
このモデルは、2つのエストニア語NERデータセットで学習されました。
両方のデータセットは、同じ注釈スキームで注釈付けされています。このモデルを学習するために、これらのデータセットは結合されました。
学習手順
学習ハイパーパラメータ
学習中に使用されたハイパーパラメータは以下の通りです。
パラメータ |
値 |
学習率 |
1e-05 |
学習バッチサイズ |
16 |
評価バッチサイズ |
16 |
シード値 |
1024 |
オプティマイザ |
Adam (betas=(0.9, 0.98), epsilon=1e-06) |
学習率スケジューラのタイプ |
多項式 |
最大エポック数 |
150 |
早期終了の制限 |
20 |
早期終了の許容誤差 |
0.0001 |
混合精度学習 |
Native AMP |
学習結果
最終的なモデルは、開発セットで全体のF1値が最も高かった53エポック(太字で表示)の後に保存されました。
(学習結果の表は省略しますが、原文の表をそのまま使用します)
🔧 技術詳細
このモデルは、エストニア語の固有表現認識タスクに特化しており、Transformersライブラリを使用して構築されています。学習には、Adamオプティマイザと多項式学習率スケジューラが使用され、混合精度学習により学習速度が向上しています。また、早期終了機能を使用することで、過学習を防ぎ、最適なモデルを選択しています。
📄 ライセンス
このモデルは、CC BY 4.0ライセンスの下で提供されています。