Как предсказать замаскированное слово в предложении в BERT-базе из файлов контрольной точки Tensorflow (ckpt)?

У меня есть контрольные точки модели на основе BERT, которые я обучил с нуля в Tensorflow. Как я могу использовать эти контрольные точки, чтобы предсказать замаскированное слово в данном предложении?

Например, допустим, предложение выглядит так: «[CLS] abc pqr [MASK] xyz [SEP]» И я хочу предсказать слово в позиции [MASK].

Как я могу это сделать? Я много искал в Интернете, но все используют BERT для своих задач классификации. Не использовать BERT для предсказания замаскированного слова.

Пожалуйста, помогите мне решить эту проблему с предсказаниями.

Я создал данные, используя create_pretraining_data.py и обученную модель с нуля, используя run_pretraining.py из официального репозитория BERT (https://github.com/google-research/bert)

Я искал выпуски в официальном репо Bert. Но решения не нашел.

Также посмотрел код в этом репо. Они используют Оценщик, который они тренируют, не используя веса контрольных точек.

Не удалось найти способ использовать контрольные точки Tensorflow базовой модели BERT (обученной с нуля) для прогнозирования токена с маской слова (например, [MASK]).


person prashant-kikani    schedule 11.09.2019    source источник


Ответы (1)


Вам обязательно нужно начинать с контрольно-пропускного пункта TF? Если вы можете использовать одну из предварительно обученных моделей, используемых в библиотеке pytorch-transformers, я написал библиотеку именно для этого: FitBERT.

Если вам нужно начать с контрольной точки TF, существуют сценарии для преобразования контрольной точки TF в то, что может использовать pytorch-transformers, link, и после преобразования вы сможете использовать FitBERT или просто увидеть, что мы делаем, в коде.

person Sam H.    schedule 11.09.2019
comment
Спасибо за ваш ответ. Да, мне нужно использовать эти контрольно-пропускные пункты. Я обучил свой собственный BERT с нуля для языка хинди со своим собственным словарем. Я знаю, что BERT также предназначен для многоязычия. Но он выполняет кусочную токенизацию, но я хочу замаскировать все слово (есть также исследования для маскировки всего слова (WWM), но только для английского языка). - person prashant-kikani; 12.09.2019
comment
Вы смотрели ссылку и FitBERT? Скрипт должен охватывать контрольную точку, после чего вы можете использовать FitBERT для прогнозирования замаскированного токена. - person Sam H.; 12.09.2019
comment
да. Я посмотрел на это. Я получил .pth файл с контрольных точек BERT. Спасибо за это. Кстати, ваша библиотека FitBERT доступна в conda? Я пытался установить с помощью pip3 install fitbert, но это выдало эту ошибку ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output. - person prashant-kikani; 12.09.2019
comment
Он был протестирован на python3.6 и 3.7 на Ubuntu и Mac. Вы работаете в Windows? - person Sam H.; 12.09.2019
comment
О, нет, я использую Ubuntu, но моя версия python - 3.5.x - person prashant-kikani; 12.09.2019
comment
Этот .pth файл - это просто веса. Не модель архитектуры. Но для model.eval() мне понадобится модельная архитектура. Использование этого from_pretrained метода из pytorch-transformers дает английскую архитектуру BERT, которая имеет другой размер встраивания (поскольку размер словаря отличается). Не могли бы вы помочь мне с этим? - person prashant-kikani; 12.09.2019