На этом этапе мы изучаем более продвинутые методы преобразования наших текстовых данных в числовые векторы, что делает их пригодными для алгоритмов. Эти методы в основном относятся к категории распределенных представлений.
Распределенные представления
Распределенные представления являются противоположностью локальных представлений. Это плотные векторы, которые обычно намного меньше размера словаря и разработаны таким образом, чтобы улавливать сходство между связанными словами. Word2vec и GloVe — это распределенные представления словаря большого размера.
1.Word2Vec:Word2Vec — это популярный метод внедрения слов, который изучает распределенные представления слов в непрерывном векторном пространстве. Это не только сохраняет связь между словами. но занимается добавлением новых слов в словарный запас. Он показывает лучшие результаты во многих приложениях глубокого обучения.
Очень популярный пример word2vec: V(word) представляет векторное представление слова.
Word2Vec имеет две основные архитектуры. Непрерывный мешок слов (CBoW) и Skip Gram. Эти архитектуры используются для создания вложений слов путем обучения нейронных сетей на больших текстовых корпусах. Вот обзор CBoW и Skip Gram:
Непрерывный набор слов (CBoW):В архитектуре CBoW цель модели — предсказать целевое слово на основе слов контекста (слов, которые окружают его в указанном окне) ) в предложении. Он пытается узнать распределение вероятностей целевого слова с учетом его контекста.
- Обучающие данные состоят из пар целевых слов и их слов контекста.
- Контекстные слова используются в качестве входных данных для нейронной сети.
- Скрытый уровень сети учится предсказывать целевое слово.
- Веса нейронов скрытого слоя представляют собой встраивания слов.
Advantages
: CBoW обучается быстрее, чем Skip Gram, поскольку он предсказывает одно целевое слово из нескольких контекстных слов. Кроме того, он хорошо работает с часто встречающимися словами.
Предположим, у нас есть предложение «Надежда может освободить вас» с размером окна 3. Сначала у нас есть каждая пара из 3 соседних слов. Первой парой будет «Надежда может установить.». Здесь мы будем использовать векторы надежды One Hot Encoded, передадим их в скрытый слой размером, равным размеру окна, и попытаемся предсказать центральное слово. 'может.'
Пропустить Gram: В архитектуре Skip Gram целью модели является противоположность CBoW. Его цель — предсказать контекстные слова (окружающие слова) на основе целевого слова.
- Обучающие данные состоят из пар целевого слова и его контекстных слов.
- Целевое слово используется в качестве входных данных для нейронной сети.
- Сеть учится предсказывать контекстные слова.
- Веса нейронов скрытого слоя представляют собой встраивания слов.
Advantages:
Skip Gram более эффективен для редких слов и для выявления редких или тонких семантических связей. Кроме того, он имеет тенденцию обеспечивать лучшее встраивание для широкого спектра слов.
В приведенном выше примере. Опять же, сначала у нас есть каждая пара из трех соседних слов. Первой парой будет «Надежда может установить». Здесь мы будем использовать вектор One Hot Encoded «Can» и передать его в скрытый слой размером, равным размер окна и попытайтесь предсказать другие слова в наборе: «Надежда» и «набор.».
В реальных сценариях мы обычно обучаем его тексту Википедии, используя размер окна 5–10 и размер вектора около 300.
Итак, какой CBoW или Skip Gram лучше?
Между CBoW и Skip Gram нет однозначного «лучшего». Выберите Skip Gram для небольших наборов данных и редких слов и CBoW для больших наборов данных с акцентом на часто встречающиеся слова. CBoW также тренируется быстрее. Это зависит от ваших конкретных данных и целей
2. Глобальные векторы (GloVe): Word2Vec использует только близлежащие слова для создания встраивания слов, что может ограничивать контекст. Чтобы устранить это ограничение, в игру вступает GloVe. Это метод векторного представления на уровне слов, который использует весь корпус для создания вложений для слов.
GloVe начинается с построения матрицы совпадения слов. Эта матрица показывает, как часто слова встречаются в данном контексте внутри корпуса. Контекст можно определить на основе близости слов в определенном окне предложения или документа.
Матрица совпадения слов по существу представляет собой двумерный массив, в котором записана частота каждой потенциальной пары слов в корпусе. Думайте об этом как о матрице корреляции, где вместо значений корреляции мы имеем количество слов, которые n появляются вместе в определенном контекстном окне.
Каждая строка и столбец матрицы соответствуют уникальному слову в словаре, а записи в матрице отражают частоту совместного появления слов. Основная идея GloVe заключается в том, что соотношение вероятностей совместного появления двух слов должно кодировать семантическую информацию. Слова, имеющие сильную семантическую связь, должны иметь высокое соотношение, тогда как несвязанные слова должны иметь низкое соотношение.
GloVe определяет целевую функцию, целью которой является изучение векторов слов, и использует алгоритм оптимизации, обычно стохастический градиентный спуск (SGD), чтобы минимизировать функцию потерь.
Мы уже обучили модели по тексту Википедии, который вы можете найти здесь.
Вот пример, иллюстрирующий эту концепцию:
Блокнот можно найти по этой ссылке.
3. fastText: FastText – это бесплатная и легкая библиотека с открытым исходным кодом, разработанная исследовательской лабораторией искусственного интеллекта Facebook для представления и классификации текста. FastText можно рассматривать как расширение модели word2vec с пропуском грамм с некоторыми небольшими изменениями. Вместо того, чтобы рассматривать слова как неделимые единицы, FastText разбивает слова на более мелкие компоненты, разделяя их на n-граммы символов. Специальные символы добавляются в начале и конце каждого слова. Например, такое слово, как «пример», преобразуется в «<example>
», а затем разбивается на n-граммы символов, например ‘<e’, ‘ex’, ’am’, ‘mp’, ‘pl’, ‘le, ‘e>’
, и так далее.
Сосредоточение внимания на n-граммах на уровне символов позволяет модели эффективно фиксировать вложения подслов. Следовательно, FastText может лучше понимать варианты одного и того же слова, такие как 'ездит', 'вождение', 'ехал' и т. д. Кроме того, он предлагает потенциальные решения для FastText. em>обработка слов, не входящих в словарный запас (OOV), путем встраивания подслов, даже если целое слово не может быть в данных обучения.
FastText использует иерархический softmax, чтобы ускорить обучение и сделать его более эффективным, особенно для больших словарей. Помимо встраивания слов, fastText включает модуль классификации текста. Его можно использовать для различных задач НЛП, включая анализ настроений, классификацию тем иобнаружение спама.
Мы уже обучили модели по тексту Википедии, который вы можете найти здесь.
Он принимает ввод текста, обычно представленный с использованием предварительно обученных вложений слов, и использует среднее объединение для создания вектора фиксированной длины, представляющего весь текст. Затем этот вектор передается через один или несколько скрытых слоев с нелинейными активациями, за которым следует выходной слой, использующий softmax для прогнозирования вероятностей классов. Модель обучена минимизировать потери перекрестной энтропии за счет обратного распространения ошибки, что делает ее хорошо подходящей для задач классификации нескольких классов.
Ограничения встраивания слов
Потеря синтаксического и семантического понимания
Традиционные встраивания слов не учитывают порядок слов в предложении, что приводит к потере синтаксического и семантического понимания.
- Например: «
The cat chased the dog.
» и «The dog chased the cat.
» будут иметь схожее представление, даже если они имеют противоположные значения.
Контекстуальная двусмысленность
Встраивание слов борется с контекстуальной двусмысленностью, когда значение слова меняется в зависимости от контекста.
- Например: «
He took a shot at the target.
» (относится к выстрелу из винтовки) и «She took a shot of espresso.
» (относится к напитку). Слово «выстрел» в этих контекстах имеет разные значения.
Полисемия и омонимия
Полисемия (несколько значений одного и того же слова) и омонимия (разные слова с одинаковым написанием) могут сбить с толку встраивание слов:
- «
The bank is by the river.
» (относится к финансовому учреждению) и «I sat on the river bank.
» (относится к берегу реки). Слово «банк» имеет в этих предложениях разные значения.
Невозможность уловить порядок слов
Встраивание слов не отражает влияние порядка слов на значение:
- «
I saw her with a telescope.
» (я видел ее в телескоп) и «I saw her with a microscope.
» (я видел ее в микроскоп). Позиция «с» меняет значение, но встраивание слов может не отражать это должным образом.
Представления фиксированной длины
Встраивание слов обеспечивает представление слов фиксированной длины, что затрудняет эффективную обработку предложений или документов различной длины. Это может привести к потере информации.
Встраивание предложений похоже на встраивание слов, но вместо слов они кодируют все предложение в векторное представление. Полученное векторное представление сохраняет хорошие свойства, унаследовав эти функции от базового встраивания слов.
Простой способ получить встраивание предложения — усреднить вложения всех слов, присутствующих в предложении. Но они недостаточно точны.
Были разработаны более продвинутые методы, такие как контекстное внедрение (например, BERT, ELMo, InferSent). Эти модели учитывают окружающие слова и порядок их появления, что позволяет лучше уловить семантику на уровне предложения. Мы рассмотрим их в следующих шагах.
Продолжайте учиться до тех пор!