目录

(一)gensim.models.ldaseqmodel包

1、基本使用方法

2、缩水的地方

(二)gensim.models.wrappers.dtmmodel.DtmModel包

1、没有c语言联调怎么使用呢?

2、c语言运行的二进制文件作为参数

3、基本函数的使用

参考文献:

动态主题模型(Dynamic Topic Model)是David M. Blei[1]等人对隐狄利克雷模型LDA(Latent Dirichlet Allocation)的改进。两种模型都可以进行文本的主题分析。而动态主题模型在LDA分析的基础上引入了时间维度,可以更好的建模主题在时间序列上的发展和演变。因此,动态主题模型被广泛应用于网络话题演化的分析。

有关LDA和DTM的Python实现,网上的教程比较丰富,在此不再赘述。笔者注意到,网上很多教程在介绍gensim中动态主题模型建模的包时,经常将gensim中两个包混淆。这极容易让人产生误解,同时也会导致运行时出现奇怪的错误。因此,本文将详细梳理一下gensim中实现动态主题模型的gensim.models.ldaseqmodel包和gensim.models.wrappers.dtmmodel.DtmModel这两个包使用的方法及区别。

(一)gensim.models.ldaseqmodel包

1、基本使用方法

这个包是动态主题模型的python版(论文作者分享的原始DTM是linux下c语言实现,一般用户使用时,容易产生联调错误,入门较难)。因此,在gensim的model下的ldaseqmodel包是根据原始c语言,改变为python版本的实现(功能上有缩水,后面会谈到)。因此,在该包源文件中可以看到详细的python源代码。

其模型生成的一般形式为:

model = ldaseqmodel.LdaSeqModel(corpus=corpus, id2word=dictionary, time_slice=time_slice, num_topics=ntopics)

其中,corpus是利用gensim.corpora包生成的BoW或TF-IDF语料库。id2word可以传递字典(语料库词典和索引构成),也可以省略,如果省略,将会按corpus自动生成。time_silce传递的是一个列表参数,代表每个时段语料数量(不是传递时间,而是不同时间范围的文本数量)。num_topics指主题数量。这个模型我在电脑上运行的时间超级长(10000多个文本,15个主题的量,也有文献说需要运行6个小时,我的大概在4-5小时),不知原因何在。

ldaseqmodel中的函数很多,但很多都是用来模型生成的,不需要外部调用。模型生成后,主要会使用到函数如下:

def print_topic_times(self, topic, top_terms=20):#获取每个时间片下指定主题的高概率主题词def print_topics(self, time=0, top_terms=20):#获取指定时间下,所有主题的主题词def print_topic(self, topic, time=0, top_terms=20):#上述两个函数的合体def dtm_coherence(self, time):#计算指定时间,主题的一致性

需要注意的是,里面还有一个dtm_vis函数,看名字貌似用于主题结果可视化的。其实不要被名字误导,这个函数仅仅是生成归一化后的主题文档矩阵等内容。如果要可视化,还需要进一步转换。

2、缩水的地方

请注意看其源代码中的这一段注释。注释中明确说明下一步准备实现的功能是(DIM,Document Influence Model)。这个是Blei另一篇论文的研究[2]。在c语言版本中有,但是大牛给迁移为python版时,还没顾上实现呢。真是够皮的,既然这么牛,干啥不一劳永逸的实现了。写着写着还撂挑子(在阅读源代码时,会看到一些奇怪的判断,是为DIM实现留接口,只是不知道原作者还记得这个事情不)。因此,如果想利用DTM分析文档在主题演化中重要程度的,用这个版本无法实现,如何实现,请看下篇。

TODO: The next steps to take this forward would be:#. Include DIM mode. Most of the infrastructure for this is in place.
#. See if LdaPost can be replaced by LdaModel completely without breaking anything.
#. Heavy lifting going on in the Sslm class - efforts can be made to cythonise mathematical methods, in particular,update_obs and the optimization takes a lot time.
#. Try and make it distributed, especially around the E and M step.
#. Remove all C/C++ coding style/syntax.

继续阅读,请参阅gensim中动态主题模型(DTM)两种实现方法(二)


参考文献:

[1]Blei D M , Lafferty J D . Dynamic Topic Models[C]// Machine Learning, Proceedings of the Twenty-Third International Conference (ICML 2006), Pittsburgh, Pennsylvania, USA, June 25-29, 2006. 2006.

