ner bert
1.0.0
Il existe deux solutions basées sur cette architecture.
Ce référentiel contient une solution de la tâche NER basée sur la réimplémentation Pytorch du référentiel TensorFlow de Google pour le modèle Bert qui a été publié avec l'article Bert: pré-formation de transformateurs bidirectionnels profonds pour la compréhension du langage par Jacob Devlin, Ming-Wei Chang, Kenton Lee et Kristina Toutanova.
Cette implémentation peut charger n'importe quel point de contrôle TensorFlow pré-formé pour Bert (dans les modèles pré-formés de Google).
L'ancienne version est dans la "vieille" branche.
from modules.data import bert_data
data = bert_data.LearnData.create(
train_df_path=train_df_path,
valid_df_path=valid_df_path,
idx2labels_path="/path/to/vocab",
clear_cache=True
)
from modules.models.bert_models import BERTBiLSTMAttnCRF
model = BERTBiLSTMAttnCRF.create(len(data.train_ds.idx2label))
from modules.train.train import NerLearner
num_epochs = 100
learner = NerLearner(
model, data, "/path/for/save/best/model", t_total=num_epochs * len(data.train_dl))
from modules.data.bert_data import get_data_loader_for_predict
learner.load_model()
dl = get_data_loader_for_predict(data, df_path="/path/to/df/for/predict")
preds = learner.predict(dl)
from sklearn_crfsuite.metrics import flat_classification_report
from modules.analyze_utils.utils import bert_labels2tokens, voting_choicer
from modules.analyze_utils.plot_metrics import get_bert_span_report
from modules.analyze_utils.main_metrics import precision_recall_f1
pred_tokens, pred_labels = bert_labels2tokens(dl, preds)
true_tokens, true_labels = bert_labels2tokens(dl, [x.bert_labels for x in dl.dataset])
tokens_report = flat_classification_report(true_labels, pred_labels, digits=4)
print(tokens_report)
results = precision_recall_f1(true_labels, pred_labels)
Nous n'avons pas recherché les meilleurs paramètres et obtenu les résultats suivants.
| Modèle | Ensemble de données | Tok f1 dev | Dev F1 Span | Tester F1 Tok | Tester F1 Span |
|---|---|---|---|---|---|
| LA NÔTRE | |||||
| M-bertcrf-io | Facturable | - | - | 0,8543 | 0,8409 |
| M-bertncrf-io | Facturable | - | - | 0,8637 | 0,8516 |
| M-bertbilstmcrf-io | Facturable | - | - | 0,8835 | 0,8718 |
| M-bertbilstmncrf-io | Facturable | - | - | 0,8632 | 0,8510 |
| M-bertattncrf-io | Facturable | - | - | 0,8503 | 0,8346 |
| M-bertbilstmattncrf-io | Facturable | - | - | 0,8839 | 0,8716 |
| M-bertbilstmattnncrf-io | Facturable | - | - | 0,8807 | 0,8680 |
| M-bertbilstmattncrf-fit_bert-io | Facturable | - | - | 0,8823 | 0,8709 |
| M-bertbilstmattnncrf-fit_bert-io | Facturable | - | - | 0,8583 | 0,8456 |
| - | - | - | - | - | - |
| Bertbilstmcrf-io | Conll-2003 | 0,9629 | - | 0,9221 | - |
| B-bertbilstmcrf-io | Conll-2003 | 0,9635 | - | 0,9229 | - |
| B-bertbilstmattncrf-io | Conll-2003 | 0,9614 | - | 0,9237 | - |
| B-bertbilstmattnncrf-io | Conll-2003 | 0,9631 | - | 0,9249 | - |
| Sota actuel | |||||
| Deeppavlov-Rubert-neuf | Facturable | - | - | - | 0,8266 |
| CSE | Conll-2003 | - | - | 0,931 | - |
| Bert-grand | Conll-2003 | 0,966 | - | 0,928 | - |
| Bascule | Conll-2003 | 0,964 | - | 0,924 | - |