Это вторая часть использования 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)
Результат:
Из этого графика легко понять, как со временем возникали разные темы. Это ли не удобно и не здорово!