Тематическое моделирование в Google Colab
/Глава 13
  • Александра Бодрунос
    Автор
Тематическое моделирование занимает важное место среди методов автоматизированного анализа текстов, позволяя структурировать большие объемы данных и выявлять скрытые связи в собранной группе текстов. В этой главе рассмотрим четыре ключевых этапа тематического моделирования с помощью Google Colab: создание корпуса документов, предобработка данных, выбор модели и анализ результатов.

/01

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

Тематическое моделирование (topic modeling) — это метод, который позволяет автоматически выявлять темы и скрытые связи в собранной группе текстов.
Под темами в данном случае понимаются группы ключевых слов и словосочетаний (n-граммы). Задача исследователя — самостоятельно подобрать название для каждой такой группы. При этом тематическое моделирование в ряде случаев предполагает «мягкую кластеризацию» — одно и то же слово может быть отнесено к разным темам, но с разными показателями вероятностей.
Не только слова, но и тексты получают вероятностное распределение по темам. Поэтому начинающие исследователи особенно ценят этот метод, так как он позволяет ускорить командную работу: выделенные темы помогают равномерно распределить тексты между участниками исследовательского коллектива для их дополнительного анализа, а также задают направление для интерпретации и описания результатов.
Вот несколько примеров, для чего применяют тематическое моделирование:
  • Выявить тенденции, веяния в письмах, публикациях, патентах, заметках в социальных сетях и блогах;
  • Отобрать целевые сообщества и экспертов по темам их публикаций и постов;
  • Сгруппировать видеовыступления и аудиовыпуски по категориям для удобства поиска.

Спросите у нейросети

  • Исследователь
    пример промпта
    Продолжите данный перечень примеров, обратившись с вопросом к нейросети о возможных целях применения тематического моделирования в рамках своего исследовательского поля.
  • Perplexity
    фрагмент ответа
    1. Управление коммуникациями в кризис: мониторить возникающие кризисы в реальном времени из различных источников, подготавливать коммуникационные планы для потенциальных кризисов, выявленных через тематическое моделирование.
    2. Мониторинг СМИ: отслеживать, как различные СМИ сообщают о дипломатических событиях и как они их интерпретируют.
    3. Анализ заинтересованных сторон: определять ключевых участников и их позиции по конкретным дипломатическим вопросам.
    4. Анализ трендов: изучать тренды с течением времени, чтобы предсказать будущие дипломатические вызовы или возможности.
    5. Культурные аспекты: понимать культурные нарративы, которые влияют на дипломатические отношения между странами.

    Показать весь ответ
/02

Связь с текст-майнингом

Тематическое моделирование является частью более широкого семейства методов интеллектуального анализа неструктурированных текстов, известного как текст-майнинг (text-mining). Среди других методов данного семейства часто встречаются анализ тональности текстов и сетевой анализ.
Анализ тональности (сентимент-анализ, анализ настроений, анализ мнений; sentiment analysis, opinion mining) — метод для определения эмоциональной окраски текста. Этот метод, например, позволяет выявить отношение целевой аудитории к исследуемому феномену, сервису или продукту.
Сетевой анализ (network analysis) помогает построить модель сети, которая показывает ключевых участников и связи между ними в виде графа.
Название «текст-майнинг» отсылает к метафоре добычи полезных ископаемых — знаний. Он относится к такой сфере ИИ, как автоматическая обработка естественного языка (Natural Language Processing, NLP), обращается к подходам, принятым в рамках машинного обучения, чтобы автоматически извлекать значимую информацию из больших объемов текстовых данных.
Процесс текст-майнинга включает четыре ключевых этапа, которые применительно к тематическому моделированию можно обозначить акронимом ТЕМА.
Этапы текст-майнинга – ТЕМА:
Тексты образуют корпус документов, который используется для выявления тем
Единообразие — ключевое условие для текстов, поэтому важна предобработка данных
Модель выбирается исследователем с учетом специфики решаемой задачи
Анализ результатов включает визуализацию данных и их последующую интерпретацию
Схожесть шагов разных методов текст-майнинга облегчает возможность совмещения в одном исследовании нескольких подходов, а также не исключает ценность ознакомления с полными текстами (deep reading), если это позволяет размер выборки.

/03

Четыре этапа тематического моделирования

/ Этап 1: выборка

Составление выборки для последующего анализа

