使用BerTopic在Python中进行主题建模可以做出更好的决策。执行主题建模有不同的技术(如LDA),但在本NLP教程中,您将学习如何使用MaartenGrootendorst开发的BerTopic技术。什么是BerTopic?BerTopic是一种主题建模技术,它使用转换器(BERT嵌入)和基于类的TF-IDF来创建密集的集群。它还允许您轻松地解释和可视化生成的主题。BerTopic算法包括三个阶段:1.嵌入文本数据(文档):在此步骤中,算法使用BERT或任何其他嵌入技术提取文档嵌入。默认情况下,它使用以下句子转换器“paraphrase-MiniLM-L6-v2”——一种专门为语义相似性任务训练的基于英语BERT的模型。“paraphrase-multilingual-MiniLM-L12-v2”——这与第一个类似,一个主要区别是xlm模型可用于50多种语言。2.Clusterdocuments:使用UMAP降维embeddings,使用HDBSCAN技术clustering减少embeddings,创建语义相似文档的聚类。3.创建主题表示:使用基于类的TF-IDF进行主题抽取和精简,提高最大边缘关联词的一致性。如何安装BerTopic可以通过pip包安装:pipinstallbertopic如果你对可视化选项感兴趣,需要按如下方式安装。pipinstallbertopic[可视化]BerTopic支持可用于创建模型的不同转换器和语言后端。您可以根据下面提供的选项安装一个。pipinstallbertopic[gensim]pipinstallbertopic[gensim]pipinstallbertopic[spacy]pipinstallbertopic[use]libraries我们将使用以下库来帮助我们从BerTopic加载数据和创建模型。#importpackagesimportpandasaspdimportnumpyasnpfrombertopicimportBERTopic第1步:加载数据在此NLP教程中,我们将使用2020年东京奥运会的推文,目标是创建一个可以根据主题自动对推文进行分类的模型。#loaddataimportpandasaspddf=pd.read_csv("/content/drive/MyDrive/ColabNotebooks/data/tokyo_2020_tweets.csv",engine='python')#只选择6000条推文dfdf=df[0:6000]注意:输出出于计算原因,我们只选择了6000条推文。第2步:创建模型要使用BERTopic创建模型,您需要将推文作为列表加载并将其传递给fit_transform方法。此方法将执行以下操作:在推文集合上拟合模型;产生话题;返回带有主题的推文。#createmodelmodel=BERTopic(verbose=True)#converttolistdocs=df.text.to_list()topics,probabilities=model.fit_transform(docs)第三步:选择高级主题训练模型后,可以访问主题按大小降序排列。model.get_topic_freq().head(11)注意:topic-1是最大的,指的是未分配给任何生成的topic的异常推文。在这个例子中,我们将忽略主题-1。第4步:选择一个主题您可以选择一个特定的主题并获得该主题的前n个单词及其c-TF-IDF分数。model.get_topic(6)对于这个选定的主题,常用词是sweden、goal、rolf、sweden、goal、football。显然,这个话题的重点是“瑞典队的足球”。第5步:主题建模可视化BerTopic允许您以与LDAvis非常相似的方式可视化生成的主题。这将使您更深入地了解主题的质量。在本文中,我们将研究三种可视化主题的方法。可视化主题visualize_topics方法可帮助您可视化生成的主题及其大小和相应的单词。可视化的灵感来自LDavis。model.visualize_topics()可视化术语visualize_barchart方法将通过创建c-TF-IDF分数的条形图来显示选定的几个主题术语。然后,您可以将主题表示相互比较,并从生成的主题中获得更多见解。model.visualize_barchart()在上图中可以看到topic4的热词是proud,thank,cheer4india,cheer和congrats。可视化主题相似度您还可以可视化某些主题之间的相似度。要可视化热图,只需调用.model.visualize_heatmap()在上图中,您可以看到主题93与主题102相似,相似度为0.933。主题减少有时您可能会生成过多或过少的主题,BerTopic为您提供了以不同方式控制此行为的选项。(a)您可以通过设置参数nr_topics来设置您想要的主题数量。BerTopic会找到相似的主题并将它们合并。model=BERTopic(nr_topics=20)在上面的代码中,要生成的主题数量为20。(b)另一种选择是自动减少主题数量。要使用此选项,您需要在训练模型之前将“nr_topics”设置为“auto”。model=BERTopic(nr_topics="auto")(c)最后一个选项是在模型训练完成后减少主题数量。如果重新训练模型需要很多小时,这是一个很好的选择。new_topics,new_probs=model.reduce_topics(docs,topics,probabilities,nr_topics=15)在上面的示例中,在训练模型后,您将主题数量减少到15。第6步:进行预测预测新主题的主题文档,一个(或多个)新实例需要添加到转换方法。topics,probs=model.transform(new_docs)第七步:保存模型可以使用save方法保存训练好的模型。model.save("my_topics_model")第8步:加载模型您可以使用load方法加载模型。BerTopic_model=BERTopic.load("my_topics_model")最后,在创建模型时,BerTopic提供了许多功能。例如,如果你有特定语言的数据集(默认情况下,它支持英文模型),你可以在配置模型时通过设置语言参数来选择语言。model=BERTopic(language="German")注意:请选择嵌入模型存在的语言。如果你的文档中有混合语言,你可以设置language="multilingual"来支持超过50种语言。【翻译稿件,合作网站转载请注明原译者和出处.com】
