Доступ к модели маскированного языка spaCy

Начиная с версии 2.1, spaCy имеет языковую модель в стиле BERT (LM). Он предсказывает слова-векторы вместо слов, поэтому я буду использовать здесь «слова» и «слова-векторы» взаимозаменяемо.

Мне нужно взять предложение с замаскированным словом и список слов и ранжировать слова по вероятности их появления в замаскированном слоте. В настоящее время я использую для этого BERT (аналогично bert-синтаксис). Я хотел бы посмотреть, приемлема ли производительность spaCy в этой задаче. Между этот файл и Вот этот я почти уверен, что можно что-то построить. Тем не менее, мне кажется, что нужно проникнуть во внутренности библиотеки глубже, чем хотелось бы.

Есть ли простой способ взаимодействия с языковой моделью spaCy в маске?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
239
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В основном это недостаток приближения LMAO. На самом деле я не осознавал этого, пока кто-то не указал мне на это в сабреддите /r/machinelearning.

Поскольку мы предсказываем вектор, мы действительно можем предсказать только одну точку в векторном пространстве. Это действительно отличается от предсказания распределения по словам. Представьте, что у нас есть пробел типа The __ of corn. Допустим, хорошее распределение филлеров для этого будет {kernel, ear, piece}. Векторы для этих слов не особенно близки, так как алгоритм word2vec строит векторное пространство на основе всех контекстов слов, а слова взаимозаменяемы только в этом контексте. В подавляющем большинстве случаев использования piece слово ear было бы очень плохой заменой.

Если вероятные наполнители не расположены близко друг к другу в векторном пространстве, модель LMAO не сможет вернуть вам ответ, соответствующий этому набору слов.

Если вам нужен только 1-лучший ответ, алгоритм в spacy pretrain имеет хорошие шансы дать его вам. Но если вам нужно распределение, аппроксимация не работает, и вы должны использовать что-то вроде BERT.

Другие вопросы по теме