Лучший способ использовать заполнение маски обнимающего лица для более чем 1 маскируемого токена за раз

Я могу использовать конвейер заполнения маски обнимающего лица, чтобы предсказать 1 замаскированный токен в предложении, используя следующее:

!pip install -q transformers
from __future__ import print_function
import ipywidgets as widgets
from transformers import pipeline

nlp_fill = pipeline('fill-mask')
nlp_fill("I am going to guess <mask> in this sentence")

Но есть ли у кого-нибудь мнение о том, как лучше всего это сделать, если я хочу предсказать 2 замаскированных токена? например если вместо этого предложение "I am going to <mask> <mask> in this sentence"?

Если я попытаюсь поместить это точное предложение в nlp_fill, я получу сообщение об ошибке "ValueError: only one element tensors can be converted to Python scalars", поэтому оно не сработает автоматически.

Любая помощь приветствуется!


person user3472360    schedule 02.04.2020    source источник
comment
извините, не понимал, как важно давать людям голоса "за"   -  person user3472360    schedule 18.06.2020


Ответы (1)


К сожалению, ожидание, что за маской будет только одно слово, жестко запрограммировано в FillMaskPipeline класс.

Для более ограниченной задачи заполнения маски при фиксированном количестве вариантов заполнения маски можно расширить FitBERT, чтобы сделать это - у меня есть блокнот, который я могу отправить вам, если вы напишете мне, но это ужасно плохой код. Я один из авторов FitBERT, но у меня не было возможности добавить это.

РЕДАКТИРОВАТЬ

Вот блокнот, не судите меня

person Sam H.    schedule 21.05.2020
comment
Не знаете, как отправить вам сообщение, но да, я бы хотел увидеть эту записную книжку, если возможно? - person user3472360; 23.05.2020