gensim 使用三 LDA模型使用

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

http://www.cnblogs.com/chenbjin/p/5638904.html

猜你喜欢

转载自blog.csdn.net/qq_34333481/article/details/84648201