自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用 BerTopic 在 Python 中進(jìn)行主題建模

譯文
開(kāi)發(fā) 開(kāi)發(fā)工具
主題建模是一種無(wú)監(jiān)督的機(jī)器學(xué)習(xí)技術(shù),它可以自動(dòng)識(shí)別文檔(文本數(shù)據(jù))中的不同主題。

【51CTO.com快譯】通過(guò)主題建模,你可以收集非結(jié)構(gòu)化數(shù)據(jù)集,分析文檔,并獲得相關(guān)和所需的信息,這些信息能幫你做出更好的決策。 

??

執(zhí)行主題建模有不同的技術(shù)(如LDA),但是在本NLP教程中,你將學(xué)習(xí)如何使用Maarten Grootendorst開(kāi)發(fā)的BerTopic技術(shù)。

什么是 BerTopic?

BerTopic是一種主題建模技術(shù),它使用轉(zhuǎn)換器(BERT嵌入)和基于類(lèi)的TF-IDF來(lái)創(chuàng)建密集集群。它還允許您輕松地解釋和可視化生成的主題。

BerTopic算法包含三個(gè)階段:

1.嵌入文本數(shù)據(jù)(文檔):此步驟中,算法使用BERT提取文檔嵌入,也可以使用其他任何嵌入技術(shù)。

默認(rèn)情況下,它使用下面的句子轉(zhuǎn)換器

  • “ paraphrase-MiniLM-L6-v2” - 這是一個(gè)基于英語(yǔ) BERT 的模型,專門(mén)針對(duì)語(yǔ)義相似性任務(wù)進(jìn)行訓(xùn)練。
  • “ paraphrase-multilingual-MiniLM-L12-v2 ” - 這與第一個(gè)類(lèi)似,一個(gè)主要區(qū)別是 xlm 模型適用于 50 多種語(yǔ)言。

2.Cluster文檔:使用UMAP降低嵌入的維數(shù),使用HDBSCAN技術(shù)聚類(lèi)減少嵌入并創(chuàng)建語(yǔ)義相似文檔的聚類(lèi)。

3.創(chuàng)建主題表示:利用基于類(lèi)的TF-IDF進(jìn)行主題提取和精簡(jiǎn),提高最大邊緣關(guān)聯(lián)詞的一致性。

??

如何安裝 BerTopic

可以通過(guò) pip 安裝軟件包: 

pip install bertopic

如果你對(duì)可視化選項(xiàng)感興趣,你需要按照如下方式安裝它們。 

pip install bertopic[visualization]

BerTopic支持不同的轉(zhuǎn)換器和語(yǔ)言后端,你可以使用它們來(lái)創(chuàng)建模型。你可以根據(jù)下面可用的選項(xiàng)安裝一個(gè)。

  • pip install bertopic[天賦]
  • pip install bertopic[gensim]
  • pip install bertopic[spacy]
  • pip install bertopic[使用]

庫(kù)

我們將使用以下庫(kù)來(lái)幫助我們加載數(shù)據(jù)并從BerTopic創(chuàng)建模型。 

#import packages

import pandas as pd
import numpy as np
from bertopic import BERTopic

步驟1:加載數(shù)據(jù)

在本NLP教程中,我們將使用2020年?yáng)|京奧運(yùn)會(huì)推文,目標(biāo)是創(chuàng)建一個(gè)模型,該模型可以根據(jù)推文的主題自動(dòng)分類(lèi)。 

#load data
import pandas as pd

df = pd.read_csv("/content/drive/MyDrive/Colab Notebooks/data/tokyo_2020_tweets.csv", engine='python')

# select only 6000 tweets
dfdf = df[0:6000]

注:出于計(jì)算原因,我們只選擇了6000條推文。

步驟2:創(chuàng)建模型

要使用BERTopic創(chuàng)建模型,需要將推文作為列表加載,然后將其傳遞給fit_transform方法。這個(gè)方法將做以下工作:

  • 在推文集合上擬合模型;
  • 生成話題;
  • 返回帶有主題的推文。
# create model

model = BERTopic(verbose=True)

#convert to list
docs = df.text.to_list()

topics, probabilities = model.fit_transform(docs)

 ??

步驟3:選擇高級(jí)主題

訓(xùn)練模型后,可以按降序訪問(wèn)主題的大小。 

model.get_topic_freq().head(11)

 ??

注:Topic -1是最大的,它指的是沒(méi)有分配給生成的任何主題的離群推文。在本例中,我們將忽略Topic -1。

步驟4:選擇一個(gè)主題

你可以選擇一個(gè)特定的主題,并得到該主題的前n個(gè)單詞和他們的c-TF-IDF分?jǐn)?shù)。 

model.get_topic(6)

 ??

對(duì)于這個(gè)選定的話題,常用詞是瑞典,目標(biāo),羅爾夫,瑞典人,目標(biāo),足球。很明顯,這個(gè)話題的重點(diǎn)是“瑞典隊(duì)的足球”。

