1、语料的处理:通过corpora.Dictionary把原始文本数据转为字典。将用字符串表示的文档转换为用id表示的文档向量。
因为输入数据为csv中的一列数据,故先进行预处理使其变为train[]样式的数据。
stopwords = [line.strip() for line in open('./stopword.txt', 'r',encoding='utf-8').readlines()]
def chinese_word_cut(mytext):
seg_list = []
seg_text = jieba.cut(mytext)
for word in seg_text:
if word not in stopwords:
seg_list.append(word)
return " ".join(seg_list)
df = pd.read_csv("datascience.csv",encoding='gb18030')
df["content_cutted"] = df.content.apply(chinese_word_cut)
train = []
for i in range(len(df["content_cutted"])):
line = df["content_cutted"][i]
line = line.split()
train.append([w for w in line])
#print(len(train))
#print(train)
print(len(train))
dictionary = corpora.Dictionary(train)
corpus = [dictionary.doc2bow(text) for text in train]
2、生成LDA模型:三个参数,corpus id2word num_topics。
lda = models.ldamodel.LdaModel(corpus=corpus, id2word=dictionary, num_topics=8)
3、判断某个文档所属topic以及其关键词
test_doc=train[2]#查看训练集中第三个样本的主题分布
doc_bow = dictionary.doc2bow(test_doc) #文档转换成bow
doc_lda = lda[doc_bow] #得到新文档的主题分布
#输出新文档的主题分布
print (doc_lda)
for topic in doc_lda:
print ("%s\t%f\n"%(lda.print_topic(topic[0]), topic[1]))
4、模型保存与加载
lda.save('zhwiki_lda.model')
lda = models.ldamodel.LdaModel.load('zhwiki_lda.model')
4,几篇博客
https://blog.csdn.net/u010297828/article/details/50464845
https://blog.csdn.net/accumulate_zhang/article/details/62453672