Представление текстовых данных в векторном пространстве
Одной из значимых задач в области компьютерных алгоритмов является задача извлечения смысла из текста на естественном языке и представление его в понятном для компьютера виде.
Для примера возьмем запросы пользователей из Яндекса,
Не все алгоритмы могут оперировать запросами в таком виде. Ставится задача обработки входных данных и определения способа, с помощью которого можно будет передать входные данные в понятном для компьютера виде.
Метод TF-IDF
TF-IDF – это «частотность терминов-обратная частотность документов». В этом методе получаем математическую матрицу, описывающую частоту встречающихся терминов. В матрице столбцы соответствуют запросам, а строки терминам.
Показатель TF рассчитывается, как отношение количества вхождений слова из запроса к количеству все слов в запросе по формуле:
где n_k – число вхождений слова t в запрос.
Показатель IDF равен логарифму отношения количества запросов к количеству запросов, в которых встречается заданное слово и вычисляется по формуле:
где в числителе – число запросов, а в знаменателе – число запросов, в которых встречается слово t.
Общий же показатель TF-IDF является произведением формул:
Рассчитаем множители TF и IDF для каждого составляющего запросов. Результат представлен в таблице:
Получим значения TF-IDF:
Ключевым моментом здесь является представление каждого запроса в одном векторном пространстве. В составленном векторе каждое слово будет представлено в виде значения, вычисленного по TF-IDF.
Прямое кодирование
В данном методе составляется словарь и каждое слово представляется в виде вектора, где одна координата равна 1, а остальные нулям:
А запрос «купить люстру» примет вид — ((100), (010), (000)) .
Такое векторное представление слов имеет очень большую размерность и неэффективно расходует память.
Метод BAG OF WORDS
Метод аналогичный прямому кодированию, но в виде вектора представляется весь запрос, а не каждое конкретное слово. В этой модели текст представляется в виде «мешка» слов без учета грамматики, контекста и порядка слов.
Первым шагом требуется составить словарь. Если взять в качестве словаря все слова русского языка, то размер будет настолько велик, что для обработки потребуется огромное количество ресурсов, явно превышающего возможности обычного компьютера. Да и запросы, которые необходимо представить в виде вектора содержат в среднем по три слова, а значит, что вектор будет содержать огромное количество нулей и только несколько единиц. Напрашивается вывод, что словарь должен состоять из слов, встречающихся в запросах, список которых в свою очередь должен быть достаточно велик. Но в общем списке будут встречаться символы, числа, которые не несут смысловой нагрузки поэтому они не должны попасть в словарь. Также стоит объединить одни и те же слова с разными окончаниями, сделать это можно применив к входным данным алгоритм стемминга. Суть этого метода заключается в определении основ словоформ. Этот алгоритм позволяет отсечь суффиксы и окончания, учитывая специфику языка.
Словарь для рассматриваемых запросов будет иметь вид:
Словарь = (купит, люстр, светодиод, светильник, настольн, ламп, бра, москв, потолочн)
Тогда вектора запросов будут иметь вид,
Метод Word2Vec
Word2Vec – это технология Google для анализа семантики естественных языков, которая обрабатывает массивы текстовой информации. Технология включает в себя набор алгоритмов для расчета векторных представлений слов. В начале также создается словарь, а затем слова на основе семантической близости представляет в векторном виде. Слова, встречающиеся в тексте рядом, имеют наибольшее сходство. Таким образом, слова-векторы — это численные представления слов, сохраняющие семантическую связь между ними. Технология работает на базе искусственных нейронных сетей.
На вход Word2Vec поступает текст и некоторые параметры.
Алгоритм для каждого слова ставит в соответствие вектор, отсюда вытекает, что близкие по смыслу слова будут иметь схожие векторы. Мера близости для слов в данном случае – это контекстная близость, то есть близкие слова встречаются в тексте рядом с одинаковыми словами. Расстояние между векторами изменяется при помощи косинусного сходства, по следующей формуле:
По итогу, Word2Vec максимизирует связь между векторами слов, которые встречаются в похожих контекстах и минимизирует связь для слов, которые не встречаются. На выходе получаем координаты векторов, соответствующих текстовых данных.
Помимо Word2Vec есть и другие более усовершенствованные методы, например, ELMO или BERT и все они также представляют собой нейронную сеть.