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

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

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

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

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

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

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

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

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

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

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

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

TF-IDF

Поскольку BoW заботится только о частоте слов, мы делаем шаг вперед с TF - IDF. Это популярный алгоритм в области обработки естественного языка, сокращение от Term Frequency - Inverse Document Frequency. Он измеряет важность слова или 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 Blog.