初试主题模型LDA-基于python的gensim包

http://blog.csdn.net/a_step_further/article/details/51176959

LDA是文本挖掘中常用的主题模型,用来从大量文档中提取出最能表达各个主题的一些关键词,具体算法原理可参阅KM上相关文章。笔者因业务需求,需对腾讯微博上若干账号的消息进行主题提取,故而尝试了一下该算法,基于python的gensim包实现一个简单的分析。

准备工作

  • 安装python的中文分词模块, jieba
  • 安装python的文本主题建模的模块, gensim (官网 https://radimrehurek.com/gensim/)。 这个模块安装时依赖了一大堆其它包,需要耐心地一个一个安装。
  • 到网络上下载中文停用词表

上代码

[python]

    1. #!/usr/bin/python
    2. #coding:utf-8
    3. import sys
    4. reload(sys)
    5. sys.setdefaultencoding("utf8")
    6. import jieba
    7. from gensim import corpora, models
    8. def get_stop_words_set(file_name):
    9. with open(file_name,‘r‘) as file:
    10. return set([line.strip() for line in file])
    11. def get_words_list(file_name,stop_word_file):
    12. stop_words_set = get_stop_words_set(stop_word_file)
    13. print "共计导入 %d 个停用词" % len(stop_words_set)
    14. word_list = []
    15. with open(file_name,‘r‘) as file:
    16. for line in file:
    17. tmp_list = list(jieba.cut(line.strip(),cut_all=False))
    18. word_list.append([term for term in tmp_list if str(term) not in stop_words_set]) #注意这里term是unicode类型,如果不转成str,判断会为假
    19. return word_list
    20. if __name__ == ‘__main__‘:
    21. if len(sys.argv) < 3:
    22. print "Usage: %s <raw_msg_file> <stop_word_file>" % sys.argv[0]
    23. sys.exit(1)
    24. raw_msg_file = sys.argv[1]
    25. stop_word_file = sys.argv[2]
    26. word_list = get_words_list(raw_msg_file,stop_word_file) #列表,其中每个元素也是一个列表,即每行文字分词后形成的词语列表
    27. word_dict = corpora.Dictionary(word_list)  #生成文档的词典,每个词与一个整型索引值对应
    28. corpus_list = [word_dict.doc2bow(text) for text in word_list] #词频统计,转化成空间向量格式
    29. lda = models.ldamodel.LdaModel(corpus=corpus_list,id2word=word_dict,num_topics=10,alpha=‘auto‘)
    30. output_file = ‘./lda_output.txt‘
    31. with open(output_file,‘w‘) as f:
    32. for pattern in lda.show_topics():
    33. print >> f, "%s" % str(pattern)

另外还有一些学习资料:https://yq.aliyun.com/articles/26029 [python] LDA处理文档主题分布代码入门笔记

时间: 2024-07-30 13:42:11

初试主题模型LDA-基于python的gensim包的相关文章

在PYTHON中使用TMTOOLKIT进行主题模型LDA评估

主题建模的英文一种在大量文档中查找抽象艺术主题艺术的方法.有了它,就有可能发现隐藏或"潜在"主题的混合,这些主题因给定语料库中的文档而异.一种作为监督无的机器学习方法,主题模型不容易评估,因为没有标记的"基础事实"数据可供比较.然而,由于主题建模通常需要预先定义一些参数(首先是要发现的主题?的数量),因此模型评估对于找到给定数据的"最佳"参数集是至关重要的. 概率LDA主题模型的评估方法 使用未标记的数据时,模型评估很难.这里描述的指标都试图用理

主题模型-LDA浅析

(一)LDA作用 传统判断两个文档相似性的方法是通过查看两个文档共同出现的单词的多少,如TF-IDF等,这种方法没有考虑到文字背后的语义关联,可能在两个文档共同出现的单词很少甚至没有,但两个文档是相似的. 举个例子,有两个句子分别如下: “乔布斯离我们而去了.” “苹果价格会不会降?” 可以看到上面这两个句子没有共同出现的单词,但这两个句子是相似的,如果按传统的方法判断这两个句子肯定不相似,所以在判断文档相关性的时候需要考虑到文档的语义,而语义挖掘的利器是主题模型,LDA就是其中一种比较有效的模

scapy - 基于python的数据包操作库

简介 地址:https://github.com/secdev/scapy scapy是一个基于python的交互式数据包操作程序和库. 它能够伪造或者解码多种协议的数据包,通过使用pcap文件对他们进行发送.收集.存储和读取,匹配请求和响应等等. 相关的应用 https://www.cnblogs.com/wpqwpq/p/9019516.html 原文地址:https://www.cnblogs.com/Antiver/p/10190516.html

文本主题模型--LDA

隐含狄利克雷分布(Latent Dirichlet Allocation ,简称LDA) 贝叶斯模型贝叶斯模型主要涉及"先验分布", "数据(似然)"和"后验分布"三块,在贝叶斯学派中:                   先验分布 + 数据(似然)= 后验分布可以理解为通过在现先验分布的基础上更新后验分布 二项分布$a = a -2$   原文地址:https://www.cnblogs.com/xz824/p/10034134.html

TopicModel主题模型 - LDA的缺陷和改进

http://blog.csdn.net/pipisorry/article/details/45307369 LDA limitations: what's next? Although LDA is a great algorithm for topic-modelling, it still has some limitations, mainly due to the fact that it's has become popular and available to the mass

重磅︱R+NLP:text2vec包简介(GloVe词向量、LDA主题模型、各类距离计算等)

词向量的表示主流的有两种方式,一种当然是耳熟能详的google的word2vec,还有一类就是GloVe.那么前面一类有三个开源的包,后面这一类我倒是看到得不多,恰好是在我关注了许久的一个包里面有,它就是text2vec啦.该包提供了一个强大API接口,能够很好地处理文本信息. 本包是由C++写的,流处理器可以让内存得到更好的利用,一些地方是用RcppParallel包进行并行化加乘,同时兼容各个系统的服务器.如果没有并行的地方,大家也可以自己用foreach包来自己加速. ----------

通俗理解LDA主题模型(boss)

0 前言 看完前面几篇简单的文章后,思路还是不清晰了,但是稍微理解了LDA,下面@Hcy开始详细进入boss篇.其中文章可以分为下述5个步骤: 一个函数:gamma函数 四个分布:二项分布.多项分布.beta分布.Dirichlet分布 一个概念和一个理念:共轭先验和贝叶斯框架 两个模型:pLSA.LDA(在本文第4 部分阐述) 一个采样:Gibbs采样 本文便按照上述5个步骤来阐述,希望读者看完本文后,能对LDA有个尽量清晰完整的了解.同时,本文基于邹博讲LDA的PPT.rickjin的LDA

主题模型TopicModel:隐含狄利克雷分布LDA

http://blog.csdn.net/pipisorry/article/details/42649657 主题模型LDA简介 隐含狄利克雷分布简称LDA(Latent Dirichlet allocation),是一种主题模型,它可以将文档集中每篇文档的主题按照概率分布的形式给出. 同时它是一种无监督学习算法,在训练时不需要手工标注的训练集,需要的仅仅是文档集以及指定主题的数量k即可.此外LDA的另一个优点则是,对于每一个主题均可找出一些词语来描述它. LDA首先由Blei, David

主题模型及其在文本情感分析中的应用

随着Web2.0技术的出现和发展,互联网上(包括门户网站.电子商务网站.社交网站.音/视频分享网站.论坛.博客.微博等)产生了海量的.由用户发表的对于诸如人物.事件.产品等目标实体的评论信息.例如,下面这两个短文本评论:(1)“比较了多个智能手机后选择了8150,性价比还可以.另外,就是考虑到它是3.7的屏幕,大小比较合适,否则携带很不方便.”(京东商城用户,2011.11.25):(2)“我以前在杭州做二手房地产,用温州炒房客的话说:全世界房价降了,杭州的房价永远不会降,因为他们有一道坚不可摧