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

Люди хороши в разговорах. Мы понимаем, что кто-то имеет в виду, когда что-то говорит, и можем понять, когда такое слово, как «банк», используется в контексте финансового института или берега реки. Мы используем силу логического, лингвистического, эмоционального мышления и понимания, чтобы реагировать во время разговора.

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

В предыдущем сообщении в блоге мы показали один из популярных способов представления смысла и контекста машинам. Этот пост копнет немного глубже, и вы увидите, на каком пути находится область обработки естественного языка и как она заставляет машины не только видеть слова, но и понимать их.

Наша первая остановка предшествует представлениям на основе нейронных сетей. На этом этапе мы пытались научить компьютер наличию и отсутствию слов или n-грамм. И наивным методом для достижения этого было использование горячего кодирования.

Векторы с горячим кодированием

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

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

Мешок слов (BoW)

Каждое слово или n-грамма в документе связаны с векторным индексом. В зависимости от наличия или отсутствия слова мы помечаем индекс вектора количеством раз, которое оно появляется в документе. Этот метод широко используется в классификации документов. Например, если мы возьмем эти две строки в качестве наших документов: «Быстрая коричневая лиса перепрыгнула через ленивую собаку» и «Собака проснулась и погналась за лисой». em> Мы можем сформировать словарь, как показано ниже.

Затем формируются векторы с количеством слов в каждом документе. В этом случае мы получаем 13-элементный вектор, который выглядит так для каждого документа.

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

TF-IDF

Поскольку BoW заботилась только о частоте слов, мы делаем шаг вперед с TF — IDF. Это популярный алгоритм в области обработки естественного языка, сокращенно от термина «Частота термина» — обратная частота документа. Он измеряет важность слова или n-граммы для документа в корпусе.

Каждому слову в документе присваивается оценка, которая пропорционально увеличивается, когда частота слова увеличивается в документе, но смещается, когда оно слишком часто встречается в корпусе. Значения TF-IDF можно использовать вместо подсчета частоты в описанных выше векторах. Поскольку это статистическая мера, она по-прежнему не отражает значение слов.

Хотя эти два метода помогли решить многие проблемы в НЛП, они все же не уловили истинного значения слов.

Известный лингвист Дж. Р. Ферт сказал: «Полное значение слова всегда зависит от контекста, и никакое изучение значения вне контекста нельзя воспринимать всерьез». Основываясь на этой идее, встраивание слов дало столь необходимый толчок. Одним из самых простых способов изучения встраивания слов или векторов было использование нейронных сетей.

Вложения на основе нейронных сетей

Опираясь на представление о том, что слово может быть полностью определено только в том контексте, в котором оно используется; Вложения слов — это подход к представлению слова на основе компании, которую оно поддерживает. Создавая вложения слов, мы стремимся разработать плотные векторные представления, которые каким-то образом отражают их значение в различных контекстах, в которых они были замечены в документах. В предыдущих подходах мы использовали только один индекс вектора, чтобы показать наличие, отсутствие или количество слов. В следующих подходах мы перейдем к распределенному представлению. Это представление использует всю длину или размеры вектора для выражения контекста, семантики и синтаксической природы, в которой слово было замечено.

Word2Vec

Один из самых популярных подходов, разработанных для создания векторов распределения, называется Word2Vec. Он был разработан Миколовым и др. в 2013 году в Google. Они предложили два разных подхода: «Непрерывный пакет слов» и «Непрерывный пропуск грамматики». Чтобы понять, как работают эти две архитектуры, давайте поработаем с этим абзацем примера:

««Гарри Поттер» написан Джоан Роулинг, британской писательницей. Он назван в честь своего главного героя и героя, вымышленного Гарри Поттера. Семь книг этой серии были проданы тиражом более 500 миллионов экземпляров по всему миру на более чем 70 языках и являются самой продаваемой книжной серией всех времен. Все они были экранизированы.

Непрерывный мешок слов (CBOW)

Эта архитектура направлена ​​на предсказание текущего слова на основе входного контекста. Представьте себе скользящее окно, которое перемещается от одного слова к другому в приведенном выше абзаце. Когда окно находится над словом «фантазия», слова, предшествующие ему, и слова, следующие за словом, считаются контекстом этого слова.

Входными данными для этой модели являются векторы контекстных слов с горячим кодированием. Количество измерений векторов равно размеру словарного запаса V корпуса. Эта модель состоит из одного скрытого слоя и выходного слоя. Целью обучения для этой модели является максимизация условной вероятности выходного слова. Таким образом, веса W1 и W2 изменяются до тех пор, пока модель не сможет достичь высокой условной вероятности для выходного слова.

Так, в нашем примере, если даны однократно закодированные векторы четырех предшествующих слов — «а», «серия», «из», «восемь» и четырех следующих слов — «роман», «и», «восемь», «фильмы» модели CBOW, показанной выше, призваны максимизировать условную вероятность получения «фэнтези» в выходном слое. Следует отметить, что порядок, в котором слова контекста передаются в сеть, не имеет значения.

Непрерывный пропуск граммов

Эта модель является противоположностью модели CBOW. Здесь, по слову, мы хотим предсказать контекст, в котором оно обычно встречается. Вот как будет выглядеть архитектура:

Модель выведет C число V размерных векторов. C определяется как количество контекстных слов, которые мы хотим, чтобы модель возвращала, а V, как и в предыдущей модели, представляет собой общий размер словаря. Модель здесь обучена минимизировать суммарную ошибку прогноза. Таким образом, когда входными данными для модели являются «фантазии», мы ожидаем, что она вернет столько же векторов для слов, в которых вы обычно найдете «фантазии». Следует отметить, что модель дает лучшие векторы слов, когда мы увеличиваем C.

CBOW проще и быстрее обучать, но модель Continuous Skip Gram лучше работает с нечастыми словами. Хотя мы обучаем эти две модели, мы их не используем. Нас интересуют веса W, которыми заканчиваются модели. Веса, представленные матрицей весов W2, затем становятся нашими векторами слов. Затем эти векторы слов можно использовать для инициализации нейронных сетей, обученных выполнять различные задачи.

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

Если вы заинтересованы в более подробном изучении модели Word2Vec, вот документы, которые представили их миру:

Качество векторов слов зависит от корпуса, который используется для их обучения. Первоначально Word2Vec обучался на наборе данных Google News с использованием 1,6 миллиарда высокочастотных слов. Следовательно, векторы слов изучают контекст, в котором слова используются в мире новостей.

В следующем посте мы обсудим другие способы генерации векторов слов с помощью GloVe и FastText. Мы также рассмотрим последние языковые представления, созданные с использованием таких моделей, как ELMO и BERT.

Первоначально опубликовано в Блоге SAP Conversational AI.