Корпус документов — набор текстов, образующий финальную выборку.
Корпус документов может включать материалы, полученные в результате парсинга из социальных сетей, ответы на открытые вопросы анкет, результаты транскрибации аудио- или видеоматериалов, а также отдельные документы: статьи или выгрузки чатов из социальных сетей, сохраненные в едином формате, например, .txt, и аккуратно размещенные в общей папке. Даже если все анализируемые посты собраны в один файл с расширением .csv или .xls, единицей анализа может стать каждый пост, размещенный в отдельной ячейке таблицы. Тексты можно не объединять, учитывать один файл с текстом как одну единицу анализа: k=1, или можно каждый текст разделить на отрывки, следуя задачам исследования.
Содержание выборки определяется целью исследования. Для вдохновения можно ознакомиться с примерами целей, указанными в опубликованных статьях в таблице ниже.

Цели

Примеры

Понимание общественного мнения в отношении исследуемого вопроса

1. Название: «Restoring reputation through digital diplomacy…» / «Восстановление репутации посредством цифровой дипломатии …

Цель: выявить, какие нарративы появлялись в разные периоды кризиса

Выборка: k=12 935 


2. Название: «Would violent tactics cost a democratic movement its international support…» / «Могут ли насильственные тактики стоить демократическому движению его международной поддержки? …»

Цель: выявить последствия насильственных тактик в поведении протестующих

Выборка: k=9 659 770


Выявление преобладающих тем в обсуждениях исследуемого вопроса



1. Название: «Analytical framework for evaluating digital diplomacy using network analysis and topic modeling: comparing South Korea and Japan» / «Аналитическая структура для оценки цифровой дипломатии с использованием сетевого анализа и тематического моделирования: сравнение Южной Кореи и Японии»

Цель: выявить отношение фанатов/туристов к Корее и

Выборка: публикации KOCIS (k=16 962) и JNTO (k=8 278) о выбранных странах

Источник: скорректированный результат запроса в Perplexity
Обратите внимание, что, когда мы проводим опрос и хотим описать выборку, для количества респондентов используем формат n=x. Здесь вместо респондентов тексты, поэтому формат немного другой: k=x. x в этих примерах — количество единиц для анализа.
Поставленная цель определяет, какие источники данных окажутся наиболее пригодными для выбранного контекста с учетом принципов 4Д.
Принципы 4Д
  • Доступность
    Доступ к данным разрешен и технически возможен в выбранном контексте; в отдельных случаях может потребоваться письменное согласие организаций, участников или разрешение этического комитета.
  • Достоверность
    Синтетические данные могут использоваться для обучения модели, но для анализа и интерпретации предпочтение отдается данным, созданным человеком. Особое внимание уделяется надежности источников.
  • Достаточность
    Исследователи пока не пришли к согласию относительно минимального набора наблюдений для тематического моделирования. При обосновании достаточности можно полагаться на репрезентативность мнений и ограничения в доступности наблюдений.
  • Диверсификация
    Для более глубокого анализа рекомендуется расширить круг наблюдений, чтобы охватить все грани выбранного феномена. Подразумевается включение текстов из разных источников, в разные периоды времени, от представителей с разными демографическими показателями.
Советы при создании корпуса документов:
Результат первого этапа — корпус текстов, собранных в один файл или папку с определенным расширением. Для составления кода на языке Python важно будет уточнить адрес расположения текстов и расширение файлов. Важно также, чтобы все тексты были составлены на одном языке, например, только на русском.
/ этап 2: предобработка

Предварительная обработка данных

