霍帕到胡夫迪内赫奥尔

新冠肺炎疫苗接种的BERTopic和Flashback主题

Inlogt av公司迪米特里奥斯·科基纳基斯2024-03-27

问题框架和实验设置

这篇博文探讨了流行的瑞典讨论论坛上跨多个线程的流行主题闪回,讨论新冠肺炎疫苗接种疫苗,使用主题建模库BER主题在众多主题中,Flashback论坛积极吸引用户解决和辩论各种问题;犯罪、政治、烹饪、游戏、育儿,包括新冠肺炎疫苗和疫苗接种。本博客的出发点是2021年发布的14篇相关主题讨论的帖子。我们应用了BERTopic,这是一个模块化主题建模框架,它利用预先训练的语言模型并应用聚类技术来识别流行主题。这使我们能够对总体主题进行细致的探索,利用最先进的瑞典语预处理语言模型,深入了解论坛中这些讨论的多方面性质。此外,博客文章从技术角度而非理论角度对这一探索进行了阐述,介绍了在中使用BERTopic挖掘和分析文本的一些基础知识蟒蛇,在中实现谷歌Colab笔记本-这一探索并非详尽无遗,而是进一步研究的起点。 

数据集

这些实验是在一个数据集上进行的,其中有来自14个手工选择的Flashback线程的帖子,这些帖子讨论了2021年的新冠肺炎疫苗和疫苗接种;单价助推器剂量可用性的第一阶段开始的时间。目的是确定并提取主要主题,表达这些主题中讨论的利弊。可以使用两个版本的线程帖子(在处理之前下载并结构化),一个有将近16000个独特的帖子(大约13500个没有问题),另一个更小2000个员额的随机子集(用于快速试验BERTopic的功能)。

Flashback是瑞典最大的互联网开放论坛(近160万注册用户;8200万发布帖子),也是全球最大的开放网络论坛之一。倒叙文本通常很短,1到20行,但在把它们放在一起后,它们形成了一些连贯的叙述。Flashback独立于全球媒体所有权,促进开放、言论自由,并将讨论从审查制度中解放出来。下面的图1显示了数据集中帖子的长度。

输入桩长度

图1.帖子输入的长度。

使用BERTopic的动态主题建模

