📜  gensim show_topics 获取主题 - Python (1)

📅  最后修改于: 2023-12-03 15:15:14.728000             🧑  作者: Mango

以 gensim show_topics 获取主题 - Python

gensim 是一款用于处理文本和语言数据的 Python 库,其中之一的功能就是主题建模。在主题建模中,用户可以使用 gensim 中的 show_topics 函数来获取主题及其相关信息,用于分析文本数据中隐藏的主题和模式。

1. 安装 gensim

在开始使用 gensim 库之前,需要确保已经安装了该库。如果没有安装,则可以通过以下命令进行安装:

pip install gensim
2. 加载文本数据

在进行主题建模之前,需要先加载文本数据。此处以加载 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()]
3. 处理文本数据

在加载文本数据之后,需要对文本数据进行处理,例如分词、去除停用词、进行词干提取等。此处使用中文文本并结合 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]
4. 进行主题建模

在对文本数据进行处理后,可以使用 gensimLsiModelLdaModel 进行主题建模。例如,可以执行以下代码进行 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]}")
5. 输出主题

将获取的主题及其相关信息用 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 函数获取主题及其相关信息的方法。通过主题建模,能够更好地理解文本数据中的模式和信息,为后续的数据分析和处理提供帮助。