Предварительная обработка данных предполагает решение следующих задач, можно обозначить акронимом ЛАСТиК.
Задачи предварительной обработки – ЛАСТиК:
Лемматизация и стемминг
Привести все слова к базовому формату или корням
Анализ на наличие шума
Очистить текст от знаков препинания, чисел, элементов разметки, случайного набора символов, иллюстраций и т. д.
Стоп-слова
Исключить слова, которые несут вспомогательную функцию, например союзы, предлоги, местоимения
Токенизация
Разделить тексты на маленькие порции — токены
Корректировка регистра
Привести все слова к нижнему регистру, даже, если это названия городов или имена.
Каждый из этих шагов предполагает ответы на ряд вопросов. Например, при очистке от шума исследователь может самостоятельно определить, какие элементы в собранных текстах следует считать шумом, и подключить соответствующую библиотеку. Список «стоп-слов» также сначала может быть загружен из библиотеки, а далее расширен самим исследователем, например, за счет добавления ключевых слов, которые использовались для формирования выборки, поскольку они будут встречаться в каждом анализируемом тексте.
Кроме того, необходимо решить, какие формы слов использовать в качестве основы для нормализации: леммы или стемы. Это решение будет зависеть от целей исследования и специфики анализируемых данных. Дополнительно можно создать n-граммы: комбинации слов (например, биграммы — двух слов, триграммы — трех), следуя частоте их встречаемости в заданной последовательности. Это удобно как в случае наличия устойчивых выражений — «цифровая дипломатия», так и в целом для лучшего понимания смысла.
После этого подготовленные тексты переводятся в цифровой формат. Возможны следующие варианты:
  • Мера частоты встречаемости слова
    BoW (bag of words, «мешок слов»): определяет, как часто определенные слова и фразы встречаются в текстах. Эти слова тщательно перемешиваются так, что теряется информация о том, из каких документов они происходят. Затем из этого мешка слова извлекаются и подсчитывается частота их встречаемости.
  • Мера важности слова
    TF-IDF (Term Frequency; Inverse Document Frequency): определяет слова, которые часто встречаются только в одном кластере текстов и редко встречаются в других текстах. Помогает выделить ключевые слова, которые имеют значимость в контексте конкретного набора документов.
  • Эмбеддинг
    Метод представления слов или фраз в виде векторов чисел, что позволяет учитывать семантические отношения между ними, опираясь на контекст и взаимосвязи между словами. Популярные модели эмбеддинга – Word2Vec и GloVe.
  • Мера частоты встречаемости слова
    BoW (bag of words, «мешок слов»): определяет, как часто определенные слова и фразы встречаются в текстах. Эти слова тщательно перемешиваются так, что теряется информация о том, из каких документов они происходят. Затем из этого мешка слова извлекаются и подсчитывается частота их встречаемости.
  • Мера важности слова
    TF-IDF (Term Frequency; Inverse Document Frequency): определяет слова, которые часто встречаются только в одном кластере текстов и редко встречаются в других текстах. Помогает выделить ключевые слова, которые имеют значимость в контексте конкретного набора документов.
  • Эмбеддинг
    Метод представления слов или фраз в виде векторов чисел, что позволяет учитывать семантические отношения между ними, опираясь на контекст и взаимосвязи между словами. Популярные модели эмбеддинга – Word2Vec и GloVe.
Это не взаимоисключающие варианты, они часто встречаются последовательно в одном исследовании. Первый этап является необходимым предварительным шагом, TF-IDF позволяет выделить ключевые термины, а эмбеддинг раскрыть семантическое понимание текстов.

Работа в Google Colab

Предварительная обработка данных проходит в выбранной интегрированной среде разработки (Integrated Development Environment, IDE). В качестве примера платформы, предоставляющей бесплатный групповой доступ, будет рассмотрен Google Colab.
Google Colab позволяет использовать язык Python непосредственно в браузере без необходимости установки специального программного обеспечения. Работа ведется в блокноте Jupyter Notebook, доступ к которому можно открыть для всей исследовательской команды, что обеспечивает совместную работу над проектами в реальном времени. Платформа предоставляет доступ к мощным вычислительным ресурсам и поддерживает широкий спектр библиотек Python, что значительно ускоряет выполнение задач текст-майнинга.
  • /важно

    В бесплатной версии Google Colab есть ограничение: данные не сохраняются, поэтому все результаты работы важно переносить на свое устройство или в облачное хранилище.
/важно
В бесплатной версии Google Colab есть ограничение: данные не сохраняются, поэтому все результаты работы важно переносить на свое устройство или в облачное хранилище.
Дополнительным преимуществом является интеграция с GitHub, позволяющая делиться и обмениваться блокнотами с международным сообществом, что повышает прозрачность и воспроизводимость исследований. Это также помогает подобрать уже готовые проверенные блокноты, адаптировав их для своих задач. В завершении главы приведены несколько популярных ресурсов на GitHub.
Ниже представлены альтернативные варианты платформ, о которых можно узнать, благодаря обращению к нейросетям.

