当前位置:   article > 正文

LDA主题模型及案例_lda主题模型 案例分析

lda主题模型 案例分析

LDA即LatentDirichletAllocation(隐含狄利克雷分布)

注意:每个文档中含有多个主题,输出主题概率分布,无监督

 

 

案例:LDA主题分类(sklearn) 自动将4个文本分为两类(聚类)

 

LDA分析步骤:

  1. 读取数据,并分词

  2. 去除停用词

  3. 构建Tfidf矩阵,每一行代表一个test的文档,每一列代表一个词语的tfidf值

  4. LDA分析(fit和transform),输出结果

  1. # -*- coding: utf-8 -*-
  2. import jieba
  3. filepaths = ['data/test1.txt', 'data/test2.txt', 'data/test3.txt', 'data/test4.txt']
  4. docs = [open(f).read() for f in filepaths] #文档
  5. docs = [jieba.lcut(doc)
  6. for doc in docs] #分词
  7. print(docs)
  8. docs = [[w
  9. for w in doc
  10. if len(w)>1]
  11. for doc in docs] #本文中去停止词操作比较简单,只保留词语长度大于1的。
  12. corpus = [' '.join(doc)
  13. for doc in docs]#处理之后,每个文档的词语列表,加上空格
  14. print("分词:",corpus)
  15. from sklearn.feature_extraction.text import TfidfVectorizer
  16. from sklearn.decomposition import LatentDirichletAllocation
  17. tfidf = TfidfVectorizer()
  18. tfidf_matrix = tfidf.fit_transform(corpus)
  19. print("词频统计矩阵:",tfidf_matrix) #词频统计,4*496
  20. # 4行指的是四个文档
  21. # 496列是496个词语(也就是语料中一共出现了496个词语)
  22. # '''
  23. # 由于LDA属于聚类分析的一种,而聚类分析过程中会随机初始化,为了保证你也能得到与大邓一样的运行结果,我设置了random_state=123456。
  24. # 当然设置成别的数字也可以,这里的random_state相当于口令,咱们两个口令一致才能得到相同的答案。如果你换了random_state,
  25. # 那么咱们两个得到的结果可能会有出入。
  26. # '''
  27. lda = LatentDirichletAllocation(n_components=2,
  28. random_state=123456)#n_components,由于我们有预先的知识,知道这四个文档来源于三国和三体,所以话题数K天然的等于2
  29. docres = lda.fit_transform(tfidf_matrix)
  30. print("分类结果矩阵:",docres) #4*2,4个文档分别属于两个话题的概率,取其中概率大的
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/724357
推荐阅读
相关标签
  

闽ICP备14008679号