Обертка Scikit-learn для Menetune Bert Model для задач последовательности текста и токенов на основе порта Pytorch HuggingFaceface.
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 . model.fit(X,y) , т.е. finetune BERT
X : Список, пандас DataFrame или Numpy Marray текстовых, текстовых пар или списков токенов
y : список, пандас данных или массив Numpy of Labels/Targets
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_hyperparameters Notebook.
Наборы данных поезда и разработчика из контрольных показателей Glue (общее понимание языка) использовались с моделью bert-base-uncased и снова сравнивали, что сообщалось о результатах в плане Google Paper и Pabry Soble.
| 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 |
Индивидуальные пробежки можно найти здесь.
НЕР Результаты для общей задачи 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_ENGISLE для демонстрации с использованием модели 'bert-base-cased' .
НЕР РЕЗУЛЬТАТЫ С помощью Bert-Sklearn с SciBERT и BioBERT по задаче распознавания имени NCBI disease Corpus .
Предыдущая SOTA для этой задачи составляет 87,34 для F1 в тестовом наборе.
| Тест F1 (Bert-Sklearn) | Тест F1 (из документов) | |
|---|---|---|
| БЕРТ БАЗА | 85,09 | 85,49 |
| Scibert basevocab sased | 88.29 | 86.91 |
| Scibert Scivocab Cassed | 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_DISEASE_BIOBERT_SCIBERT Notebook для демонстрации с использованием моделей SciBERT и BioBERT .
См. Scibert Paper и Biobert Paper для получения дополнительной информации о соответствующих моделях.
См. Записную книжку IMDB для демонстрации текстовой классификации в интернет -базе данных о базе данных. Задача настроения.
См. Notebook Chunking_English для демонстрации на синтаксическом блюд с использованием данных задач CoNLL-2000 .
См. Ner_chinese Notebook для демонстрации с использованием 'bert-base-chinese' для китайского NER.
Запустите тесты с Pytest:
python -m pytest -sv tests/ Google BERT Github and Paper: «Берт: предварительное обучение глубоких двунаправленных трансформаторов для понимания языка» (10/2018) Дж. Девлин, М. Чанг, К. Ли и К. Тутанова
Huggingface pytorch-pretrained-BERT Github
SciBERT Github and Paper: «Scibert: предварительно подготовленные контекстуализированные встраивания для научного текста» (3/2019), I. Beltagy, A. Cohan и K. lo
BioBERT Github and Paper: «Biobert: предварительно обученная модель представления биомедицинского языка для добычи биомедицинского текста» (2/2019) Дж. Ли, В. Юн, С. Ким, Д. Ким, С. Ким, Ч. С. С. С.