Спросите у нейросети

  • Исследователь
    пример промпта
    Составь список альтернатив Google Сolab, например, datacamp.com, VsCode, PyCharm JetBrains. Перепиши в единообразном формате: название инструмента, ссылка на него, краткое описание.
  • Perplexity
    1. DataCamp: datacamp.com — платформа для онлайн-обучения в области анализа данных и машинного обучения, предлагающая интерактивные курсы и проекты.
    2. Kaggle Kernels: kaggle.com — платформа, предоставляемая Kaggle, которая позволяет пользователям писать и запускать код на Python в облаке. Kaggle Kernels также предлагает доступ к набору данных и инструментам для машинного обучения.
    3. Yandex DataSphere: yandex.cloud/ru/services/datasphere — облачная платформа для анализа данных и машинного обучения, предоставляющая инструменты для работы с большими объемами данных.
    4. Deepnote: deepnote.com — интерактивная платформа для совместной работы над проектами в области науки о данных, позволяющая выполнять анализ без необходимости в кодировании.

    Показать весь ответ 
Если вы впервые работаете с Google Colab, на первом этапе важно познакомиться c инструкцией по созданию блокнотов, а также с синтаксисом. Если вы уже опытный пользователь, то наверняка знаете, как подключить GPT, другие плагины, активировать магические команды. Если нет, спросите у нейросети об этом функционале.
Работа в Google Colab начинается с установления требуемых библиотек. Чтобы обеспечить работу с текстовыми и табличными данными, можно установить библиотеку pandas. Важно также указать язык для загружаемых словарей, например, русский.
Для предварительной обработки текстов понадобится библиотека NTLK (Natural Language Toolkit), в частности, возможность добавлять «стоп-слова» (custom stopwords), удалять шум, а также для лемматизации и токенизации (punkt). Помимо NTLK есть большой ряд других библиотек, которые можно совмещать в рамках одного исследования, — Gensim, SpaCy, Polyglot, Scikit-Learn, NetworkX. В процессе опыта взаимодействия, оценивая результаты, вы также сможете скорректировать свои предпочтения.
Одно из преимуществ Google Colab в том, что задачи можно выполнять нелинейно, располагая их по разным ячейкам с кодом. Установку библиотек важно сделать один раз в самом начале, а создание n-грамм и перевод текстов в цифровой формат вероятно понадобится проделать несколько раз.
После первого запуска у вас могут возникнуть сомнения в интерпретируемости модели или других показателях её качества. Например, вы можете решить расширить список «стоп-слов». Или далее на этапе выбора количества тем вам может не понадобиться повторная предобработка текста. В связи с этим код для этих задач, рекомендуется писать в отдельных блоках, чтобы не перезапускать другие процессы.

Спросите у нейросети

  • Исследователь
    пример промпта
    Опиши преимущества и ограничения использования библиотек для текст-майнинга в Google Colab, пример — NTLNK, Gensim, SpaCy, Polyglot, Scikit-Learn, NetworkX. Предложи для каждого примера наиболее подходящий контекст для применения.
  • Perplexity
    фрагмент ответа
    1. NLTK (Natural Language Toolkit)
    Преимущества:
    • Обширный набор инструментов для обработки естественного языка: токенизация, лемматизация, анализ настроений и т. д.
    • Поддержка множества языков и наличие готовых корпусов текстов и словарей (например, WordNet).
    • Хорошая документация и множество учебных материалов, что делает библиотеку доступной для новичков.
    Ограничения:
    • Меньшая скорость работы по сравнению с более современными библиотеками, такими как SpaCy.
    • Сложность в использовании для более сложных задач без предварительной настройки.
    Контекст применения: NLTK идеально подходит для образовательных проектов и начального анализа текстов, таких как анализ тональности отзывов или создание простых чат-ботов.
    Показать весь ответ
Чтобы использовать биграммы, триграммы и другие n-граммы, можно обратиться к классу Phrases и Сorpora models из библиотеки Gensim. В коде можно будет встретить и скорректировать следующие параметры:
  • min_count=5: означает, что n-граммы, которые встречаются менее 5 раз во всем корпусе текстов, будут проигнорированы.
  • threshold=10: порог ассоциации между словами в n-граммах. Чем выше этот параметр, тем более «связанными» должны быть слова, чтобы образовывать n-граммы
В качестве альтернативы можно удалить слишком редкие и слишком частые слова:
dictionary.filter_extremes(no_below=5, no_above=0.5)
С помощью Corpora создается словарь n-грамм и корпус текстов, проводится вычисление TF-IDF:
# Создание биграмм
bigram_model = Phrases(data['cleaned_abstract'], min_count=5, threshold=10)
data['bigrams'] = data['cleaned_abstract'].apply(lambda tokens: bigram_model[tokens])

# Создание словаря и корпуса
dictionary = corpora.Dictionary(data['bigrams'])
corpus = [dictionary.doc2bow(text) for text in data['bigrams']]