BERTopic框架(v.0.16)依赖于上下文,根据定义,它不需要大量的数据预处理。此外,BERTopic比更“传统”的主题建模技术(例如潜在Dirichlet分配根据话题连贯性和话题多样性得分判断,创建更清晰的话题。然而,一些预处理(如删除瑞典语(和英语)停止词和HTML标记)是为了消除噪声。BERTopic采用模块化架构,由几个可以堆叠的层组成。默认情况下,BERTopic使用针对语义相似性进行优化的句子变换器,增强了聚类过程;它利用BERT嵌入件基于类的术语频率反转文档频率(c-TF-IDF公司)创建密集的集群,允许轻松解释主题,同时在主题描述中保留重要单词。BERTopic不需要输入集群的数量。尽管产生的聚类可能会危害语义解释,但有一些技术可以通过减少离群值或在训练后合并生成的主题来缓解这一风险。在实验中,我们使用了瑞典句子转换模型(“句子-比特-婚礼“)由瑞典国家图书馆KBLab培训,可在Huggingface存储库.该模型可以适用于所有或较小的支柱子集。

交互式笔记本和数据集结构

基于交互式笔记本的环境,例如Jupyter实验室(Jupyter), 谷歌代码实验室(Colab)卡格尔笔记本是强大的(基于web的)交互式开发资源,用于进行探索性(文本)数据分析(EDA)。EDA的目的是在数据中发现有价值的见解。笔记本可以通过轻松创建和共享代码和数据等计算文档来促进透明性和再现性,同时允许协作研究,从而促进深入的EDA。这些环境允许嵌入代码(“代码单元”中的代码片段),这些代码可以很容易地执行,结果会立即显示在用户窗口中。格式化文本或“标记单元格”用于补充和解释代码。此外,代码单元可以以任意顺序独立执行,在运行和迭代之间进行编辑,共享变量和函数,并允许使用不同的方法、模型和工具进行实验。本博客中探索的实现和结果在谷歌Colab笔记本可以从以下链接下载:使用BERTopic.ipynb进行回放探索.

数据集和关键词可以在基于云的存储库中访问github,英寸科拉布用户可以在感叹号前面加上前缀“!”在代码单元中指示终端使用的任何命令之前。命令行工具cURL下载Flashback数据集。闪回柱的结构在逗号分隔值格式(‘.脑脊液病毒’). Flashback的快照.csv文件文件如图-2a所示。图2b显示了前10名最频繁的帖子作者和数据集中帖子最多的10天。这个文件扩展的stopwords.txt包含停止词列表(可以从以下链接下载此文件:sv_stopwords_extended.txt文件). 这些词包括瑞典语(和英语)连词、介词、代词、某些副词(通常是非信息性的),以及帖子中一些非常常见的词,如“疫苗”,我们想过滤掉这些词。BER主题停止字删除作为可选后处理步骤,在模型拟合后。换句话说,停止词的选择不会影响使用BERTopic时检测到的主题。

结构

图2a:导入Flashback数据集。

结构

图2b(左):数据集中有更多帖子的前10名作者;图2b(右):数据集中帖子最多的前10天。

参数设置

由于BERTopic框架依赖于上下文,根据定义,它不需要大量的数据预处理。根据几项研究,BERTopic比更“传统”的主题建模技术概括得更好,例如潜在Dirichlet分配(LDA)根据主题连贯性和主题多样性得分,以及模块化程度高的优势,创建更清晰的主题,允许在主题建模过程的每个阶段进行广泛的个性化。尽管如此,为了消除噪声,还是对数据集进行了一些预处理,删除了(瑞典)扩展的停止词和HTML标记。为了进一步微调模型,并提高主题名称和关键字的质量,我们对各种超参数设置进行了实验:i。最大边际相关性(设置为0.5):增加或减少主题表示中单词之间的差异(范围为0[无差异]到1[最大差异]);ii、。基于UMAP的降维(设置为余弦),用于计算嵌入的距离和维度;(三)。二元语法可以使用设置为长度2的ngram_range参数;iv最大特性(_F)向量器的值被设置为7500,这考虑了在整个数据集中按术语频率排序的顶级标记,以及v主题数量已设置为自动。虽然BERTopic工作得很好开箱即用,有许多超参数要根据您的用例进行优化。这两个参数可以在BERTopic中直接访问,也可以在HDBSCAN和UMAP等子模型中进行超参数优化(图3)。


 参数

诸军

图3。各种BERTopic p拟合前的参数。
 

内容探索-首先概述主题

图4显示了找到的主题BERTopic,如下所示,使用主题模型.get_topic_info()。这里是列主题列举了不同的主题。计数显示为给定主题分配了多少主题。姓名显示主题中包含的文档的最具代表性的单词。主题-1指示无法分配给主题的文档。我们可以通过在拟合之前更改参数或降低包含阈值来增加分配给主题的文档数量,但这可能会以使主题更“杂乱”(不太特定于给定主题)为代价。因此,在上述设置下,为13460个帖子分配了36个生成的主题。这意味着6950个帖子被认为是异常主题(主题-1)。

结果

图4。生成主题的第一个概述.
 

各种内容可视化

所有主题中所有术语的排名

每个主题都由一组单词表示,从最具代表性的单词开始。每个单词都用c-TF-IDF分数表示。分数越高,单词对主题的代表性越强。由于主题词是根据其c-TF-IDF分数排序的,分数随着每个单词的添加而缓慢下降。然而,这些词并不都代表这个主题。这个可视化显示了代表一个主题需要多少单词,并且在这个时候添加单词的好处开始下降。术语得分下降图让我们了解了术语得分如何下降到其影响几乎无法与其他术语区分的水平。

等级

图5。所有主题中所有术语的排名(突出显示主题2、7、15)。
 

一段时间内的主题频率

图6a和6b显示了主题随时间的演变,揭示了研究期间事件的变化;例如,主题2“blodproppar,ont,armen……”似乎在2021年最后一个季度迅速增加。


 趋势1

图6a:。随着时间的推移可视化所有主题。

趋势2

图6b:。随时间变化的选定/感兴趣主题的可视化(此处:2,5,15,17,20)。
 

选定主题的条形图

我们可以通过用每个主题表示的c-TF-IDF分数创建条形图来可视化一些主题的选定术语(图7)。可以从主题之间和主题内的相对c-TF-IDF分数中获得见解。ngram_range参数允许我们决定每个实体在主题表示中有多少标记。例如,我们在一个主题中有一个长度为1的单词,比如game和team,但也有一个长度为2的单词,比如hockey league。为了允许生成这些单词,我们可以设置`ngram_范围`中的参数`矢量器模型`至“(1,2)”。 

分数

图7。主题词得分。
 

主题间距离图

在主题的2D表示中,看似彼此更为相关的主题更为紧密(图8)。我们可以通过考虑它们之间的“距离”来建模这种关系。两个主题之间的距离越远,它们就越不相关。相反,距离越短,两个主题之间的联系越紧密。 

热带的

图8。主题词得分。

分层主题聚类

这些层次表示使合并某些主题的效果更容易理解。一些主题可能符合合并的逻辑,而其他主题可能不符合。此外,我们现在可以看到在某些更大的主题中可以找到哪些子主题。
 

集群

图9。主题的潜在层次性。

热图和相似矩阵

图10显示了主题相似性矩阵的热图。基于主题嵌入之间的余弦相似性矩阵,创建了一个热图,显示主题之间的相似性。

热

图10。主题的潜在层次性。
 

每节课的主题

主题可以根据类别/类进行提取、分组和可视化。例如,如果您有特定的作者组,这些作者组可能在许多线程中处于活动状态,或者以不同的方式处理主题,那么提取他们将有助于理解这些用户如何谈论某些主题。换句话说,这只是为数据中可能存在的某些类创建主题表示。这可以使用`.topic_per_class`方法完成,提供原始文档以及文档所属的相应类。在图11中,我们选择查看在所选主题7和15中哪些后期作者是常见的。

作者

图11。每个类的主题(此处为作者)。

 

致谢和相关链接

博客是项目的一部分谣言挖掘 (MXM19-1161:1)由瑞典银行三百周年基金会(瑞典央行周年纪念)资助;有来自的支持汉密菲瑞典国家人文基础设施,由瑞典研究委员会资助(2021-00176)。这个博客的灵感来自于2023年12月由KBLab公司瑞典国家图书馆的数据实验室。KBLab的以下成员参与了创建和演示研讨会的不同部分:Faton Rekathati(笔记本、代码、可视化);Chris Haffenden(结果解释,笔记本反馈);Love Börjeson(主题建模简介)。
改编(2024年1月至4月):Dimitrios Kokkinakis(新数据;关键词;新探索和可视化)。