Представление текстовых данных в векторном пространстве

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

Для примера возьмем запросы пользователей из Яндекса,

<i>Текстовые данные - запросы</i>
Текстовые данные - запросы

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

Метод TF-IDF

TF-IDF – это «частотность терминов-обратная частотность документов». В этом методе получаем математическую матрицу, описывающую частоту встречающихся терминов. В матрице столбцы соответствуют запросам, а строки терминам.

Показатель TF рассчитывается, как отношение количества вхождений слова из запроса к количеству все слов в запросе по формуле:

<i>Формула TF</i>
Формула TF

где n_k – число вхождений слова t в запрос.

Показатель IDF равен логарифму отношения количества запросов к количеству запросов, в которых встречается заданное слово и вычисляется по формуле:

<i>Формула IDF</i>
Формула IDF

где в числителе – число запросов, а в знаменателе – число запросов, в которых встречается слово t.

Общий же показатель TF-IDF является произведением формул:

<i>Формула TF-IDF</i>
Формула TF-IDF

Рассчитаем множители TF и IDF для каждого составляющего запросов. Результат представлен в таблице:

<i>Значение TF и IDF</i>
Значение TF и IDF

Получим значения TF-IDF:

<i>TF-IDF для слов из запросов</i>
TF-IDF для слов из запросов

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

Прямое кодирование

В данном методе составляется словарь и каждое слово представляется в виде вектора, где одна координата равна 1, а остальные нулям:

<i>Прямое кодирование слов из словаря</i>
Прямое кодирование слов из словаря

А запрос «купить люстру» примет вид — ((100), (010), (000)) .
Такое векторное представление слов имеет очень большую размерность и неэффективно расходует память.

Метод BAG OF WORDS

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

Первым шагом требуется составить словарь. Если взять в качестве словаря все слова русского языка, то размер будет настолько велик, что для обработки потребуется огромное количество ресурсов, явно превышающего возможности обычного компьютера. Да и запросы, которые необходимо представить в виде вектора содержат в среднем по три слова, а значит, что вектор будет содержать огромное количество нулей и только несколько единиц. Напрашивается вывод, что словарь должен состоять из слов, встречающихся в запросах, список которых в свою очередь должен быть достаточно велик. Но в общем списке будут встречаться символы, числа, которые не несут смысловой нагрузки поэтому они не должны попасть в словарь. Также стоит объединить одни и те же слова с разными окончаниями, сделать это можно применив к входным данным алгоритм стемминга. Суть этого метода заключается в определении основ словоформ. Этот алгоритм позволяет отсечь суффиксы и окончания, учитывая специфику языка.
Словарь для рассматриваемых запросов будет иметь вид:

Словарь = (купит, люстр, светодиод, светильник, настольн, ламп, бра, москв, потолочн)

Тогда вектора запросов будут иметь вид,

<i>Представление запросов методом bag of words</i>
Представление запросов методом bag of words

Метод Word2Vec

Word2Vec – это технология Google для анализа семантики естественных языков, которая обрабатывает массивы текстовой информации. Технология включает в себя набор алгоритмов для расчета векторных представлений слов. В начале также создается словарь, а затем слова на основе семантической близости представляет в векторном виде. Слова, встречающиеся в тексте рядом, имеют наибольшее сходство. Таким образом, слова-векторы — это численные представления слов, сохраняющие семантическую связь между ними. Технология работает на базе искусственных нейронных сетей.
На вход Word2Vec поступает текст и некоторые параметры.
Алгоритм для каждого слова ставит в соответствие вектор, отсюда вытекает, что близкие по смыслу слова будут иметь схожие векторы. Мера близости для слов в данном случае – это контекстная близость, то есть близкие слова встречаются в тексте рядом с одинаковыми словами. Расстояние между векторами изменяется при помощи косинусного сходства, по следующей формуле:

Формула Word2Vec
Формула Word2Vec

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

33
Начать дискуссию