Вы можете получать контекстные вложения на лету, но общее время, затрачиваемое на получение встраиваний, всегда будет одинаковым. Есть два варианта, как это сделать: 1. импортировать BioBERT в пакет Transformers и использовать его в PyTorch (что я бы сделал) или 2. использовать исходную кодовую базу.
1. Импорт BioBERT в пакет Transformers
Наиболее удобный способ использования предварительно обученных моделей BERT - это пакет Transformers . Первоначально он был написан для PyTorch, но работает и с TensorFlow. Он не имеет BioBERT из коробки, поэтому вам нужно конвертировать его из формата TensorFlow самостоятельно. Существует скрипт convert_tf_checkpoint_to_pytorch.py
, который это делает. У людей были некоторые проблемы с этим сценарием, и BioBERT (, кажется, решен ).
После преобразования модели вы можете загрузить ее следующим образом.
import torch
from transformers import *
# Load dataset, tokenizer, model from pretrained model/vocabulary
tokenizer = BertTokenizer.from_pretrained('directory_with_converted_model')
model = BertModel.from_pretrained('directory_with_converted_model')
# Call the model in a standard PyTorch way
embeddings = model([tokenizer.encode("Cool biomedical tetra-hydro-sentence.", add_special_tokens=True)])
2. Используйте непосредственно кодовую базу BioBERT
Вы можете получить вложения на ходу, используя в основном код exctract_feautres.py
. В строках 346-382 они инициализируют модель. Вы получаете вложения, вызывая estimator.predict(...)
.
. Для этого вам нужно отформатировать формат ввода. Сначала вам нужно отформатировать строку (используя код в строке 326-337), а затем применить и вызвать convert_examples_to_features
.