НЛП

Глубокое обучение для НЛП: демистификация Word2Vec, Doc2Vec и Top2Vec

Полное руководство по Word2Vec, Doc2Vec и Top2Vec для обработки естественного языка

В последние годы в области обработки естественного языка (NLP) наблюдается огромный рост, и одним из наиболее значительных достижений стало появление методов встраивания слов. Внедрение слов – это векторное представление слов в многомерном пространстве, отражающее семантику и контекст слов. Внедрение слов нашло применение в различных задачах НЛП, включая анализ тональности, классификацию текста и генерацию языка. В этом сообщении блога мы обсудим три популярных метода встраивания слов, а именно: Word2Vec, Doc2Vec и Top2Vec. Я надеюсь, что после прочтения этого поста вы лучше поймете, как работают эти методы и как их можно использовать для улучшения приложений обработки естественного языка.

Word2Vec

Word2Vec — это широко используемый метод для создания вложений слов. Впервые он был представлен в 2013 году группой исследователей Google под руководством Томаса Миколова. Word2Vec — это неглубокая нейронная сеть, которая учится предсказывать вероятность слова с учетом его контекста (CBOW) или контекста с учетом слова (скип-грамма). Word2Vec состоит из двух архитектур: Continuous Bag of Words (CBOW) и Skip-Gram. Мы подробно обсудим каждую из этих архитектур.

Архитектура CBOW

Архитектура CBOW предсказывает центральное слово на основе окружающих слов контекста. Слова контекста являются входными данными для нейронной сети, а центральное слово — выходными данными. Архитектура состоит из входного слоя, скрытого слоя и выходного слоя.

Входной слой представляет закодированные слова контекста, а выходной слой представляет закодированное центральное слово. Слой внедрения — это слой, который изучает векторное представление слов. Векторное представление центрального слова является выходом скрытого слоя. На следующей диаграмме показана архитектура CBOW.

Skip-Gram Архитектура

Архитектура пропуска грамм предсказывает слова окружающего контекста по центральному слову.

Центральное слово является входом в нейронную сеть, а контекстные слова — выходом. Архитектура состоит из входного слоя, скрытого слоя и выходного слоя. Векторное представление центрального слова является выходом скрытого слоя. На следующей диаграмме показана архитектура skip-gram.

Чтобы узнать больше о вариантах использования Word2Vec, см.:



Doc2Vec

Doc2Vec, также известный как Paragraph Vector, представляет собой расширение Word2Vec, которое изучает векторные представления документов, а не слов. Doc2Vec был представлен в 2014 году группой исследователей во главе с Томасом Миколовым. Doc2Vec изучает векторные представления документов, комбинируя векторы слов с вектором уровня документа.

Архитектура Doc2Vec похожа на Word2Vec тем, что состоит из двух архитектур: распределенной памяти (DM) и распределенного набора слов (DBOW). Мы подробно обсудим каждую из этих архитектур.

Распределенная память (DM)

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

Распределенный пакет слов (DBOW)

В варианте распределенного набора слов (DBOW) модель учится предсказывать набор целевых слов, учитывая только вектор документа. Это достигается путем случайной выборки набора слов из документа и использования вектора документа в качестве входных данных для нейронной сети. Модель обучена прогнозировать наличие или отсутствие каждого слова в целевом наборе. Поскольку входные данные не включают никаких контекстных слов, модель полностью полагается на вектор документа для захвата семантики документа. Таким образом, DBOW-вариант Doc2Vec похож на модель мешка слов, которая представляет документы как набор слов без захвата какой-либо реляционной информации между ними.

Топ2Век

Top2Vec — это неконтролируемая модель машинного обучения, предназначенная для тематического моделирования и кластеризации документов. Модель основана на сочетании встраивания документов и методов кластеризации, что позволяет ей идентифицировать темы и кластеры в больших наборах текстовых данных без необходимости явной маркировки тем.

Архитектура Top2Vec

Модель Top2Vec следует четырехэтапной архитектуре, которая включает:

  1. Встраивание документа

Первый этап включает преобразование входных текстовых документов в числовые представления, известные как вложения документов. Цель состоит в том, чтобы семантически похожие документы располагались ближе друг к другу в пространстве встраивания, а разнородные — дальше друг от друга. Для этого Top2Vec использует модель doc2vec.

2. Встраивание низкоразмерных документов

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

3. Выявление плотных областей документов

