غلاف Scikit-Learn إلى نموذج Bert من Google من أجل مهام تسلسل النص والرمز المميز بناءً على منفذ Pytorch Luggingface.
SciBERT و BioBERT المسبقة للمجالات العلمية والطبية الحيوية.حاول في Google Colab!
يتطلب python> = 3.5 و pytorch> = 0.4.1
git clone -b master https://github.com/charles9n/bert-sklearn
cd bert-sklearn
pip install . BERT model.fit(X,y)
X : قائمة ، pandas dataframe ، أو مجموعة numpy من النص أو أزواج النص أو قوائم الرمز المميز
y : قائمة ، Pandas DataFrame ، أو مجموعة numpy من الملصقات/الأهداف
from bert_sklearn import BertClassifier
from bert_sklearn import BertRegressor
from bert_sklearn import load_model
# define model
model = BertClassifier () # text/text pair classification
# model = BertRegressor() # text/text pair regression
# model = BertTokenClassifier() # token sequence classification
# finetune model
model . fit ( X_train , y_train )
# make predictions
y_pred = model . predict ( X_test )
# make probabilty predictions
y_pred = model . predict_proba ( X_test )
# score model on test data
model . score ( X_test , y_test )
# save model to disk
savefile = '/data/mymodel.bin'
model . save ( savefile )
# load model from disk
new_model = load_model ( savefile )
# do stuff with new model
new_model . score ( X_test , y_test )انظر دفتر الملاحظات التجريبية.
# try different options...
model . bert_model = 'bert-large-uncased'
model . num_mlp_layers = 3
model . max_seq_length = 196
model . epochs = 4
model . learning_rate = 4e-5
model . gradient_accumulation_steps = 4
# finetune
model . fit ( X_train , y_train )
# do stuff...
model . score ( X_test , y_test )انظر الخيارات
from sklearn . model_selection import GridSearchCV
params = { 'epochs' :[ 3 , 4 ], 'learning_rate' :[ 2e-5 , 3e-5 , 5e-5 ]}
# wrap classifier in GridSearchCV
clf = GridSearchCV ( BertClassifier ( validation_fraction = 0 ),
params ,
scoring = 'accuracy' ,
verbose = True )
# fit gridsearch
clf . fit ( X_train , y_train )انظر DEMO_TUNING_HEPERPARAMETERS.
تم استخدام مجموعات بيانات القطار و DEV من معايير Glue (تقييم اللغة المعممة) مع النموذج bert-base-uncased وقارنوا النتائج المبلغ عنها مرة أخرى في لوحة Google Paper و Glue.
| mnli (م/مم) | QQP | qnli | SST-2 | كولا | STS-B | MRPC | RTE | |
|---|---|---|---|---|---|---|---|---|
| قاعدة بيرت (المتصدرين) | 84.6/83.4 | 89.2 | 90.1 | 93.5 | 52.1 | 87.1 | 84.8 | 66.4 |
| بيرت ساكليرن | 83.7/83.9 | 90.2 | 88.6 | 92.32 | 58.1 | 89.7 | 86.8 | 64.6 |
يمكن العثور على عمليات التشغيل الفردية هنا.
نتائج NER للمهمة المشتركة CoNLL-2003
| ديف F1 | اختبار F1 | |
|---|---|---|
| ورقة بيرت | 96.4 | 92.4 |
| بيرت ساكليرن | 96.04 | 91.97 |
احصائيات مستوى الامتداد في الاختبار:
processed 46666 tokens with 5648 phrases ; found: 5740 phrases ; correct: 5173.
accuracy: 98.15% ; precision: 90.12% ; recall: 91.59% ; FB1: 90.85
LOC: precision: 92.24% ; recall: 92.69% ; FB1: 92.46 1676
MISC: precision: 78.07% ; recall: 81.62% ; FB1: 79.81 734
ORG: precision: 87.64% ; recall: 90.07% ; FB1: 88.84 1707
PER: precision: 96.00% ; recall: 96.35% ; FB1: 96.17 1623 راجع دفتر NER_ENGLISH للحصول على عرض تجريبي باستخدام نموذج 'bert-base-cased' .
نتائج NER باستخدام Bert-Sklearn مع SciBERT و BioBERT على مهمة التعرف على اسم NCBI disease Corpus .
SOTA السابقة لهذه المهمة هي 87.34 لـ F1 على مجموعة الاختبار.
| اختبار F1 (Bert-Sklearn) | اختبار F1 (من الأوراق) | |
|---|---|---|
| قاعدة بيرت غلاف | 85.09 | 85.49 |
| Scibert basevocab غلاف | 88.29 | 86.91 |
| Scibert Scivocab cased | 87.73 | 86.45 |
| BioBert PubMed_V1.0 | 87.86 | 87.38 |
| BioBert PubMed_PMC_V1.0 | 88.26 | 89.36 |
| BioBert PubMed_v1.1 | 87.26 | نا |
راجع NER_NCBI_DISEESE_BIOBERT_SCIBERT NOTEBORT لتوضيح العرض التوضيحي باستخدام نماذج SciBERT و BioBERT .
انظر Scibert Paper و Biobert Paper لمزيد من المعلومات حول النماذج المعنية.
راجع دفتر ملاحظات IMDB للحصول على عرض توضيحي لتصنيف النص على مهمة معنويات قاعدة بيانات الأفلام على الإنترنت.
راجع دفتر Notking_english للحصول على عرض تجريبي على الضبط النحوي باستخدام بيانات مهمة CoNLL-2000 .
راجع دفتر NER_CHINESE للحصول على عرض تجريبي باستخدام 'bert-base-chinese' لـ NER الصيني.
إجراء اختبارات مع Pytest:
python -m pytest -sv tests/ google BERT github و Paper:
Huggingface pytorch-pretrained-BERT Github
SciBERT Github و Paper: "Scibert: التضمينات السياقية المسبق للنص العلمي" (3/2019) بواسطة I. Beltagy ، A. Cohan ، و K. Lo
BioBERT Github و Paper: "BioBert: نموذج تمثيل اللغة الطبية الحيوية مسبقًا للتعدين النصية الطبية الحيوية" (2/2019) بقلم J. Lee ، W. Yoon ، S. Kim ، D. Kim ، S. Kim ، Ch So ، و J. Kang