有没有哪位好心人有做汉语文本LDA主题分析的代码呀,论坛里有,但是那是英文的。
自己用chatgpt做了一个,啥用没有,虽然出了一个结果,但是根本不够看。主体数量确定、拟合度、可视化都不行import os
import gensim
from gensim import corpora
# 设置文件夹路径
folder_path = 'C:\\Users\\11564\\Desktop\\实战'
# 读取文本文件
documents = []
for filename in os.listdir(folder_path):
if filename.endswith('滑雪场.txt'):
with open(os.path.join(folder_path, filename), 'r', encoding='utf-8') as f:
documents.append(f.read())
# 分词和去除停用词
stopwords = []
with open('C:\\Users\\11564\\Desktop\\实战\\scu_stopwords.txt', 'r', encoding='utf-8') as f:
stopwords = f.read().splitlines()
texts = [ for document in documents]
# 构建词典和语料库
dictionary = corpora.Dictionary(texts)
corpus =
# 执行LDA主题模型分析
lda_model = gensim.models.ldamodel.LdaModel(corpus=corpus, id2word=dictionary, num_topics=10)
lda_model.print_topics(num_topics=10, num_words=10)
# 输出结果到文件
output_file = 'C:\\Users\\11564\\Desktop\\实战\\output.txt'
with open(output_file, 'w', encoding='utf-8') as f:
f.write(str(lda_model.print_topics(num_topics=10, num_words=10)))
import jieba
from gensim import corpora, models
# 示例文本
documents = [
"这是一个关于政治的文章。",
"这是一个关于经济的文章。",
"这是一个关于科技的文章。",
"这是一个关于体育的文章。",
"这是一个关于艺术的文章。"
]
# 对文本进行分词
def tokenize(text):
return
# 对每个文本进行分词
tokenized_documents =
# 建立词典
dictionary = corpora.Dictionary(tokenized_documents)
# 建立语料库
corpus =
# LDA主题分析
num_topics = 2# 设定主题数量
lda_model = models.LdaModel(corpus, num_topics=num_topics, id2word=dictionary, passes=20)
# 输出主题
for i in range(num_topics):
print(f"主题 {i + 1}:")
print(lda_model.print_topic(i))
可视化怎么做呀。我明明安装了pyldavis,在运行的时候一直提示我找不到,尝试了安装新版本的3.2.2也不行 isdkz 发表于 2023-4-1 16:45
谢谢谢谢。可视化pyldavis安装了但是运行时报错找不到是咋回事呢 十里八乡俊后生 发表于 2023-4-2 10:37
谢谢谢谢。可视化pyldavis安装了但是运行时报错找不到是咋回事呢
你在pycharm运行的? isdkz 发表于 2023-4-2 10:39
你在pycharm运行的?
在jupyter运行的。今天又发现,不光是ypldavis,lda2ve安装了也找不到 十里八乡俊后生 发表于 2023-4-2 17:08
在jupyter运行的。今天又发现,不光是ypldavis,lda2ve安装了也找不到
"C:\Users\11564\Desktop\微信截图_20230402170944.png"
"C:\Users\11564\Desktop\微信截图_20230402171009.png" 十里八乡俊后生 发表于 2023-4-2 17:08
在jupyter运行的。今天又发现,不光是ypldavis,lda2ve安装了也找不到
可能你使用的跟安装了模块的不是同一个python环境 十里八乡俊后生 发表于 2023-4-2 17:08
在jupyter运行的。今天又发现,不光是ypldavis,lda2ve安装了也找不到
我尝试按照找到C盘里的路径,复制到D盘朱皮特安装路径下,也不行
"C:\Users\11564\Desktop\微信截图_20230402171408.png" 新代码:
import gensim
import os
from gensim.models import Lda2Vec
from gensim.models.ldamulticore import LdaMulticore
from gensim.models.word2vec import LineSentence
from gensim.utils import simple_preprocess
from gensim.parsing.preprocessing import STOPWORDS
from gensim.corpora import Dictionary
from gensim.models.coherencemodel import CoherenceModel
import pyLDAvis.gensim_models
import logging
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
# 定义读取文件路径
input_folder = "C:/Users/11564/Desktop/实战/滑雪场"
stopwords_file = "C:/Users/11564/Desktop/实战/scu_stopword.txt"
# 加载停用词表
with open(stopwords_file, 'r', encoding='utf-8') as f:
stopwords = f.read().splitlines()
# 去除停用词和长度小于3的词语
def preprocess(text):
result = []
for token in simple_preprocess(text):
if token not in stopwords and len(token) > 3:
result.append(token)
return result
# 读取文件
class TextIterator:
def __init__(self, folder_path):
self.folder_path = folder_path
def __iter__(self):
for file_name in os.listdir(self.folder_path):
file_path = os.path.join(self.folder_path, file_name)
for line in open(file_path, 'r', encoding='utf-8'):
yield preprocess(line)
# 构建LDA2Vec模型
sentences = TextIterator(input_folder)
dictionary = Dictionary(sentences)
model = Lda2Vec(
corpus=,
num_topics=50,
id2word=dictionary,
chunksize=5000,
passes=10,
alpha=0.5,
eta=0.5,
iterations=200,
random_state=42,
batch_size=128,
workers=4
)
# 保存模型
model.save("lda2vec.model")
# 计算模型的困惑度和一致性得分
perplexity = model.log_perplexity()
coh_score = CoherenceModel(model=model, texts=sentences, dictionary=dictionary, coherence='c_v').get_coherence()
# 可视化结果
vis_data = pyLDAvis.gensim_models.prepare(model, , dictionary)
pyLDAvis.show(vis_data)
# 展示主题和对应的词汇
for topic in model.topic_word_.T:
words = ", ".join( for idx in topic.argsort()[-5:]])
print(words)
print("Perplexity: ", perplexity)
print("Coherence score: ", coh_score) isdkz 发表于 2023-4-2 17:11
可能你使用的跟安装了模块的不是同一个python环境
我用anaconda的命令安装也不行
页:
[1]