初试主题模型LDA-基于python的gensim包_基于gensim的文本主题模型(lda)分析_a_step_further的博客-程序员宅基地

技术标签: 文本挖掘  python  

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

准备工作

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

  • 到网络上下载中文停用词表

上代码

#!/usr/bin/python
#coding:utf-8
import sys
reload(sys)
sys.setdefaultencoding("utf8")
import jieba
from gensim import corpora, models


def get_stop_words_set(file_name):
    with open(file_name,'r') as file:
        return set([line.strip() for line in file])

def get_words_list(file_name,stop_word_file):
    stop_words_set = get_stop_words_set(stop_word_file)
    print "共计导入 %d 个停用词" % len(stop_words_set)
    word_list = []
    with open(file_name,'r') as file:
        for line in file:
            tmp_list = list(jieba.cut(line.strip(),cut_all=False))
            word_list.append([term for term in tmp_list if str(term) not in stop_words_set]) #注意这里term是unicode类型,如果不转成str,判断会为假
    return word_list


if __name__ == '__main__':
    if len(sys.argv) < 3:
        print "Usage: %s <raw_msg_file> <stop_word_file>" % sys.argv[0]
        sys.exit(1)

    raw_msg_file = sys.argv[1]
    stop_word_file = sys.argv[2]
    word_list = get_words_list(raw_msg_file,stop_word_file) #列表,其中每个元素也是一个列表,即每行文字分词后形成的词语列表
    word_dict = corpora.Dictionary(word_list)  #生成文档的词典,每个词与一个整型索引值对应
    corpus_list = [word_dict.doc2bow(text) for text in word_list] #词频统计,转化成空间向量格式
    lda = models.ldamodel.LdaModel(corpus=corpus_list,id2word=word_dict,num_topics=10,alpha='auto')

    output_file = './lda_output.txt'
    with open(output_file,'w') as f:
        for pattern in lda.show_topics():
            print >> f, "%s" % str(pattern)


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/a_step_further/article/details/51176959

智能推荐

Linux内核中的jiffies(转)_JackieLee524的博客-程序员宅基地

硬件给内核提供一个系统定时器用以计算和管理时间,内核通过编程预设系统定时器的频率,即节拍率(tickrate),每一个周期称作一个tick(节拍)。Linux内核从2.5版内核开始把频率从100调高到1000(当然带来了很多优点,也有一些缺点).   jiffies是内核中的一个全局变量,用来记录自系统启动一来产生的节拍数。譬如,如果计算系统运行了多长时间,可以用jiffies/tick

win7 x64中寻找SSDT_win7 ssdt_吾无法无天的博客-程序员宅基地

win32位的SSDT表是导出的,根本不用找.但x64的就不导出了win7x64下:要得到SSDT的地址,首先找到KiSystemCall64的地址,在它的下面就有SSDT的线索找的KiSystemCall64只需要读出MSR(特别模块寄存器)c0000082的值,便是KiSystemCall64的地址:以下使用Windbg调试:3: kd&gt; rdmsr c0000...

WebRTC重要API和音视频分析_srs webrtc有电流音_军说网事的博客-程序员宅基地

重要APIWebRTC原生APIs文件是基于WebRTC规格书撰写而成,这些API可分成Network Stream API、 RTCPeerConnection、Peer-to-peer Data API三类。Network Stream API·MediaStream:MediaStream用来表示一个媒体数据流。·MediaStreamTrack在浏览器中...

Spring Cloud Alibaba实战案例例_springcloudalibaba实例_MavenTalk的博客-程序员宅基地

做Java,绕不开Spring。用Java做微服务开发,也绕不开Spring Cloud。随着Dubbo的重启,并交给Apache开源社区维护后,Dubbo生态越来越完善。虽然拿Spring Cloud与Dubbo作比较不合适,但不少朋友在技术选型时会纠结选择Dubbo还是Spring Cloud,spring-cloud-alibaba的出现,将Dubbo生态完美的与Spring Cloud生态...

随便推点

浅析hashmap的put()方法_hashmap put_thetimelyrain的博客-程序员宅基地

最近面试的时候,有面试官问到hashmap的put()方法做了哪些事情,我觉得回答的不够好,特此好好研究下hashmap,并总结下.HashMap 主要用来存放键值对,它基于哈希表的Map接口实现,是常用的Java集合之一。JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的(“拉链法”解决冲突).JDK1.8 以后在...

小程序滑动切换页面_斌道天下的博客-程序员宅基地

点击切换和滑动切换,只适用于上面导航个数固定的情况。比如2个,4个。如果导航个数不是死的,是接口出的,不知道有多少个。那请看我之前发的这个帖子 -----&amp;gt; 仿今日头条滑动切换 &amp;lt;view class=&quot;swiper-tab&quot;&amp;gt; &amp;lt;view class=&quot;swiper-tab-list {{currentTab==0 ? 'on' : ''}}&quot; data...

实验7-3-7 字符转换-----char类型的整数怎么转成int类型的整数运算_hellobettershero的博客-程序员宅基地

实验7-3-7 字符转换 (15分)本题要求提取一个字符串中的所有数字字符(‘0’……‘9’),将其转换为一个整数输出。输入格式:输入在一行中给出一个不超过80个字符且以回车结束的字符串。输出格式:在一行中输出转换后的整数。题目保证输出不超过长整型范围。输入样例:free82jeep5输出样例:825#include&lt;stdio.h&gt;#include&lt;str...

2020 dns排名_全球与中国DNS劫持解决方案市场深度调研分析报告_松脂领花的博客-程序员宅基地

QYResearch预测:2020-2026全球与中国DNS劫持解决方案市场现状及未来发展趋势【纸版价格】:RMB 18000【电子版(PDF)价格】:RMB 18000【报告篇幅】:100【报告图表数】:113【报告出版时间】:2020年2月报告摘要本报告研究全球及中国市场DNS劫持解决方案现状及未来发展趋势,侧重分析全球及中国市场的主要企业,同时对比北美,欧洲,中国,亚太及南美等地区的现在及未...

LightGBM算法详解(教你一文掌握LightGBM所有知识点)_一种tang两种味的博客-程序员宅基地

LigthGBM是boosting集合模型中的新进成员,由微软提供,它和XGBoost一样是对GBDT的高效实现,原理上它和GBDT及XGBoost类似,都采用损失函数的负梯度作为当前决策树的残差近似值,去拟合新的决策树。LightGBM在很多方面会比XGBoost表现的更为优秀。它有以下优势:更快的训练效率低内存使用更高的准确率支持并行化学习可处理大规模数据支持直接使用catego...

树莓派——opencv打开树莓派摄像头调试记录_树莓派opencv打开摄像头_行不地上的博客-程序员宅基地

指令:cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_PYTHON_EXAMPLES=ON ..如果没有问题,OpenCV 可以正常使用。第二步:你应该可以看到摄像头在直播。由于没有镜头,画面会比较模糊,不用担心。选择Advanced Options(光标移动,Tab键选择,空格键确认)如果显示错误,请使用网络进行问题排查。当系统询问是否启用相机时,选择“是”当要求重启树莓派时,选择“是”

推荐文章

热门文章

相关标签