Google colab 基于BERTopic 特朗普推文的动态主题建模

目录

动态主题模型

下载 BERTopic

数据处理

基本主题模型

随时间推移的主题

注意参数

docs

timestamps

global_tuning

evolution_tuning

扫描二维码关注公众号,回复: 16673095 查看本文章

nr_bins

随时间推移可视化主题



我们将使用动态主题建模和BERTopic来可视化特朗普推文中的主题如何随着时间的推移而演变。这些主题将被可视化和彻底探索。

动态主题模型


动态主题模型可用于分析文档集合的主题随时间推移的演变。

下载 BERTopic

%%capture
!pip install bertopic

数据处理

import re
import pandas as pd
from datetime import datetime

# Load data
trump = pd.read_csv('https://drive.google.com/uc?export=download&id=1xRKHaP-QwACMydlDnyFPEaFdtskJuBa6')

# Filter
trump.text = trump.apply(lambda row: re.sub(r"http\S+", "", row.text).lower(), 1)
trump.text = trump.apply(lambda row: " ".join(filter(lambda x:x[0]!="@", row.text.split())), 1)
trump.text = trump.apply(lambda row: " ".join(re.sub("[^a-zA-Z]+", " ", row.text).split()), 1)
trump = trump.loc[(trump.isRetweet == "f") & (trump.text != ""), :]
timestamps = trump.date.to_list()
tweets = trump.text.to_list()
tweets[0]
#republicans and democrats have both created our economic problems#

基本主题模型


要使用BERTopic执行动态主题建模,我们首先需要使用所有推文创建一个基本的主题模型。时间方面将被忽略,因为我们目前只对这些推文中的主题感兴趣。

from bertopic import BERTopic
topic_model = BERTopic(min_topic_size=35, verbose=True)
topics, _ = topic_model.fit_transform(tweets)

然后,我们可以提取最常见的主题: 

freq = topic_model.get_topic_info(); freq.head(10)

 

-1 表示所有异常值,通常应忽略。接下来,让我们看一下生成的一个常见主题:

topic_model.get_topic(4)

 

我们可以可视化使用主题间距离图创建的基本主题。这使我们能够在随着时间的推移继续创建主题之前直观地判断基本主题是否足够。 

fig = topic_model.visualize_topics(); fig

随时间推移的主题


在开始动态主题建模步骤之前,您对之前创建的主题感到满意非常重要。我们将使用这些特定主题作为动态主题建模的基础。

因此,此步骤将主要向您展示以前定义的主题如何随着时间的推移而演变。

注意参数

docs


这些是我们正在使用的推文


timestamps


每条推文/文档的时间戳


global_tuning


是否将主题在时间 t 处的主题表示与其全局主题表示形式求平均值


evolution_tuning


是否将主题在时间 t 处的主题表示与该主题在时间 t-1 的主题表示进行平均


nr_bins


要将时间戳放入的箱数。在数千个不同的时间戳中提取主题在计算上效率低下。因此,建议将此值保持在 20 以下。

topics_over_time = topic_model.topics_over_time(docs=tweets, 
                                                timestamps=timestamps, 
                                                global_tuning=True, 
                                                evolution_tuning=True, 
                                                nr_bins=20)

随时间推移可视化主题


创建topics_over_time后,我们将不得不可视化这些主题,因为随着时间维度的增加,访问它们变得更加困难。

为此,我们将根据主题的频率可视化主题随时间推移的分布。这样做可以让我们看到主题如何随着时间的推移而演变。确保将鼠标悬停在任何点上,以查看时间 t 处的主题表示形式与全局主题表示形式有何不同。

topic_model.visualize_topics_over_time(topics_over_time, top_n_topics=20)

 

猜你喜欢

转载自blog.csdn.net/timberman666/article/details/132708070
今日推荐