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

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

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

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


person Sam H.    schedule 24.05.2019    source источник


Ответы (1)


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

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

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

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

person syllogism_    schedule 01.06.2019