ner bert
1.0.0
هناك حلان على أساس هذه الهندسة المعمارية.
يحتوي هذا المستودع على حل لمهمة NER استنادًا إلى إعادة تخطيط Pytorch لمستودع توترات من Google لنموذج BERT الذي تم إصداره مع Paper Bert: ما قبل التدريب من محولات ثنائية الاتجاه العميقة لفهم اللغة من قبل جاكوب ديفلين ، مينغ واي تشانغ ، كينتون لي وكريستينا توتانوفا.
يمكن لهذا التنفيذ تحميل أي نقطة تفتيش Tensorflow المدربة مسبقًا لـ BERT (ولا سيما النماذج التي تم تدريبها مسبقًا من Google).
النسخة القديمة في فرع "القديم".
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)
لم نبحث عن أفضل المعلمات وحصلنا على النتائج التالية.
| نموذج | مجموعة البيانات | DEV F1 TOK | DEV F1 SPAN | اختبار f1 tok | اختبار F1 Span |
|---|---|---|---|---|---|
| لنا | |||||
| M-Bertcrf-IO | factreval | - | - | 0.8543 | 0.8409 |
| M-bertncrf-IO | factreval | - | - | 0.8637 | 0.8516 |
| M-bertbilstmcrf-io | factreval | - | - | 0.8835 | 0.8718 |
| M-bertbilstmncrf-io | factreval | - | - | 0.8632 | 0.8510 |
| M-bertattncrf-IO | factreval | - | - | 0.8503 | 0.8346 |
| m-bertbilstmattncrf-io | factreval | - | - | 0.8839 | 0.8716 |
| m-bertbilstmattnncrf-io | factreval | - | - | 0.8807 | 0.8680 |
| m-bertbilstmattncrf-fit_bert-io | factreval | - | - | 0.8823 | 0.8709 |
| m-bertbilstmattnncrf-fit_bert-io | factreval | - | - | 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 | - |
| سوتا الحالية | |||||
| Deeppavlov-Rubert-Ner | factreval | - | - | - | 0.8266 |
| CSE | Conll-2003 | - | - | 0.931 | - |
| بيرت large | Conll-2003 | 0.966 | - | 0.928 | - |
| bert-base | Conll-2003 | 0.964 | - | 0.924 | - |