步驟5:主題建模可視化

BerTopic允許您以非常類(lèi)似于LDAvis的方式可視化生成的主題。這會(huì)讓你對(duì)主題的質(zhì)量有更多的了解。在本文中,我們將介紹三種可視化主題的方法。

可視化的話題

visualize_topics方法可以幫助您可視化生成的主題及其大小和相應(yīng)的單詞。視覺(jué)化的靈感來(lái)自于LDavis。 

model.visualize_topics()

 ??

可視化術(shù)語(yǔ)

visualize_barchart方法將通過(guò)創(chuàng)建c-TF-IDF分?jǐn)?shù)的條形圖來(lái)顯示選定的幾個(gè)主題術(shù)語(yǔ)。然后,您可以比較彼此的主題表示,并從生成的主題中獲得更多的見(jiàn)解。 

model.visualize_barchart()

 ??

上面的圖表中,你可以看到話題4的熱門(mén)詞是proud, thank, cheer4india, cheer和congrats。

可視化主題相似性

你還可以可視化某些主題之間的相似程度。要可視化熱圖,只需調(diào)用。 

model.visualize_heatmap()

??

在上圖中,你可以看到topic 93與topic 102相似,相似度為0.933。

主題減少

有時(shí)您可能會(huì)生成過(guò)多或過(guò)少的主題,BerTopic為您提供了一種選擇,以不同的方式控制這種行為。

(a)你可以通過(guò)設(shè)置參數(shù)nr_topics來(lái)設(shè)置你想要的主題數(shù)量。BerTopic將找到類(lèi)似的主題并合并它們。 

model = BERTopic(nr_topics=20)

在上面的代碼中,將要生成的主題的數(shù)量是20。

(b)另一種選擇是自動(dòng)減少專題的數(shù)目。要使用這個(gè)選項(xiàng),你需要在訓(xùn)練模型之前將"nr_topics"設(shè)置為"auto"。 

model = BERTopic(nr_topics="auto")

(c)最后一種選擇是減少模型訓(xùn)練后的主題數(shù)量。這是一個(gè)很好的選擇,如果重新培訓(xùn)模型將花費(fèi)許多小時(shí)。 

new_topics, new_probs = model.reduce_topics(docs, topics, probabilities, nr_topics=15)

在上面的示例中,在訓(xùn)練模型之后,您將主題的數(shù)量減少到15個(gè)。

步驟6:做出預(yù)測(cè)

要預(yù)測(cè)新文檔的主題,需要在轉(zhuǎn)換方法上添加一個(gè)(或多個(gè))新實(shí)例。 

topics, probs = model.transform(new_docs)

步驟7:保存模型

你以使用save方法保存訓(xùn)練過(guò)的模型。

model.save("my_topics_model")

步驟8:加載模型

你可以使用load方法來(lái)加載模型。 

BerTopic_model = BERTopic.load("my_topics_model")

最后

在創(chuàng)建模型時(shí),BerTopic提供了許多特性。例如,如果您有一個(gè)特定語(yǔ)言的數(shù)據(jù)集(默認(rèn)情況下,它支持英語(yǔ)模型),您可以通過(guò)在配置模型時(shí)設(shè)置語(yǔ)言參數(shù)來(lái)選擇語(yǔ)言。 

model = BERTopic(language="German")

注意:請(qǐng)選擇其嵌入模型存在的語(yǔ)言。

如果你的文檔中混合了多種語(yǔ)言,你可以設(shè)置language="multilingual"以支持超過(guò)50種語(yǔ)言。 

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】


責(zé)任編輯:黃顯東 來(lái)源: hackernoon
相關(guān)推薦

2019-04-18 09:15:05

DaskPython計(jì)算

2020-03-07 18:00:17

logzeroPython日志記錄

2023-08-02 08:02:30

Redis數(shù)據(jù)原生方法

2023-10-18 18:31:04

SQL查詢數(shù)據(jù)

2020-06-30 08:23:00

JavaScript開(kāi)發(fā)技術(shù)

2024-05-06 13:34:28

WireGoogleGo

2009-06-22 10:29:11

集成測(cè)試Spring

2011-08-01 10:41:59

Xcode 條件編譯

2009-12-28 13:59:12

ADO調(diào)用存儲(chǔ)過(guò)程

2009-03-03 09:00:57

Silverlight數(shù)據(jù)驗(yàn)證UI控件

2020-08-11 13:00:34

GNU bcLinuxShell

2021-03-24 09:30:02

Jupyter not單元測(cè)試代碼

2023-06-08 14:10:00

VSCodePython代碼

2016-08-22 11:46:53

GitLinux開(kāi)源

2011-11-30 15:18:06

JavaJBossJ2EE

2009-12-11 09:43:43

靜態(tài)路由配置

2025-02-10 10:29:32

2012-04-09 13:39:37

ibmdw

2010-03-30 18:48:24

Oracle 學(xué)習(xí)

2021-04-16 20:46:21

PythonXGBoost 特征
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)