ner bert
1.0.0
Ada dua solusi berdasarkan arsitektur ini.
Repositori ini berisi solusi tugas NER berdasarkan pada reimplementasi pytorch dari repositori TensorFlow Google untuk model Bert yang dirilis bersama dengan kertas Bert: pra-pelatihan transformator dua arah yang mendalam untuk pemahaman bahasa oleh Jacob Devlin, Ming-Wei Chang, Kenton Lee dan Kristina Toutanova.
Implementasi ini dapat memuat pos pemeriksaan TensorFlow pra-terlatih untuk Bert (khususnya model pra-terlatih Google).
Versi lama ada di cabang "lama".
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)
Kami tidak mencari parameter terbaik dan memperoleh hasil berikut.
| Model | Kumpulan data | Dev F1 Tok | Rentang dev f1 | Uji Tok F1 | Uji rentang F1 |
|---|---|---|---|---|---|
| MILIK KITA | |||||
| M-BERTCRF-IO | Factrueval | - | - | 0.8543 | 0.8409 |
| M-BERTNCRF-IO | Factrueval | - | - | 0.8637 | 0.8516 |
| M-BERTBILSTMCRF-IO | Factrueval | - | - | 0.8835 | 0.8718 |
| M-BERTBILSTMNCRF-IO | Factrueval | - | - | 0.8632 | 0.8510 |
| M-BERTATTNCRF-IO | Factrueval | - | - | 0.8503 | 0.8346 |
| M-BERTBILSTMATTNCRF-IO | Factrueval | - | - | 0.8839 | 0.8716 |
| M-BTBILSTMATTNNCRF-IO | Factrueval | - | - | 0.8807 | 0.8680 |
| M-BERTBILSTMATTNCRF-FIT_BERT-IO | Factrueval | - | - | 0.8823 | 0.8709 |
| M-BERTBILSTMATTNNCRF-FIT_BERT-IO | Factrueval | - | - | 0.8583 | 0.8456 |
| - | - | - | - | - | - |
| Bertbilstmcrf-io | Conll-2003 | 0.9629 | - | 0.9221 | - |
| B-BTBILSTMCRF-IO | Conll-2003 | 0.9635 | - | 0.9229 | - |
| B-BTBILSTMATTNCRF-IO | Conll-2003 | 0.9614 | - | 0.9237 | - |
| B-BTBILSTMATTNNCRF-IO | Conll-2003 | 0.9631 | - | 0.9249 | - |
| Sota saat ini | |||||
| Deeppavlov-rubert-ner | Factrueval | - | - | - | 0.8266 |
| CSE | Conll-2003 | - | - | 0.931 | - |
| Bert-Large | Conll-2003 | 0.966 | - | 0.928 | - |
| Bert-base | Conll-2003 | 0.964 | - | 0.924 | - |