# Вычисление TF-IDF
tfidf = models.TfidfModel(corpus)
corpus_tfidf = tfidf[corpus]
Результат второго этапа — полностью готовый корпус текстов для тематического моделирования. Для составления кода на языке Python важно будет уточнить: среду, для которой важно написать код, например, Google Colab, язык программирования — Python, конкретный список задач и библиотек, которые выбраны вами для их достижения.
/ Этапы 3 и 4: моделирование и анализ

Выбор подходящей модели

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

LDA-подход тематического моделирования

Наиболее известный подход к обучению модели под названием латентное распределение/размещение Дирихле (Latent Dirichlet Allocation, LDA). В основе LDA лежит следующая механика: всем словам сначала задаются случайные значения вероятностей, которые также можно задать вручную, например, random_state=42, — это повышает воспроизводимость модели. Затем с каждым проходом по всем текстам эти значения уточняются. Количество проходов можно тоже корректировать. Для небольших корпусов можно настроить значения в пределах 100 проходов, а если данных много, то поменьше — 5−10. Чем больше проходов, тем дольше проходит процесс анализа. Аналогичным образом настраивается количество тем.
Как NTLK-библиотека, так и LDA-подход появились еще в начале 2000-х годов, с чем связано их широкое распространение в том числе среди исследователей. Однако количество альтернатив с годами растет, расширяя круг возможностей и перспектив. Среди других популярных подходов называют BERTopic, в том числе ее адаптацию для русского языка ruBERT, но они применяются для более длинных текстов. Для коротких текстов используют подход неотрицательной матричной факторизации (NMF), структурное тематическое моделирование (STM), Top2Vec и многие другие, с некоторыми из которых можно ознакомиться, используя ссылки в приложении.
В LDA-подходе количество тем задается вручную. Чтобы легче было определиться с количеством тем, можно сравнить значения ряда параметров для каждой модели, например:
  • Перплексия / Perplexity
    Мера способности модели предсказывать слова в документе: чем ниже значение, тем лучше
  • Логарифмическая функция правдоподобия / Log Likelihood
    Мера соответствия модели данным: чем выше знание, тем лучше
  • Коэффициент согласованности / Coherence Score
    Мера семантической согласованности тем: чем выше значение, тем лучше
Перечень критериев качества модели регулярно пополняется. Об известных альтернативах можно узнавать из актуальных исследований. При расчете оптимального количества тем можно предложить рассчитать несколько мер качества сразу нескольких моделей, указав начальное и пороговое значение тем, а также шаг, с которым отображать результаты:
limit=10, start=2, step=1
# Функция для вычисления когерентности perplexity и log_likelihood модели LDA

def compute_metrics(dictionary, corpus, texts, limit=10, start=2, step=1):
   coherence_values = []
   perplexity_values = []
   log_likelihood_values = []
   model_list = []
   num_topics_range = []
   for num_topics in range(start, limit, step):
       model = models.LdaModel(corpus, num_topics=num_topics, id2word=dictionary, passes=150)
       model_list.append(model)
       coherencemodel = CoherenceModel(model=model, texts=texts, dictionary=dictionary, coherence='c_v')
       coherence_values.append(coherencemodel.get_coherence())
       perplexity_values.append(-model.log_perplexity(corpus))
       log_likelihood_values.append(model.bound(corpus))
       num_topics_range.append(num_topics)
   return model_list, coherence_values, perplexity_values, log_likelihood_values, num_topics_range

# Параметры для подбора количества тем
start = 2
limit = 6  # максимальное количество тем, которое вы хотите проверить
step = 1
if limit < start:
   print("Ошибка: limit должно быть больше или равно start")
   exit()
if step <= 0:
   print("Ошибка: step должно быть больше 0")
   exit()

# Вычисление метрик для различных значений num_topics
model_list, coherence_values, perplexity_values, log_likelihood_values, num_topics_range = compute_metrics(dictionary, corpus_tfidf, data['bigrams'], limit, start, step)

# Создание таблицы с результатами 
metrics_df = pd.DataFrame({
   'Num Topics': num_topics_range,
   'Coherence': coherence_values,
   'Perplexity': perplexity_values,
   'Log Likelihood': log_likelihood_values
})
print(metrics_df)

