🚀 ポルトガル語の法的ドメインにおける (BERT base) NERモデル
このモデルは、法的分野のNLP研究、コンピュータ法、および法的技術アプリケーションを支援するために開発されました。ポルトガル語の法的テキストを対象に、特定のラベル付けを行うNERモデルです。
🚀 クイックスタート
ner-legal-bert-base-cased-ptbr は、ポルトガル語の法的ドメインにおけるNERモデル(トークン分類)です。このモデルは、dominguesm/legal-bert-base-cased-ptbr モデルをNER目的で微調整したものです。
このモデルは、法的分野のNLP研究、コンピュータ法、および法的技術アプリケーションを支援することを目的としています。以下のラベルを持つポルトガル語の法的テキストが使用されています。
PESSOA
ORGANIZACAO
LOCAL
TEMPO
LEGISLACAO
JURISPRUDENCIA
これらのラベルは、LeNER_br データセットにインスパイアされています。
✨ 主な機能
- ポルトガル語の法的テキストに対するNER(固有表現抽出)を行うことができます。
- 特定のラベル(人物、組織、場所、時間、法令、判例など)を識別します。
📦 インストール
このモデルを使用するには、transformers
ライブラリが必要です。以下のコマンドでインストールできます。
pip install transformers torch
💻 使用例
基本的な使用法
from transformers import AutoModelForTokenClassification, AutoTokenizer
import torch
model_name = "dominguesm/ner-legal-bert-base-cased-ptbr"
model = AutoModelForTokenClassification.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
input_text = "Acrescento que não há de se falar em violação do artigo 114, § 3º, da Constituição Federal, posto que referido dispositivo revela-se impertinente, tratando da possibilidade de ajuizamento de dissídio coletivo pelo Ministério Público do Trabalho nos casos de greve em atividade essencial."
inputs = tokenizer(input_text, max_length=512, truncation=True, return_tensors="pt")
tokens = inputs.tokens()
outputs = model(**inputs).logits
predictions = torch.argmax(outputs, dim=2)
for token, prediction in zip(tokens, predictions[0].numpy()):
print((token, model.config.id2label[prediction]))
高度な使用法
from transformers import pipeline
model_name = "dominguesm/ner-legal-bert-base-cased-ptbr"
ner = pipeline(
"ner",
model=model_name
)
ner(input_text, aggregation_strategy="average")
📚 ドキュメント
学習データセット
ner-legal-bert-base-cased-ptbr のデータセットには以下が含まれています。
- 971932件の雑多な法的文書の例(学習分割)
- 53996件の雑多な法的文書の例(検証分割)
- 53997件の雑多な法的文書の例(テスト分割)
使用されたデータは、BRAZILIAN SUPREME FEDERAL TRIBUNALによって提供され、利用規約は LREC 2020 です。
このプロジェクトの結果は、いかなる意味でもBRAZILIAN SUPREME FEDERAL TRIBUNALの立場を意味するものではなく、すべてモデルの作成者の責任に帰されます。
学習手順
ハイパーパラメータ
バッチ、学習率など
- per_device_batch_size = 64
- gradient_accumulation_steps = 2
- learning_rate = 2e-5
- num_train_epochs = 3
- weight_decay = 0.01
- optimizer = torch.optim.AdamW
- epsilon = 1e-08
- lr_scheduler_type = linear
モデルの保存と最良モデルの読み込み
- save_total_limit = 3
- logging_steps = 1000
- eval_steps = logging_steps
- evaluation_strategy = 'steps'
- logging_strategy = 'steps'
- save_strategy = 'steps'
- save_steps = logging_steps
- load_best_model_at_end = True
- fp16 = True
学習結果
Num examples = 971932
Num Epochs = 3
Instantaneous batch size per device = 64
Total train batch size (w. parallel, distributed & accumulation) = 128
Gradient Accumulation steps = 2
Total optimization steps = 22779
Evaluation Infos:
Num examples = 53996
Batch size = 128
Step |
Training Loss |
Validation Loss |
Precision |
Recall |
F1 Accuracy |
1000 |
0.113900 |
0.057008 |
0.898600 |
0.938444 |
0.918090 |
2000 |
0.052800 |
0.048254 |
0.917243 |
0.941188 |
0.929062 |
3000 |
0.046200 |
0.043833 |
0.919706 |
0.948411 |
0.933838 |
4000 |
0.043500 |
0.039796 |
0.928439 |
0.947058 |
0.937656 |
5000 |
0.041400 |
0.039421 |
0.926103 |
0.952857 |
0.939290 |
6000 |
0.039700 |
0.038599 |
0.922376 |
0.956257 |
0.939011 |
7000 |
0.037800 |
0.036463 |
0.935125 |
0.950937 |
0.942964 |
8000 |
0.035900 |
0.035706 |
0.934638 |
0.954147 |
0.944292 |
9000 |
0.033800 |
0.034518 |
0.940354 |
0.951991 |
0.946136 |
10000 |
0.033600 |
0.033454 |
0.938170 |
0.956097 |
0.947049 |
11000 |
0.032700 |
0.032899 |
0.934130 |
0.959491 |
0.946641 |
12000 |
0.032200 |
0.032477 |
0.937400 |
0.959150 |
0.948151 |
13000 |
0.031200 |
0.033207 |
0.937058 |
0.960506 |
0.948637 |
14000 |
0.031400 |
0.031711 |
0.938765 |
0.959711 |
0.949123 |
15000 |
0.030600 |
0.031519 |
0.940488 |
0.959413 |
0.949856 |
16000 |
0.028500 |
0.031618 |
0.943643 |
0.957693 |
0.950616 |
17000 |
0.028000 |
0.031106 |
0.941109 |
0.960687 |
0.950797 |
18000 |
0.027800 |
0.030712 |
0.942821 |
0.960528 |
0.951592 |
19000 |
0.027500 |
0.030523 |
0.942950 |
0.960947 |
0.951864 |
20000 |
0.027400 |
0.030577 |
0.942462 |
0.961754 |
0.952010 |
21000 |
0.027000 |
0.030025 |
0.944483 |
0.960497 |
0.952422 |
22000 |
0.026800 |
0.030162 |
0.943868 |
0.961418 |
0.952562 |
固有表現ごとの検証指標(テストデータセット)
- Num examples = 53997
overall_precision
: 0.9432396865925381
overall_recall
: 0.9614334116769161
overall_f1
: 0.9522496545298874
overall_accuracy
': 0.9894741602608071
Label |
Precision |
Recall |
F1 Accuracy |
Entity Examples |
JURISPRUDENCIA |
0.8795197115548148 |
0.9037275221501844 |
0.8914593047810311 |
57223 |
LEGISLACAO |
0.9405395935529082 |
0.9514071028567378 |
0.9459421362370934 |
84642 |
LOCAL |
0.9011495452253004 |
0.9132358124779697 |
0.9071524233856495 |
56740 |
ORGANIZACAO |
0.9239028155165304 |
0.954964947845235 |
0.9391771163875446 |
183013 |
PESSOA |
0.9651685220572037 |
0.9738545198908279 |
0.9694920661875761 |
193456 |
TEMPO |
0.973704616066295 |
0.9918808401799004 |
0.9827086882453152 |
186103 |
🔧 技術詳細
このモデルは、BERTベースのアーキテクチャを使用しています。トークン分類タスクに特化しており、法的テキストの固有表現を識別するために微調整されています。
📄 ライセンス
このモデルは、CC BY 4.0ライセンスの下で提供されています。