[2]Gerrish S, Blei D M. A Language-based Approach to Measuring Scholarly Impact[C]. international conference on machine learning, 2010: 375-382.

gensim中动态主题模型(DTM)两种实现方法(一)相关推荐

  1. gensim中动态主题模型(DTM)两种实现方法(二)

    第一部分内容请点此阅读:gensim中动态主题模型(DTM)两种实现方法(一) 目录 (二)gensim.models.wrappers.dtmmodel.DtmModel包 1.如何使用呢? 2.c ...

  2. Gensim中动态主题模型——dtmmodel的使用

    import gensim import jieba import pandas as pd from gensim import corpora,models from gensim.models. ...

  3. Json返回时间中出现乱码问题的两种解决方法

    Json返回时间中出现乱码问题的两种解决方法 参考文章: (1)Json返回时间中出现乱码问题的两种解决方法 (2)https://www.cnblogs.com/hanyinglong/archiv ...

  4. 在.NET中执行Async/Await的两种错误方法

    微信公众号:架构师高级俱乐部 关注可了解更多的编程,架构知识.问题或建议,请公众号留言; 如果你觉得此文对你有帮助,欢迎转发 在.NET中执行异步/等待的两种错误方法 在应用开发中,我们为了提高应用程 ...

  5. c++STL中的find()函数 有两种使用方法

    c++STL中的find()函数 有两种使用方法 方法一: 开头引头文件:中的函数 其调用形式为 find(start,end,value) start搜寻的起点,end搜寻的终点,要寻找的value ...

  6. Java中关于Arrays.sort的两种重载方法的理解

    前言 在java中重载排序方法的方法目前有两种,一种是实现Comparable接口的compareTo方法,还有一种是用比较器(comparator) 作为参数,其中比较器是实现了Comparator ...

  7. 计算机一级无法打开office,电脑中无法运行Office2016的两种解决方法

    最近,有些用户在电脑中安装完office2016后打开该程序时总是提示:无法启动此程序,因为计算机中丢失 api-ms-win-crt-stdio-l1-1-0.dll .那么,遇到这问题该怎么来解决 ...

  8. 风控模型中特征重要度的两种筛选方法

    在采用决策树算法建立模型的场景中,例如GBDT.XGBoost.LightGBM.Random Forest等,我们习惯通过Feature Importance指标作为特征筛选的重要方法之一.从特征定 ...

  9. python timer使用-python中timer定时器常用的两种实现方法

    方法一,使用线程中现成的: 这种一般比较常用,特别是在线程中的使用方法,下面是一个例子能够很清楚的说明它的具体使用方法: #! /usr/bin/python3 #! -*- conding: utf ...

最新文章

  1. R使用Iris数据集构建SVM分类器
  2. Linux查看用户所属用户组
  3. NUMA的取舍与优化设置
  4. SAP Spartacus的PWA支持
  5. C语言指针和数组概述
  6. 《C程序设计语言》笔记 (三) 控制流
  7. 推荐一个高仿微信的项目 有点屌!!!
  8. java中容器如何维护其内容
  9. JavaScript打开窗口
  10. 书论20 袁昂《古今书评》
  11. 某型发动机整机测试研究
  12. 《小窗幽记》卷六 集景
  13. 字节跳动的师兄跟我说:要带着离职的心态去入职?
  14. ubuntu目录结构简述
  15. android提取串口返回nmea,实现GPS 串口 NMEA 解析的代码
  16. Canal同步Elasticsearch
  17. linux unzip和zip,zip和unzip压缩与解压
  18. 高级排产软件按库存生产的优缺点
  19. java-php-python-基于springboot+vue的线上学习系统计算机毕业设计
  20. c语言一行黑白相间的瓷砖,卫生间黑白色的瓷砖好看吗 4款卫生间黑白瓷砖铺贴搭配效果图...

热门文章

  1. mysql数据库中图片的类型_将Image类型的图片文件保存到Mysql数据库
  2. Android实战简易教程五十七(分享小米手电筒源码)
  3. “你工资要得太低了,我给你加点!”
  4. 网络性能测试工具Iperf3
  5. 2021高考成绩查询登录入口,高考查分入口2021
  6. oracle 多行数据列合并成一行,Oracle 多行数据合并成一行
  7. 职中选什么专业好_读职高选什么专业好?
  8. Vista Office2007 Exchange2007发布现场简报
  9. 家居装修布线先行 家庭布线工程全攻略
  10. 用MFC制作一个倒计时小程序