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

А) Введение

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

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

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

B) Горячее кодирование

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

Представление горячего кодирования каждого документа выполняется следующим образом:

  • Шаг 1. Создайте набор всех слов в корпусе.

  • Шаг 2. Определите наличие или отсутствие заданного слова в конкретном отзыве. Присутствие обозначается 1, а отсутствие — 0. Затем каждый отзыв будет представлен как кортеж из 0, 1 элементов.

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

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

C) Подсчет векторов

Этот алгоритм очень похож на горячее кодирование, но его преимущество заключается в определении частоты/количества слов в документах, в которых они появляются. Мы можем применить векторы счета к нашему предыдущему корпусу, выполнив следующие шаги:

Шаг 1. Преобразуйте каждый документ в последовательность слов, содержащую этот документ.

  • Шаг 2. По набору всех слов в корпусе подсчитайте, как часто это слово встречается в документе.

Из предыдущей таблицы мы можем заметить, что:

  • Слово отлично встречается дважды в последовательности слов для первого отзыва, поэтому его значение представлено цифрой 2. То же самое для других слов: 1 для ресторана, 1 для обслуживания, 0 для лучшего и т. д.
  • Слово «лучше» также появляется дважды в последовательности слов для второго отзыва, затем его значение представлено цифрой 2 и т. д.
  • Тот же анализ относится к третьему обзору.

Как вы можете заметить, недостатки счетных векторов аналогичны горячему кодированию с точки зрения:

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

Г) Тф-Идф

Этот алгоритм является усовершенствованием векторов счета и широко используется в поисковых технологиях. Tf-Idf означает Tterm frequency-Inverse document f регулярность. Он стремится захватить:

  • Как часто слово/термин Wi появляется в документе dj . Это выражение может быть математически представлено как Tf(Wi, dj)
  • Насколько часто одно и то же слово/термин встречается во всем корпусе D. Это выражение может быть математически представлено как df(Wi, D).
  • Idf измеряет, насколько редко встречается слово Wi в корпусе Д.

С помощью этой дополнительной информации мы можем вычислить Tf-Idf, используя произведение tfиidfзначения, используя следующую формулу:

Каждый документ dj будет представлен Tf-Idfоценкой каждого слова в этом документе следующим образом:

Tf придает большее значение (вес) словам, чаще встречающимся в одном документе. С другой стороны, Idf попытается снизить вес слов, которые встречаются несколько раз во всем корпусе, для этого мы можем думать о таких словах, как «the», «это», «а», «ан» и т. д. Затем их объединение (Tf-Idf) помогает зафиксировать редкие слова, которые нечасто встречаются в документ.

Г.1) Преимущества

  • Фиксирует релевантность и частотность слова в документе.

Г.2) Недостаток

  • Каждое слово по-прежнему фиксируется отдельно, поэтому контекст, в котором оно встречается, не фиксируется.

E) Векторы совместной встречаемости

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

E.1) Контекстное окно

Для данного интересующего слова мы идентифицируем его соседние слова на основе размера окна. Эти соседние слова можно рассматривать как:

  • слова слева от интересующего слова
  • слова справа от интересующего слова
  • слова вокруг интересующего слова

E.2) Матрица совпадений

Прежде чем говорить о матрице совпадения, давайте посмотрим, что такое совпадение двух слов. Совместное появление двух слов W1иW2соответствует количеству раз, когда эти два слова встречались вместе в контекстное окно.
Затем мы можем построить матрицу совпадений, которая представляет собой матрицу NxN, Nявляется общим количеством словарного запаса во всем корпусе. Таким образом, каждый документ будет иметь размер NxN.

E.3) Пошаговый процесс построения матрицы/векторов совместной встречаемости

В образовательных целях мы собираемся применить контекстное окно размером 2с скользящим размером 1, и мы будет рассматривать только один документ, указанный ниже.

document = «В Африке много неиспользованного потенциала».
В нашем случае N=7,но в реальной жизни мы можем получить огромный словарный запас.

  • Создайте матрицу размера NxN с набором словарного запаса в строке и столбце.
  • Инициализируйте матрицу нулями.
  • Слева направо определите интересующее слово и соседние с ним слова.
  • Подсчитайте, сколько раз соседнее слово встречается с интересующим словом.
  • Увеличьте ячейку, соответствующую интересующему слову, и каждому из соседних слов с соответствующим количеством вхождений.

Е.4) Преимущества

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

Д.5) Недостаток

  • Получаем огромный размер матрицы, что естественно требует много памяти.

Е) Word2Vec

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

Большое предположение в отношении word2vec заключается в том, чтозначение слова может быть определено по тому, что оно использует,что может быть похоже на следующее, что вы можете услышать хотя бы один раз: «скажи мне, кто твои друзья, и я скажу, кто ты». Word2vec поставляется с двумя архитектурами нейронных сетей: CBOW и Skip-gram (мы не будем подробно рассматривать их в этой статье).

  • CBOW принимает в качестве входных данных соседние слова и предсказывает интересующее слово.

  • Skip-gram, с другой стороны, выполняет противоположную задачу. Он принимает в качестве входных данных интересующее слово и предсказывает соседние с ним слова.

Да, я понял общее представление о Word2Vec, но как семантическая связь фиксируется из векторов?

После того, как модель word2vec была обучена на заданном большом массиве данных, становится возможным получить числовое представление входного слова. На следующем изображении показано, как фиксируется значение и семантическое представление:

  • Абиджан, Бамакои Дакар являются важными городами в Кот-д’Ивуаре, МалииСенегале соответственно.
  • Имея достаточно большой обучающий текстовый корпус, модель смогла бы определить основное семантическое значение городов, назначив числовые представления Абиджану, Бамако и Дакару, которые очень схожи по значению друг с другом, как мы видим в выходных данных.

F.1) Преимущества

  • Word2vec фиксирует значение слов.
  • Он фиксирует взаимосвязь между словами («Абиджан» ~ «Кот-д'Ивуар» == «Бамако» ~ «Мали»), а это означает, что вычитание между векторными представлениями «Абиджан» и «Кот-д'Ивуар» очень близко. к результату вычитания векторных представлений «Бамако» и «Мали»
  • Он собирает очень интересную информацию из больших обучающих данных с очень низкой размерностью.

Г) Конец статьи

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

Для дальнейшего чтения не стесняйтесь обращаться к следующим ссылкам:

https://iksinc.online/2015/06/23/how-to-use-words-co-occurrence-statistics-to-map-words-to-vectors/

https://arxiv.org/abs/1301.3781

Пока пока 🏃🏾