Понимание того, почему мы используем тематическое моделирование, с простой реализацией

Сегодня слишком много данных, а в будущем их будет в тысячу раз. - Бен Хоффман

Почему тематическое моделирование

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

Что такое высокая размерность?

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

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

Почему проблема с экстраполяцией?

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

Проклятие размерности

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

Большая размерность текстовых данных

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

например, текста: «Привет, добро пожаловать в эту статью среднего размера»

Итак, общий способ - выяснить набор слов в предложениях, то есть список отдельных слов и их частотность для данного документа.

Итак, мешок слов здесь можно рассматривать как:

эй: 1

там: 1

добро пожаловать: 1

to:1

это: 1

средний: 1

Статья 1

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

Теперь данный текст будет частью более крупного корпуса (группы предложений / абзацев), который может перейти в другую супергруппу и так далее, что приведет к проблеме высокой размерности.

На очереди, тематическое моделирование !!

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

Мы в основном хотим сократить количество функций нашего корпуса с примерно 100 тыс. До примерно 10–20 тем или меньше.

Реализация

Давайте сначала сделаем несколько примеров документов и скомпилируем их.

Теперь мы можем предварительно обработать данные.

Мы удалим стоп-слова (такие как a, an, the), которые не имеют внутреннего значения.

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

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

Теперь мы можем создать и обучить нашу модель LDA (Latent Dirichlet Allocation), которая представляет собой генеративную статистическую модель, позволяющую группировать наши данные по темам.

Теперь распечатываем вывод

Результат:

Здесь корпус разделен на 3 основные темы. Каждая строка - это тема с индивидуальными терминами и весом.

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

Ссылка на Github: https://github.com/NeelGhoshal/Topic_modelling

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

LinkedIn

Инстаграм

Github