如何使用 BERTopics 计算各个主题下每个文档的概率?
How to calculate per document probabilities under respective topics with BERTopics?
我正在尝试使用BERTopic
来分析文档的主题分布,执行BERTopic
后,我想计算每个文档各自主题下的概率,我应该怎么做?
# define model
model = BERTopic(verbose=True,
vectorizer_model=vectorizer_model,
embedding_model='paraphrase-MiniLM-L3-v2',
min_topic_size= 50,
nr_topics=10)
# train model
headline_topics, _ = model.fit_transform(df1.review_processed3)
# examine one of the topic
a_topic = freq.iloc[0]["Topic"] # Select the 1st topic
model.get_topic(a_topic) # Show the words and their c-TF-IDF scores
以下是其中一个主题的单词及其 c-TF-IDF 分数
image 1
如何将结果转换为如下的主题分布,以便计算主题分布分数并确定主要主题?
image 2
首先,要计算概率,您必须添加到模型定义中 calculate_probabilities=True
(如果您有很多文档,>100000,这可能会减慢主题的提取速度)。
# define model
model = BERTopic(verbose=True,
vectorizer_model=vectorizer_model,
embedding_model='paraphrase-MiniLM-L3-v2',
min_topic_size= 50,
nr_topics=10,
calculate_probabilities=True)
然后,调用fit_transform
,你应该保存概率:
headline_topics, probs = model.fit_transform(df1.review_processed3)
现在,您可以创建一个 pandas 数据框,它显示每个文档各自主题下的概率。
import pandas as pd
probs_df=pd.DataFrame(probs)
probs_df['main percentage'] = pd.DataFrame({'max': probs_df.max(axis=1)})
我正在尝试使用BERTopic
来分析文档的主题分布,执行BERTopic
后,我想计算每个文档各自主题下的概率,我应该怎么做?
# define model
model = BERTopic(verbose=True,
vectorizer_model=vectorizer_model,
embedding_model='paraphrase-MiniLM-L3-v2',
min_topic_size= 50,
nr_topics=10)
# train model
headline_topics, _ = model.fit_transform(df1.review_processed3)
# examine one of the topic
a_topic = freq.iloc[0]["Topic"] # Select the 1st topic
model.get_topic(a_topic) # Show the words and their c-TF-IDF scores
以下是其中一个主题的单词及其 c-TF-IDF 分数 image 1
如何将结果转换为如下的主题分布,以便计算主题分布分数并确定主要主题? image 2
首先,要计算概率,您必须添加到模型定义中 calculate_probabilities=True
(如果您有很多文档,>100000,这可能会减慢主题的提取速度)。
# define model
model = BERTopic(verbose=True,
vectorizer_model=vectorizer_model,
embedding_model='paraphrase-MiniLM-L3-v2',
min_topic_size= 50,
nr_topics=10,
calculate_probabilities=True)
然后,调用fit_transform
,你应该保存概率:
headline_topics, probs = model.fit_transform(df1.review_processed3)
现在,您可以创建一个 pandas 数据框,它显示每个文档各自主题下的概率。
import pandas as pd
probs_df=pd.DataFrame(probs)
probs_df['main percentage'] = pd.DataFrame({'max': probs_df.max(axis=1)})