Это вторая часть использования BERTopic для анализа данных твиттера нашего чемпионата мира, где мы рассмотрим динамическое тематическое моделирование (DTM). Проверьте часть 1 здесь.

Загрузить данные

В первой части урока я сохраняю данные под именем «world_cup_tweets.pkl». Теперь мы можем рассолить его, используя:

import pandas as pd
import pickle
with open('world_cup_tweets.pkl', 'rb') as f:
    data = pickle.load(f)

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

Динамическое тематическое моделирование (DTM) — это набор методов, предназначенных для анализа эволюции тем во времени. Эти методы позволяют понять, как тема представлена ​​в разное время».

Чтобы представить разные периоды времени, мы можем создать список твитов с соответствующим временем публикации. Затем нам нужно создать и обучить модель BERTopic, как мы это делали в части 1:

timestamps = data.Date.to_list()
tweets = data.Tweet_processed.to_list()

from bertopic import BERTopic
topic_model = BERTopic(language="english", calculate_probabilities=True, verbose=True)
topics, probs = topic_model.fit_transform(tweets)

Теперь мы должны вызвать topic_over_time и передать твиты и временные метки. Обратите внимание, что ячейка означает один диапазон непрерывных значений, используемых для группировки значений на диаграмме. Если ширина бина слишком велика, мы не получим достаточной дифференциации; если слишком маленький, данные не могут быть сгруппированы должным образом. Здесь мы устанавливаем количество корзин равным 20. И визуализируем 10 лучших тем.

topics_over_time = topic_model.topics_over_time(tweets, timestamps, nr_bins=20)
topic_model.visualize_topics_over_time(topics_over_time, top_n_topics=10)

Результат:

Из этого графика легко понять, как со временем возникали разные темы. Это ли не удобно и не здорово!