BigARTM . Что в мире творится?
Готовых наборов данных русских текстов для тематического моделирования на просторах Интернета практически нет, поэтому возможности библиотеки BigArtm будут продемонстрированы на комментариях пользователей к одному из постов официального сообщества «Круглосуточные новости Екатеринбурга E1.RU» в «ВКонтакте».
Задача – проанализировать, о чем пишут люди, иначе говоря, какие темы их интересуют.
Выгружать комментарии будем с помощью API «ВКонтакте» на Python. Импортируем необходимые библиотеки.
Авторизуемся в социальной сети с помощью логина и пароля. Далее, парсим комментарии с последнего поста новостного сообщества и записываем в DataFrame с помощью vk.wall.getComments() (более подробно с параметрами функции можно ознакомиться в документации ). На момент выгрузки к последнему посту о проблемах жителей Екатеринбурга, связанных с введением QR-кодов, всего пользователи оставили 43 комментария. Все они попали в выгрузку.
Переходим к разделению комментариев пользователей по тематикам. Для этого импортируем необходимые библиотеки.
Затем производим предварительную обработку комментариев. Удаляем символы, смайлы, стоп-слова (например, местоимения, междометия). А также применяем лемматизацию – метод приведения слова к нормальной (начальной) форме и удаляем пустые строки.
Осталось 36 комментариев. Однако, такой обработки недостаточно для модели BigARTM. Исходные данные должны быть представлены в специальном формате «vowpal wabbit». Это, так называемый, «мешок слов», где каждая новая строка содержит слова, употребляемые в рамках документа. Эта информация записывается после тега |text.
Наконец, разделяем набор данных на специальные части («Batch»). В нашем случае Batch будет единственным).
Далее создаем словарь со всеми словами из всех текстов, который необходим для дальнейшей кластеризации.
Опционально в словаре можно отфильтровать часто встречающиеся (слова, которые не несут смысловой нагрузки, например, «идти», «вы») или редко встречающиеся слова (опечатки, словоформы) специальной функцией:
где min_tf — минимальное количество употребления слова во всех документах, max_tf – максимальное.
Выполняем тематическое моделирование (в общем случае, без регуляризаторов). Здесь проявляются некоторые недостатки модели – необходимость вручную подбирать количество тем, количество проходов по набору документов, а также плохо интерпретируемые числовые метрики, такие как перплексия (количественная метрика оценки качества работы модели BigArtm, отражает степень сходимости модели).
Наиболее интерпретируемая метрика оценки модели – топ (в нашем случае, 5) слов по каждой тематике. Иначе говоря, ключевые слова.
Среди комментариев есть те, которые нельзя отнести к какой-либо тематике. Такие тексты скидываются в какую-либо из тем, поэтому довольно часто не все темы можно однозначно определить.
Так, из полученных 10 тематик можно выделить: проблемы, связанные с медотводом от вакцинации, пропускным режимом в автобусах, торговых центрах, с работой ресторанов и доставки, а также отдельная тема об отсутствии каких-либо проблем у горожан.
BigARTM также проставляет вероятности отнесения текста к той или иной тематике. Это означает, что один текст может быть отнесен к нескольким темам, что повышает точность и интерпретируемость результатов алгоритма. Вероятности можно посмотреть, используя следующую функцию:
Таким образом, комментарии пользователей были разделены на 10 тем с помощью библиотеки BigARTM. Для увеличения точности моделирования возможно использование регуляризаторов, дополнительных проходов по коллекции документов, а также более точной настройки параметров и фильтрации словаря.
Написали бы, как установить artm.
Особенно интересно, как установить в anaconda.
Pavel, Добрый день!
Процесс установки BigARTM, в том числе в Anaconda, описан в документации к библиотеке:
http://bigartm.readthedocs.io/en/stable/installation/index.html
Последний релиз датирован 2019-м годом, - проект заброшен?
Да, видимо сейчас никто не занимается проектом т.к. не обновляется ни документация, ни GitHub проекта.