Теоретическое объяснение и практический пример.

Встраивание слов — это метод представления слов (токенов) в словаре. Он считается одним из самых полезных и важных понятий в обработке естественного языка (NLP).

В этом посте я расскажу об идее встраивания слов и о том, как это полезно в НЛП. Затем мы рассмотрим практический пример, чтобы понять концепцию, используя встраиваемый проектор TensorFlow.

Вложение слов означает представление слова векторами в n-мерном векторном пространстве. Рассмотрим словарь, содержащий 10000 слов. При традиционном числовом кодировании слова представляются числами от 1 до 10000. Недостатком этого подхода является то, что мы не можем получить какую-либо информацию о значении слов, поскольку числа присваиваются словам без учета значения.

Если мы используем встраивание слов с размерностью 16, каждое слово представляется 16-мерным вектором. Основное преимущество встраивания слов заключается в том, что слова, имеющие схожий контекст, могут быть представлены близко друг к другу в векторном пространстве. Таким образом, векторы несут смысл семантики слова. Предположим, мы пытаемся провести анализ настроений по отзывам клиентов. Если мы используем вложения слов для представления слов в обзорах, слова, связанные с положительным значением, указывают на определенный путь. Точно так же слова с отрицательным значением, скорее всего, будут указывать в другом направлении, чем слова с положительным значением.

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

Существуют различные методы измерения сходства векторов. Одним из наиболее распространенных методов является косинусное сходство, которое представляет собой косинус угла между двумя векторами. В отличие от евклидова расстояния, косинусное сходство не учитывает величину векторов при измерении сходства. Таким образом, косинусное сходство фокусируется на ориентации векторов, а не на их длине.

Рассмотрим слова «захватывающий», «скучный», «захватывающий» и «скучный». В двумерном векторном пространстве векторы для этих слов могут выглядеть так:

По мере уменьшения угла между векторами косинус угла увеличивается и, следовательно, сходство косинусов увеличивается. Если два вектора лежат в одном направлении (угол между ними равен нулю), косинусное сходство равно 1. С другой стороны, если два вектора указывают в противоположном направлении (угол между ними равен 180), косинусное сходство равно -1.

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

Существуют различные методы создания встраивания слов, такие как Word2Vec, GloVe или слой встраивания нейронной сети. Еще одним преимуществом встраивания слов является то, что мы можем использовать предварительно обученное встраивание в наших моделях. Например, вложения Word2Vec и GloVe открыты для публики и могут использоваться для задач обработки естественного языка. Мы также можем обучать наши собственные встраивания, используя слой встраивания в нейронной сети. Например, мы можем добавить слой Embedding в последовательную модель Keras. Обратите внимание, что для обучения слоя встраивания требуется много данных для достижения высокой производительности.

Пример, который у нас был с 4 словами, является очень простым случаем, но он улавливает идею и мотивацию встраивания слов. Чтобы визуализировать и проверять более сложные примеры, мы можем использовать встроенный проектор TensorFlow.

Встраивание проектора

Embedding Projector — отличный инструмент для понимания встраивания слов. Это позволяет вам загружать собственное встраивание и визуализировать его, а также анализировать некоторые предварительно обученные модели.

Я выбрал одно из предварительно обученных вложений — Word2Vec 10K, но не стесняйтесь загружать свои собственные вложения, используя параметр загрузить. В TensorFlow есть информативное руководство по встраиванию слов, в котором также объясняется, как загружать данные в проектор для встраивания.

Вернемся к примеру Word2Vec 10K, который включает 10000 точек в 200 измерениях.

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

Проектор показывает, сколько раз в тексте присутствует «свое», и список, содержащий ближайшие точки. Ближайший пункт к «собственному» — «их», что имеет смысл, потому что эти слова, вероятно, встречаются вместе, как в «своем».

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

Я выбрал слово «дедушка» и выделил 101 слово. Он вернул менее плотное представление, что упрощает визуальный анализ встраивания.

Встраивание слов считается одной из самых важных идей в обработке естественного языка, которая позволяет исследователям НЛП, а также практикам сделать большой шаг в решении сложных задач.

Спасибо за чтение. Пожалуйста, дайте мне знать, если у вас есть какие-либо отзывы.