gensim 使用三 LDA模型使用

本文详细介绍了如何使用gensim库中的LDA模型进行文本主题分析,包括语料预处理、模型训练、主题推断及模型保存与加载的全过程。通过实际案例展示了如何将中文文本数据转化为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

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值