Третий этап включает в себя поиск плотных областей векторов документов с использованием HDBSCAN, который предназначен для обработки как шумовых кластеров, так и кластеров переменной плотности. HDBSCAN присваивает метку каждому плотному кластеру векторов документов и метку шума всем векторам документов, не входящим в плотный кластер. Плотные области идентифицированных векторов документов используются для вычисления тематических векторов. Центроид векторов документа в исходном измерении вычисляется для каждой плотной области, которая представляет вектор темы.

4. Поиск ближайших векторов слов к вектору темы

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

Код Python

Теперь мы предоставим несколько примеров кода Python для обучения моделей Word2Vec, Doc2Vec и Top2Vec.

Word2Vec

Мы будем использовать библиотеку gensim для обучения модели Word2Vec. В следующем коде показан пример обучения модели Word2Vec с использованием архитектуры CBOW.

from gensim.models import Word2Vec

sentences = [["this", "is", "sentence", "one"], 
["this", "is", "sentence", "two"], 
["this", "is", "sentence", "three"]]
model = Word2Vec(sentences, min_count=1, size=100, workers=4, sg=0)
print(model.wv['sentence'])

В этом примере кода мы определили список из трех предложений. Затем мы создаем модель Word2Vec с помощью метода Word2Vec() библиотеки gensim. Мы передаем предложения в качестве входных данных для метода вместе с некоторыми гиперпараметрами, такими как min_count, size, workers и sg. min_count представляет собой минимальную частоту слова, которое должно быть включено в словарь. size представляет размерность векторов слов. workers представляют количество потоков, используемых для обучения. sg представляет используемую архитектуру, где sg=0 означает использование архитектуры CBOW.

Doc2Vec

Мы также будем использовать библиотеку gensim для обучения модели Doc2Vec. В следующем коде показан пример обучения модели Doc2Vec с использованием архитектуры DBOW.

from gensim.models.doc2vec import Doc2Vec, TaggedDocument

documents = [TaggedDocument(doc, [i]) for i, doc in enumerate(sentences)]
model = Doc2Vec(documents, min_count=1, size=100, workers=4, dm=0)
print(model.docvecs[0])

В этом примере кода мы определили список из трех предложений. Затем мы создаем список из TaggedDocument объектов с каждым предложением и уникальным тегом. Мы создаем модель Doc2Vec с помощью метода Doc2Vec() библиотеки gensim. Мы передаем список TaggedDocument объектов в качестве входных данных для метода вместе с некоторыми гиперпараметрами. dm представляет используемую архитектуру, тогда как dm=0 означает использование архитектуры DBOW.

Top2Vec

Мы будем использовать библиотеку top2vec для обучения модели Top2Vec. В следующем коде показан пример обучения модели Topic2Vec.

from top2vec import Top2Vec
from sklearn.datasets import fetch_20newsgroups

newsgroups = fetch_20newsgroups(subset='all', remove=('headers', 'footers', 'quotes'))
model = Top2Vec(documents=newsgroups.data, speed="learn", workers=8)

model.get_num_topics()

Top2Vec инициализируется с параметром документов, установленным на данные групп новостей, которые содержат предварительно обработанные текстовые документы из набора данных 20 групп новостей. Параметр скорости установлен на «обучение», чтобы гарантировать, что модель изучает оптимальные гиперпараметры для данного набора данных. Параметр рабочего установлен на 8, чтобы распараллелить вычисления и ускорить процесс обучения.

Наконец, вызывается функция model.get_num_topics() для получения количества тем, идентифицированных моделью Top2Vec.

Заключение

В этом сообщении блога мы представили модели Word2Vec, Doc2Vec и Top2Vec для обработки естественного языка. Мы объяснили архитектуру каждой модели, а также то, как их создавать и обучать с помощью библиотеки gensim в Python.

Word2Vec — это популярная модель для изучения распределенных представлений слов, которые фиксируют их семантическое и синтаксическое значение. Doc2Vec расширяет модель Word2Vec для изучения представлений на уровне документа. Top2Vec — это модель изучения распределенных представлений тем в корпусе документов.

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

Ссылки

  1. https://en.wikipedia.org/wiki/Word2vec
  2. https://arxiv.org/pdf/1301.3781.pdf
  3. https://arxiv.org/pdf/1405.4053v2.pdf
  4. https://radimrehurek.com/gensim/models/doc2vec.html
  5. https://github.com/ddangelov/Top2Vec
  6. https://www.baeldung.com/cs/nlps-word2vec-negative-sampling

Дополнительная литература: чтобы узнать о моделировании темы с помощью Transformers, прочитайте —



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

Удачи на этой неделе,
Пратюш