Python 主题模型:使用 LDA 对评论文本进行分类
本文介绍如何使用 Python 的 LDA 主题模型对评论文本进行分类,并计算每个评论文本中每一类主题的数量。
示例代码展示了如何使用 CountVectorizer 将文本转换为词频矩阵,以及如何使用 LatentDirichletAllocation 模型进行主题建模。
import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.decomposition import LatentDirichletAllocation
# 读取评论文本数据
data = pd.read_csv('comments.csv')
# 创建CountVectorizer对象,用于将文本转换为词频矩阵
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(data['content'])
# 初始化LDA模型
lda = LatentDirichletAllocation(n_components=5, random_state=42)
# 拟合模型并获取每个评论文本的主题分布
lda.fit(X)
topic_distribution = lda.transform(X)
# 获取每个主题的名称
feature_names = vectorizer.get_feature_names()
topic_names = []
for topic_weights in lda.components_:
top_indices = topic_weights.argsort()[:-10 - 1:-1]
topic_words = [feature_names[i] for i in top_indices]
topic_names.append(', '.join(topic_words))
# 打印每个评论文本中每一类主题的数量
for i, comment in enumerate(data['content']):
print(f"Comment {i+1}:")
for j, topic_weight in enumerate(topic_distribution[i]):
print(f"Topic '{topic_names[j]}': {topic_weight}")
print()
在上面的代码中,我们使用CountVectorizer将评论文本转换为词频矩阵,然后使用LatentDirichletAllocation进行主题建模。我们指定了主题数量为5,可以根据需要进行调整。然后,我们通过拟合模型获取每个评论文本的主题分布,以及通过排序获取每个主题的名称。最后,我们打印每个评论文本中每一类主题的数量。
请注意,这只是一个示例代码,具体的实现可能因数据和需求的不同而有所调整。
原文地址: https://www.cveoy.top/t/topic/diKp 著作权归作者所有。请勿转载和采集!