Что это?

Вложение слов — это представление слова в виде вектора или последовательности чисел. Часто эти векторы кодируют, как слово используется в сочетании с другими словами в наборе данных. Как метод кодирования, так и используемый набор данных могут сильно различаться и в конечном итоге зависят от соответствующего варианта использования.

Почему это полезно?

Встраивание слов имеет повсеместное применение в NLP/ML и позволяет компьютерам или математическим уравнениям рассуждать о словах. Компьютеры видят слова только как последовательность отдельных символов, что не всегда полезно при рассуждениях о семантическом или синтаксическом использовании слова в языке. Встраивание слов может дать компьютерам дополнительную информацию о слове и его использовании с другими словами в предложениях.

Многие крупные технологические компании, такие как Google и Facebook, вложили значительные средства в разработку передовых методов создания таких вложений.

Как это делается?

Процесс кодирования слов как векторов обычно выполняется путем создания репозитория сопоставлений слов с векторами, а затем обращения к этому репозиторию для получения встраивания определенного слова. Этот репозиторий создается путем обучения некоторой модели в обучающем корпусе.

Сумка слов / Одна модель горячего кодирования

Простой способ представления слов в виде векторов состоит в том, чтобы присвоить каждому возможному слову в словаре или словаре уникальный идентификатор. Например, если наш словарь содержит 5 слов: [собаки, лучше, чем, кошки], то мы можем присвоить каждому слову уникальное целое число:

  • собаки — 1
  • есть — 2
  • лучше — 3
  • чем — 4
  • кошки — 5

Чтобы затем закодировать слово как вектор, создайте вектор размером со словарь, содержащий 0 в каждой записи. Затем установите индекс, соответствующий уникальному идентификатору слова, равным 1. Таким образом, слово «лучше» будет иметь вектор [ 0, 0, 1, 0, 0 ]. Затем мы можем представлять предложения или даже целые документы в виде встраивания, складывая вместе все векторы слов для этого документа. Например, если наш документ просто «кошки лучше», то вектор документа будет [ 0, 1, 1, 0, 1 ]

Плюсы

  • Легко/просто реализовать
  • Быстрое время обработки/обучения
  • Хорошо работает для небольших наборов данных, когда другие методы встраивания не имеют достаточного количества данных для обучения.
  • Хорошо работает с небольшими предметно-ориентированными наборами данных, когда другие модели встраивания, обученные на больших общих наборах данных, не охватывают контекст более нишевого набора данных.

Минусы

  • Не учитывает порядок слов
  • Векторы слов чрезвычайно велики — часто требуется интенсивная обработка векторов документов для уменьшения размерности.

Модели Word2Vec

Word2Vec – это популярное семейство алгоритмов встраивания слов, выпущенное в 2013 году. Есть два основных алгоритма, на которых работает word2vec: Continuous Bag of Words и Skip-gram.

Случаи использования в производственной среде

  • Музыкальные рекомендации в Spotify и Anghami
  • Рекомендации по размещению на Airbnb
  • Рекомендации продуктов в Yahoo Mail
  • Сопоставление рекламы с поисковыми запросами в Yahoo Search

Непрерывный набор слов (CBOW)

Модель непрерывного набора слов использует нейронную сеть с прямой связью и одним скрытым слоем для классификации слов в предложении на основе окружающих слов. Если входной пример «я думаю [???] я есть», то выход модели должен быть «следовательно», поскольку это был бы наиболее вероятный выбор, учитывая контекстные слова «я думаю» и «я есть».

Когда мы обучаем эту нейронную сеть предлагать слова на основе контекстных слов, нейронная сеть изучает ряд весовых коэффициентов. На самом деле эти веса напрямую соответствуют векторам для каждого слова в словаре. Затем эти векторы извлекаются из модели нейронной сети и используются для встраивания любого слова в виде вектора.

Плюсы

  • Кодирует близкое использование других слов во встраивание слова
  • Быстрее обучается, чем модель с пропуском грамма
  • Хорошо фиксирует синтаксическое использование слов: слово «рассол» было бы близко к «маринованному».

Минусы

  • Ограничено размером окна для контекстных слов
  • Не отражает также семантическое использование слов: слово «автомобиль» не было бы так похоже на «лодка».
  • Склонен к чрезмерному использованию частых слов
  • Невозможно вставить слова, которые модель еще не видела

Модель Skip-Gram

Алгоритм пропуска грамм можно рассматривать как обратную модель CBOW. Вместо того, чтобы классифицировать слово на основе слов контекста, skip-gram пытается классифицировать слова контекста на основе одного входного слова. Например, если вводом является слово «поэтому», а размер окна равен 5, то вывод должен быть [я, думаю], [я есть]. Подобно CBOW, для выполнения этой задачи обучается нейронная сеть с прямой связью, а затем мы извлекаем веса нейронной сети как вложения слов.

Плюсы

  • Кодирует близкое использование других слов во встраивание слова
  • Хорошо фиксирует семантическое использование слов: слово «кошка» близко к слову «лодка».
  • Не так склонен к переоснащению частых слов, как CBOW

Минусы

  • Ограничено размером окна для контекстных слов
  • Тренируется медленнее, чем CBOW
  • Также не отражает синтаксическое использование слов: слово «рассол» не было бы так похоже на «маринованный».
  • Невозможно вставить слова, которые модель еще не видела

Ресурсы