📅  最后修改于: 2023-12-03 15:15:14.728000             🧑  作者: Mango
gensim
是一款用于处理文本和语言数据的 Python 库,其中之一的功能就是主题建模。在主题建模中,用户可以使用 gensim
中的 show_topics
函数来获取主题及其相关信息,用于分析文本数据中隐藏的主题和模式。
在开始使用 gensim
库之前,需要确保已经安装了该库。如果没有安装,则可以通过以下命令进行安装:
pip install gensim
在进行主题建模之前,需要先加载文本数据。此处以加载 nltk
数据集中的 reuters
数据为例:
import nltk
from gensim.corpora import Dictionary
from gensim.models import TfidfModel
nltk.download('reuters')
from nltk.corpus import reuters
documents = [' '.join(reuters.words(file_id)) for file_id in reuters.fileids()]
在加载文本数据之后,需要对文本数据进行处理,例如分词、去除停用词、进行词干提取等。此处使用中文文本并结合 jieba
库进行分词。
import jieba
# 对文本进行分词
documents = [list(jieba.cut(doc)) for doc in documents]
# 去除停用词
stop_words = [word.strip() for word in open('stop_words.txt', 'r', encoding='utf-8')]
documents = [[word for word in doc if word not in stop_words] for doc in documents]
# 进行词干提取
from gensim.parsing.porter import PorterStemmer
p = PorterStemmer()
documents = [[p.stem(word) for word in doc] for doc in documents]
# 构建词袋模型
dictionary = Dictionary(documents)
corpus = [dictionary.doc2bow(doc) for doc in documents]
# 计算 TF-IDF
tfidf_model = TfidfModel(corpus)
corpus_tfidf = tfidf_model[corpus]
在对文本数据进行处理后,可以使用 gensim
的 LsiModel
或 LdaModel
进行主题建模。例如,可以执行以下代码进行 LDA 主题建模:
from gensim.models.ldamodel import LdaModel
from gensim import show_topics
# 进行 LDA 主题建模
lda_model = LdaModel(corpus_tfidf, num_topics=10, id2word=dictionary)
# 获取主题及其相关信息
topics = lda_model.show_topics(num_topics=10)
# 输出主题及其相关信息
for topic in topics:
print(f"Topic {topic[0]}:\n")
print(f"{topic[1]}")
将获取的主题及其相关信息用 markdown 格式输出:
## 主题1
0.026*"book" + 0.015*"year" + 0.012*"publish" + 0.011*"sale" + 0.011*"announc" + 0.009*"volum" + 0.009*"profit" + 0.008*"market" + 0.008*"dividend" + 0.007*"price"
## 主题2
0.017*"market" + 0.016*"price" + 0.015*"oil" + 0.013*"product" + 0.012*"demand" + 0.012*"compani" + 0.011*"export" + 0.011*"trade" + 0.010*"import" + 0.009*"energi"
## 主题3
0.012*"produc" + 0.011*"compani" + 0.009*"plant" + 0.009*"market" + 0.009*"year" + 0.008*"new" + 0.007*"sale" + 0.006*"increas" + 0.006*"cost" + 0.006*"busi"
......
以上就是使用 gensim
库中的 show_topics
函数获取主题及其相关信息的方法。通过主题建模,能够更好地理解文本数据中的模式和信息,为后续的数据分析和处理提供帮助。