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

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

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

Быстрое кодирование

Самая простая форма встраивания слов - это горячее кодирование, которое обычно называется кодированием 1 из N. Количество пространства эквивалентно количеству измерения. Каждое вложение слов представляет собой набор из 0 с 1 в соответствующем измерении.

    +-----------+---------------+
    |   word    |    vector     |
    +-----------+---------------+
    | Stark     |   [1,0,0,0]   |
    | Lannister |   [0,1,0,0]   |
    | Targaryen |   [0,0,1,0]   |
    | Greyjoy   |   [0,0,0,1]   |
    +-----------+---------------+

Каждое целочисленное значение представлено как двоичный вектор, который представляет собой все нулевые значения, кроме индекса целого числа, который помечен 1.

Для оценки мы можем сказать, что горячее кодирование - это самый простой метод для реализации, результат является двоичным, а не порядковым, и что все находится в ортогональном векторном пространстве. Но есть недостатки, которые следует учитывать при однократном кодировании. Количество измерений будет линейно увеличиваться (высокая мощность). Кроме того, нет семантики между словами, это означает, что все слова находятся на одинаковом n-мерном расстоянии. Чтобы преодолеть проклятие размерности, мы можем применить выбор и извлечение элементов для уменьшения размеров.

Мешок слов

Bag of Words (BoW) - это простая модель, используемая для интеллектуального анализа текста и поиска информации. Представьте предложение или документ как мешок со словами. Он берет только слова с их частотой встречаемости в предложении без учета семантических отношений между словами.

Итак, документ «A лучше, чем B» идентичен документу «B лучше, чем A». Тем не менее, кажется интуитивно понятным, что два документа с одинаковым набором словесных представлений похожи по содержанию. Следующий шаг для сопоставления каждого слова с числовой оценкой - Term Frequency (TF).

N-грамм

Поскольку мы знаем, что модель Bag of Words является беспорядочным представлением, в качестве альтернативы модель N-Gram может использоваться для хранения пространственной информации в документе. Поскольку N представляет блок синтаксического анализатора:

Corpus : You know nothing John Snow
Unigram : 
{“you”, “know”, “nothing”, “John”, “Snow”}
Bigram  : 
{“you know”, “know nothing”, “nothing John”, “John Snow”}
Trigram : 
{“you know nothing”,”know nothing John”,”nothing John Snow”}
4-grams : 
{“you know nothing John”,”know nothing John Snow”}

TF-IDF

Другой популярный пример векторизации в обработке текста - TF-IDF (Term Frequency - Inverse Document Frequency). Основная цель TF-IDF - дать числовой вес / оценку каждому термину / слову и учесть важность каждого слова.

Основа TF-IDF происходит от TF (Term Frequency). Идея состоит в том, что когда в документе слово упоминается чаще, это слово должно получить более высокий балл.

Но проблема в том, что частые слова не являются важными (в большинстве случаев - это зависит от случая). Такие слова, как: the, and, or, to, from, a, an, in, at, on (стоп-слова), повлияют на результат релевантности. Некоторые подходы к устранению ограничения:

Удаление шума; Подход к очистке данных путем удаления стоп-слов (неважных слов) в заранее определенном стоп-листе в первую очередь перед процессом взвешивания.

Уменьшите или уменьшите веса терминов для часто встречающихся терминов на коэффициент, который растет вместе с частотой сбора - Частота документов (DF): количество документов в коллекции, которые содержат этот термин.

Частота обратного документа (IDF); Определите логарифмически масштабированный вес (нелинейный вес) DF. IDF редкого термина является высоким, тогда как IDF частого термина, вероятно, будет низким.

Перчатка

После Томаса Миколова и др. выпустил word2vec, был бум статей о векторных представлениях слов. Одна из лучших из этих статей - GloVe: глобальные векторы для представления слов Стэнфордского университета, в которой объясняется, почему такие алгоритмы работают, и переформулирована оптимизация word2vec как особый вид факторизации матриц совпадения слов.

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

GloVe создает непрерывное N-мерное представление слова, которое изучается из окружающих контекстных слов в обучающем корпусе.

Алгоритм GloVe состоит из следующих шагов: Сбор статистики совпадения слов в виде матрицы совпадения слов X. Каждый элемент X ij такой матрицы представляет, как часто слово i появляется в контексте слова j. Обычно мы просматриваем наш корпус следующим образом: для каждого термина мы ищем контекстные термины в некоторой области, определяемой window_size перед термином и window_size после термина. Также мы придаем меньший вес более отдаленным словам, обычно используя эту формулу:

Определите мягкие ограничения для каждой пары слов:

wi - вектор для основного слова, wj - вектор для контекстного слова, bi, bj - скалярные смещения для основного и контекстного слов.

Определите функцию стоимости

f - это функция взвешивания, которая помогает нам предотвратить обучение только по очень распространенным парам слов. Авторы GloVe выбирают следующую функцию:

Ближайшие соседи

Основной подход GloVe - Ближайшие соседи, который использует измерение расстояния для получения семантической связи между вектором слов.

Семантические вопросы обычно представляют собой аналогии с людьми или местами, например, Афины для Греции, как Берлин?. Синтаксические вопросы обычно представляют собой аналогии с временами глаголов или формами прилагательных, например, танец - это танец, как летать?. Чтобы правильно ответить на вопрос, модель должна однозначно идентифицировать отсутствующий термин, и только точное соответствие будет считаться правильным. Мы отвечаем на вопрос: А относится к б, как с? найдя слово d, представление которого wd наиболее близко к wb - wa + wc согласно косинусному сходству

Существует два популярных подхода для получения векторного расстояния: эвклидово расстояние и косинусное сходство.

Евклидово расстояние

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

А из-за квадрата он чувствителен к шуму.

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

Косинусное сходство

Косинусное подобие - это мера сходства между двумя ненулевыми векторами внутреннего пространства продукта, которая измеряет косинус угла между ними. Косинус 0 ° равен 1, и он меньше 1 для любого другого угла в интервале [0,0.5π).

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

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

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

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

Word2Vec

Word2vec был создан группой исследователей под руководством Томаша Миколова.

Word2vec - это не отдельный алгоритм, а комбинация двух различных моделей: CBoW (непрерывный пакет слов) и Skip-gram. Обе они представляют собой неглубокие нейронные сети (поэтому это не считается глубоким обучением), которые сопоставляют слово целевой переменной, которая также является словом. Обе эти техники изучают веса, которые действуют как векторные представления слов.

Непрерывный набор слов (CBoW)

Предположим, что текущее слово в предложении - wi. Входными данными для модели могут быть [wi − 2, wi − 1, wi + 1, wi + 2] предшествующие и следующие слова текущего слова, в котором мы находимся. Результатом нейронной сети будет wi.

Скип-грамм

Входными данными для модели являются wi,, а на выходе - [wi − 1, wi − 2, wi + 1, wi + 2]. Идея skip-gram заключается в том, чтобы уловить слово и предсказать контекстные слова. Итак, мы можем сказать, что CBoW предсказывает цель из контекста, а Skip-gram предсказывает контекстные слова из цели.

Например, предложение «привет, освин, как прошел день?» преобразуется в:
CBoW: 3 грамма {«привет, освин, как», «Oswin, как было», «как было»,…}
Пропустить грамм: 1 - пропустить 3 грамма {«привет, освин, как», « привет, Освин был »,« Освин, как было »,« Освин, как твой »,…}

По словам Миколова:

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

В своей статье Миколов рекомендует использовать модель скип-грамм с отрицательной выборкой (SGNS), так как она превосходила другие варианты по задачам аналогии.