# Отображение результатов
plt.figure(figsize=(12, 6))
plt.subplot(1, 3, 1)
plt.plot(num_topics_range, coherence_values)
plt.xlabel("Количество тем")
plt.ylabel("Coherence")
plt.legend(("Coherence"), loc='best')
plt.subplot(1, 3, 2)
plt.plot(num_topics_range, perplexity_values)
plt.xlabel("Количество тем")
plt.ylabel("Perplexity")
plt.legend(("Perplexity"), loc='best')
plt.subplot(1, 3, 3)
plt.plot(num_topics_range, log_likelihood_values)
plt.xlabel("Количество тем")
plt.ylabel("Log Likelihood")
plt.legend(("Log Likelihood"), loc='best')
plt.tight_layout()
plt.show()

# Вывод оптимальных количеств тем по всем метрикам
optimal_num_topics_coherence = num_topics_range[coherence_values.index(max(coherence_values))]
optimal_num_topics_perplexity = num_topics_range[perplexity_values.index(max(perplexity_values))]
optimal_num_topics_log_likelihood = num_topics_range[log_likelihood_values.index(max(log_likelihood_values))]
print(f'Оптимальное количество тем по когерентности: {optimal_num_topics_coherence}')
print(f'Оптимальное количество тем по perplexity: {optimal_num_topics_perplexity}')
print(f'Оптимальное количество тем по log likelihood: {optimal_num_topics_log_likelihood}')

Синтетические данные

Большинство инструментов, которые рассматриваются в данной главе, активно применяются для обучения больших языковых моделей, БЯМ (Large Language Model, LLM). Для этого используют очень большие наборы данных, которые обычно существенно превышают выборку, составленную для задач одного исследования. Чтобы преодолеть это ограничение, некоторые исследователи принимают решение сперва нарастить количество текстов за счет аугментации данных. Для этих целей создаются новые тексты на основании существующих, в которых, например, используются синонимы.
При выборе финальной модели также полагаются на собственную экспертизу — насколько предложенное распределение логично и соответствует изучаемому контексту. В случае затруднений в интерпретации можно повторить вычисления, даже не меняя параметры, — результаты могут оказаться уже другими. Это еще одно отличие данного подхода от других — низкая устойчивость модели, которую можно повысить за счет синтетических данных. О дополнительных методах повышения устойчивости модели можно узнать из дополнительных материалов, представленных в конце главы.

Спросите у нейросети

  • Исследователь
    пример промпта
    Какие существуют преимущества аугментации данных для тематического моделирования?
  • Perplexity
    фрагмент ответа
    1. Увеличение объема данных: аугментация позволяет искусственно увеличить размер обучающего набора, что особенно важно, когда исходные данные ограничены. Создание новых синтетических примеров на основе существующих текстов помогает обеспечить более широкий набор данных для обучения моделей, что, в свою очередь, улучшает их способность обобщать и адаптироваться к новым данным.
    2. Повышение устойчивости моделей: модели, обученные на аугментированных данных, становятся более устойчивыми к шумам и различным искажениям, что делает их более надежными в реальных условиях.
    3. Разнообразие данных: аугментация создает множество вариаций исходных данных, что позволяет модели видеть разные реализации одного и того же объекта или явления.

Визуализация моделей

После каждой модели результаты визуализируются c помощью графика распределения тем, облака слов, графиков с показателями мер качества моделей, тепловой карты, которая показывает связи между темами. Для визуализации в Google Colab задействуют специальные библиотеки, например pyLDAvis.
Результат третьего и четвертого этапов — выбор модели с наилучшей степенью интерпретируемости, устойчивости и показателями качества. В результате выбора наиболее предпочтительной модели определяется финальный набор ключевых слов и словосочетаний, для каждого из которых вычисляется вероятность их принадлежности к темам. На основании полученных результатов все документы также группируются по выделенным кластерам. И модель, и словарь при желании можно сохранить на локальное устройство.

/04

Пример исследования на тренировочных данных

Цель: выявить ключевые темы на открытом телеграм-канале МИД России.
/ шаг 1

Создание выборки

Для создания корпуса документов использовался телеграм-бот 2CSV. Из-за большого количества сообщений выбранного канала парсинг проводился дольше обычного и файл получился таким большим, что бесплатные онлайн-помощники по конвертации CSV в Excel не смогли быть применены. Код был создан в итоге не для .xls, а для .csv. Язык — русский, а вместо ручной предварительной обработки в коде появилась дополнительная строка для пропуска ячеек с неполными сведениями.
/ шаг 2

Предобработка данных

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

Хотите больше узнать по теме? Ознакомьтесь с данной литературой

Читайте также:
Визуализация данных с помощью Python
Сетевой анализ в изучении цифровой дипломатии