Как бы выглядело матричное умножение, если бы у вас были слова вместо чисел?

Все алгоритмы машинного обучения, разработанные на данный момент, основаны на линейной алгебре, вероятностном исчислении и статистике. Итак, все они обрабатывают числа. Однако при обработке естественного языка мы обязаны обрабатывать текст. Ведь люди не всегда общаются числами.

Сегодня мы узнаем о методах преобразования слов текста в числа. Этот процесс называется Извлечение функций. Рассмотрим следующий текст:

the quick brown fox jumps over the lazy dog

Сначала мы выбираем уникальные слова из текста, и полученный список называется Словарь.

["the", "quick", "brown", "fox", "jumps", "over", "lazy", "dog"]

Теперь у нас есть слова, давайте переведем их в числа.

Целочисленное представление

Один из самых простых способов - просто присвоить каждому из них номер.

Вот и мы. Мы просто представили слова цифрами. Но у этого метода есть тонкая проблема. Мы знаем, что 8> 4, потому что числа имеют свои собственные значения, но мы присваиваем 8 слову «собака» и 4 слову «лиса». Мне это кажется нечестным. Нет никаких причин для присвоения «собаке» большего значения, чем «лиса». Так что заказывать не имеет смысла. К тому же цифра 8 ничего не говорит о «собаке». Это означает, что мы не фиксируем семантику слова.

One-hot-vector

Еще один способ представления слова - это one-hot-vector. В этом методе мы создаем вектор размера V (V - размер словаря) для каждого слова и вставляем 1 в индекс данного слова и 0 везде.

На диаграмме выше слово «лиса» представлено вектором, а не одним числом. Здесь каждый вектор сообщает, что это либо данное слово, либо отсутствие 1 в позиции индекса и 0 в другом месте.
Это улучшенный метод по сравнению с целочисленным представлением, поскольку он не предполагает подразумеваемого порядка. Однако он по-прежнему не может уловить семантику слова. Векторы ничего не говорят об их отношениях. Если мы вычислим евклидово расстояние между двумя векторами, мы всегда получим 1. Кроме того, большой объем памяти тратится на хранение кучи нулей.

Поэтому нам нужен метод, который фиксирует семантику слова и также эффективен с точки зрения памяти. Здесь на помощь приходят вложения слов.

Вложения слов

В течение некоторого времени мы жаловались, что наши методы не улавливают семантику слова. Так или иначе, давайте посмотрим, что это за семантика.

Если вам предложат следующие пять слов, как бы вы оценили их по шкале «позитивности»?

worry, sad, paper, excited, joyful

Вот мой рейтинг.

Если слово получает более высокий балл, оно считается положительным словом, и наоборот. Таким образом, слово «беспокоиться» получило -4,4, а слово «взволновано» - 3. Слово «бумага» звучало для меня нейтрально и получило оценку 0,1. Теперь у числового значения есть какое-то значение, связанное со словом. Эта «положительность» слова является семантикой, а число на самом деле является вектором с одним измерением.

Давайте добавим еще одно измерение - пол.

Мы добавили еще одно измерение, и векторы стали двумерными. Это новое измерение: - Пол, представляет собой еще одну семантику слова. Мы видим, что похожие слова находятся рядом друг с другом в векторном пространстве. Смысл слов вкладывается в эти векторы и поэтому называется встраиванием слов.

Если мы продолжаем добавлять больше измерений, скажем 100, каждое слово будет представлено столетним векторным пространством. Однако такие категориальные значения в реальном мире, как «позитивность» и «гендер», могут быть нам не очевидны. Это означает, что при встраивании слов нам не нужно знать, к чему относится каждое измерение, пока у нас есть векторы для каждого слова.

Вопрос в том, как получить эти вложения? Очевидно, что невозможно дать значение шкалы для каждого слова в словаре в 100 категориях. Вот некоторые из самых популярных методов для встраивания слов:

Классические методы

  • Word2Vec
  • Непрерывный мешок слов (CBOW)
  • Непрерывный пропуск грамм
  • Глобальные векторы (GloVe)
  • fastText

Методы глубокого обучения

  • БЕРТ
  • ELMO
  • GPT-2

Теперь у нас есть представление о том, как слова представлены в числовом виде (с помощью векторов). Все операции с матрицами выполняются с использованием этих представлений, и нам не нужно на самом деле умножать тексты.

использованная литература

Вложение слов, Coursera

Https://coursera.org/share/15b44d98830ffc2aa9c39aace8040c5c

Дхрувил Карани (1 сентября 2018 г.), Введение в встраивание слов и Word2Vec

Https://towardsdatascience.com/introduction-to-word-embedding-and-word2vec-652d0c2060fa