`

文本相似度之LDA

LDA 
阅读更多

       隐含狄利克雷分布(Latent Dirichlet Allocation,以下简称LDA)。LDA是一个基于贝叶斯概率的主题模型,其假设背景是“一篇文档包含多个主题,文档中的每一个词由其中的一个主题生成”。可以理解为LDA的过程就是文本的重新生成过程,其生成示意图如下:

   

 

     在使用LDA进行文本相似的计算时,其目标时找到每一篇文档的主题分布和每一个主题中词的分布。LDA模型通过类似词聚类的办法将相似词聚类为一个主题,使得同一主题下的词具有近义词的特性,而不同主题之间的词具有多义词的特性。从而在计算文本相似时,免去计算词项之间的相似度,而是计算文本主题分布来计算文本间的相似度。(计算两个文本相似度可以计算与之对应的主题概率分布来实现:KL距离、JS距离等)

   参考:https://www.cnblogs.com/pinard/p/6831308.html

    使用gensim训练LDA代码如下所示:

   

def train(lda_model_lda,lda_model_index,lda_model_dictionary,word_seg):
    dictionary = corpora.Dictionary(word_seg)  ##得到词典
    corpus = [dictionary.doc2bow(text) for text in word_seg]   ##统计每篇文章中每个词出现的次数:[(词编号id,次数number)]
    pickle.dump(dictionary, open(lda_model_dictionary, 'wb'))
    ##接下来四行得到lda向量;
    tfidf = models.TfidfModel(corpus=corpus, dictionary=dictionary)
    corpus_tfidf = tfidf[corpus]
    lda_model = models.LdaModel(corpus=corpus_tfidf, id2word=dictionary, num_topics=200)
    corpus_lda = lda_model[corpus_tfidf]
    index = similarities.MatrixSimilarity(corpus_lda)
    lda_model.save(lda_model_lda)
    index.save(lda_model_index)

模型评价指标:

1)Perplexity(困惑度)

2)topic coherence主题相关度

参考:https://www.kdnuggets.com/2016/07/americas-next-topic-model.html

  • 大小: 75.1 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics