как сохранить вставку слова BERT как .vec, похожую на word2vec - PullRequest
1 голос
/ 08 июля 2019

Я хочу использовать сгенерированное вложение слова BERT в качестве вектора для построения словаря в Torchtext. Я могу загружать векторы, такие как GloVe или word2vec, но я не знал, как сохранить встраивание слова из BERT в формат, приемлемый для Torchtext.Vocab

, когда я пытаюсь этот код

txt_field.build_vocab (train, vectors = bertVec)

Я получил эту ошибку

ValueError: Получил входные векторытип, ожидаемый str или объект Vector

1 Ответ

0 голосов
/ 09 июля 2019

Нет прямой очереди для создания Vocab для вложений BERT.

Ниже приводится причина:

  1. Если вы посмотрите на вложения Миколва или ПЕРЧАТКИ, есть только словавложения вычисляются на огромном корпусе данных.Для вложения Миколова у вас есть около 3М слов и их вложения.Тем не менее, в bert используются вложения слов по частям, и в его словаре примерно 30 тыс. Слов.
  2. Теперь вы можете подумать о вычислении встраивания по частям.Да, технически вы должны быть в состоянии сделать это.Однако для BERT вы не можете.Это связано с тем, что в случае Миколова или Глова векторы вложения основаны только на словах и зависят от контекста, который влияет при вычислении значений вложения.Но, в случае берта, и встраивание основано на 3 факторах: вложение WORD (-piece), вложение позиции и вложение сегмента.Таким образом, одно и то же слово «Hello» может иметь различное встраивание в зависимости от того, в какой позиции предложения оно будет отображаться, это зависит от влияния встраивания Position.

Следовательно, было бы невозможно создать словарь для слов с использованием BERT, поскольку одни и те же слова могут иметь разные вложения.

...