初试主题模型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

智能推荐

纯函数都是函子_函数指针与函子_cunchi8090的博客-程序员宅基地

纯函数都是函子 Often, when implementing a feature, you won't know how certain events should be handled at the point where they occur and you'd rather defer to the user of your function or...

SQL SERVER 索引(3)——聚集索引_创建聚集索引的sql语句_二月十六的博客-程序员宅基地

      一、概念       前边我们介绍过,索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度。  聚集索引基于数据行的键值在表内排序和存储这些数据行,对磁盘上实际数据重新组织以按指定的一列或多列值排序,聚集索引的顺序和数据表中数据存储的顺序是一样的。每个表只能有一个聚集索引,因为数据行本身只能按一个顺序存储。举例子就是字典的拼音索引。       这里引申两个概念,...

java基本树型结构实现_小野狼不吃海鲜的博客-程序员宅基地

最近复习数据结构,用java写一个树的模板,代码如下,写的比较仓促,如果有哪里写的不好,或者有错误,请在评论区提出,谢谢。package Tree;import java.util.ArrayList;import java.util.List;/** * 树节点 * @author * * @param <T> */public class Node<T> { private

boost 编译设置参数 -fPIC_weixin_33834910的博客-程序员宅基地

2019独角兽企业重金招聘Python工程师标准&gt;&gt;&gt; ...

【SiamDW(CVPR2019)oral】论文阅读Deeper and Wider Siamese Networks for Real-Time Visual Tracking_siamdw 程序代码 阅读_gagajian的博客-程序员宅基地

Deeper and Wider Siamese Networks for Real-Time Visual Tracking 论文地址 代码写在前面又是一篇商汤做的关于SiamRPN的改进,加深了网络宽度与深度,优化特征提取过程,效果很好。Motivation深度的网络如ResNet在其他视觉任务上都有很好的表现,然而却不能移植到目标跟踪领域中;网络太深导致最后特征的感受野太大,更加...

实现iOS图片等资源文件的热更新化(三):动态的资源文件夹_ios 更新资源文件_iOS122的博客-程序员宅基地

简介此文,将尝试动态从某个不确定的文件夹中加载资源文件.文章,会继续完善自定义的 imageNamed 函数,并为下一篇文章铺垫.

随便推点

Kinect2和六轴机械臂的实时映射(初步)_kinect数据怎么发送到机械臂_朱铭德的博客-程序员宅基地

本文暂时不贴代码,只是总结一下这两天的思路,做的过程中遇到的问题,尝试的各种方法以及结果。首先说下现阶段想要的一个效果吧:利用Kinect2采集人的骨架参数,实时映射到机械臂的几个自由度让其模仿人右臂的动作。Kinect2部分流程图大概如下:Created with Raphaël 2.1.0开始初始化选择对象检测骨架TCP/IP发送数据退出?结束yesno1)这里的初始化选择对象的意思是让电脑知道

2019-06-19:一个字符串I am a boy,请依照如下规则转换为数字。 abc–2, def–3, ghi–4, jkl–5, mno–6, pqrs–7, tuv–8 wxyz–9_abc—2,def—4_IamMurphy的博客-程序员宅基地

def lettersChangeDatas(new_s): s_list=new_s.split() print(s_list) new_s='' for words in s_list: for letter in words: if letter.lower() in "abc": ne...

携程PMO | 小罗说敏捷-WIP限制在制品_wip pmp_互联网PMO的博客-程序员宅基地

转自本人运营的公众号“携程技术中心PMO”(ID:cso_pmo)Key:Trip.com,携程,携程PMO,携程技术,敏捷开发,PMO,PMI,PMP,Scrum,AgileWIP是什么?WIP(work in progress)指的就是工作中心在制品区。在经过部分制程之后,还没有通过所有的制程,或者还没有经过质量检验,因而还没有进入到成品仓库的部分...

Unity Post Processing(后处理效果)添加方法及注意事项-最全最新_unitypostprocess_嘿皮土豆的博客-程序员宅基地

Unity版本:2021.1.3;前言:Post Processing(后处理效果)使用前需要区分渲染管线,不同的渲染管线有不同的添加方式,本文以通用和URP两种渲染管线举例;(这在之前的教程中没有看见提及)一、概括说明:通用渲染管线(3D):需要在 “Window &gt; Package Manager” 找到 “Post Processing” 插件并安装;URP渲染管线:在安装URP插件之后(或者直接新建URP工程文件),直接在 “Hierarchy” 面板鼠标右键 “Volume &gt

React Native中显示fragment的问题_react native k线图_wodata1的博客-程序员宅基地

上司让我react native 中显示 原生已经写好的 K线图 ,原生那边给我的是  fragment界面,一开始我将fragment放到framelayout 中返回,framelayout 显示了,但是fragment就是怎么样都不显示,后面就去google,发现有一些人也有这些问题,但是没有人有好的答案,最后也只能换个方法来实现了。所以,如果你也遇到这个问题,还是换个思路写吧,别浪费时

手机通讯录整理excel2csv2vcf_移动通讯数据excel数据集_xiami133的博客-程序员宅基地

一、先做好excel表格二、另存为UTF8 编码的逗号分隔值文件格式(csv)三、python代码(csv2vcf.py)(经测试可直接使用)import sysimport osimport redef csv2vcf_android(csv_filename, encoding='utf-8'): """csv格式文件转换为安卓适用的vcf格式文件""" # 1.读取csv文件 with open(csv_filename, 'r', encoding='utf-

推荐文章

热门文章

相关标签