Topic Model 实战

Topic Model在考虑语义的情景中被广泛使用,实践证明效果也不错。本文总结了一些Topic Model实战技巧。

  1. 利用优质“少量”数据学习模型,缓解单机速度和内存问题,对剩余/新文档做推导(可以数据并行)。比如用微博数据训练LDA时,先把长度短的微博过滤掉(有工作得出长度为7的文本已经适合LDA进行学习的结论),剔除相似的微博(转发/分享会造成很多近乎相同的微博)。数据量大并且单机环境中可试一下GraphLab Create,还支持采样比较快的alias LDA。如果不仅是为了学习当前文档库中的主题,并且也要用于预测新数据,数据量越大越好。
  2. 去除一些TF/DF较低的词,这些词在拟合的过程中会被平滑掉,同样DF比较高的词没有区分力,标点,助词,语气词也可以去掉,中文常用词60万左右。中文的预处理如全角变半角,去乱码,繁转简也应考虑。实际处理数据时会发现分词后不同词个数很容易达到百万级别,这里很多词是没有意义的,数字词,长度过长的词(“北京市海淀区税务局”,会被分成一个词,然而这个词比较低频,对模型训练也没太大意义),乱码词。此外,分词过程中如果两个词在一起的频率比较高,那么分词结果会把两个词合并,那么合并与否对LDA的训练是否有影响呢?有的词应该合并,比如”北京大学“,也有的词分开会好一些,比如”阶级斗争“。
  3. 根据contextual合并短文本,比如合并用户所有的微博作为一个文档,合并相似的微博看成一个文档,把微博当做一个查询,利用伪反馈来补充微博内容(中文微博要比tweet表达的意思多一些,长微博不用扩展已经可以正确分类,短微博本身可能就是歧义的,扩展效果也不一定好),把微博及其评论当作一个文档。在一定程度上可缓解短文本问题。
  4. Topic Model的训练也是数据拟合,找出latent topic最大训练语料库的似然概率,当不同类的数据不平衡时,数量量少的主题可能会被数据量多的主题主导,导致数据量少的被忽略。LDA本来就倾向于拟合高频的topic。LDA很多奇怪的结果大多都是因为词的共现导致的,一种衡量词共现的指标是PMI。
  5. 迭代次数一般可设为1000 – 2000次,可根据时间,环境因素选择,会在最小值处来回跳转,LDA的运行时间和文档数,不同词个数,文档长度,topic个数有关。
  6. K的选择,对每个K跑一个LDA,肉眼观察每个topic的情况最靠谱。数据量大时不可行。此时可以根据不同的topic的相似度来调整K。假设不同topic之间的相似性小为佳(Perplexity, GraphLab Create直接输出这个结果)。一个经验设置是K × 词典的大小 约等于 语料库中词的总数。
  7. 优质的词典很重要,一方面有助于分词,也有助于明确表达主题。对于中文而言,由于需要分词的缘故,导致词典的大小很大,这是可以去除一些分错的词,数字词,人名词,长度过长的词。
  8. 数据量大后,LDA和PLSA的效果差不多,但是PLSA更容易并行化。LDA和PLSA的最大区别在于LDA对于Doc的Topic分布加上了一层先验,Doc-topic分布是当作模型变量,而LDA则只有一个超参数,Doc-Topic分布则是隐藏变量。在预测的时候,plsa是求一个似然概率,lda则是有两项,先验乘以似然。
  9. LDA在文本领域中,把word抽象成topic。类似,LDA也可以用在其它任务中,我们在信用评估中,直接把每个用户当成一个文档,文档中的词是每个关注的人,得到的topic相当于是一个用户group,相当于对用户进行聚类。还有,把微博中的@/rt的人当作word。http://www.machinedlearnings.com/2011/03/lda-on-social-graph.html
  10. 超参数\alpha \beta对训练的影响?\alpha越大,先验起的作用就越大,推导的topic分布就越倾向于在每个topic上的概率都差不多。
  11. the color of a word tend to be similar to other words in the same document.
  12. the color of a word tend to be similar to its major color in the whole corpus.
  13. 用一个大的数据集训练一个general的model,还是根据领域知识训练一个specific的model呢?觉得应该看具体情况,想得到一些小众的topic,一些大topic的子topic。
  14. 为什么LDA的最大似然难求?含有两个连续的隐藏变量,需要积分掉,对于一个word,需要考虑每个topic生成这个word的概率,因此也有个求和项。因为这个条件分布很难求,导致求解带隐变量优化问题的EM算法也不行,因此EM算法往往都是用一个近似分布来代替。Gibbs Sampling则是生成p(z|…)的几个样本来近似这个条件分布。说经过多次迭代(一次迭代对于一篇文章中的一个词只采样一次),一开始随机产生的 topic-word 矩阵 和 doc-topic 会处于稳定,真实的分布。对于一个Doc,根据词之间的可交换性,取不同词对应的topic的过程也是独立的。
时间: 2024-11-10 13:14:28

Topic Model 实战的相关文章

topic model

0.基石--贝叶斯推断 计算后验概率即为我们对参数的估计: 其中: ? ??--输入数据 ? ???--待估计的参数 ? ??--似然分布 ? ???--参数的先验分布 ? 对新样本的预测:我们要估计的概率 1.常用的概率分布 Dirichlet Distribution 2.文本建模 2.1 基本模型--unigram model 最基本的一种文本模型. 我们做这样的假设:语料库是从词表中独立的抽取的个.有似然方程 其中是term[t]出现的次数.我们的目标是估计,根据贝叶斯推断的方法,我们需

knowledge_based topic model KBTM

http://blog.csdn.net/pipisorry/article/details/44040701 术语 Mustlink states that two words should belong to the same topic Cannot-link states that two words should not belong to the same topic. DF-LDA is perhaps the earliest KBTM, which can incorporat

Topic Model之Probabilistic Latent Semantic Indexing(PLSI/PLSA)

Probabilistic Latent Semantic Indexing(PLSI/PLSA)是常用的话题模型之一,他通过生成模型来模拟文档的产生过程,然后用Maximum likelihood的方法估计模型中未知参数的值,来获取整个生成模型中的参数值,从而构建起整个生成模型. 一. 基本概念 1.  SVD奇异值分解:SVD主要用来求低阶近似问题.当给定一个MXN的矩阵C时(其秩为r),我们希望找到一个近似矩阵C'(其秩不大于k),当k远小于r时,我们称C'为C的低阶近似,设X = C -

【转】基于LDA的Topic Model变形

转载自wentingtu 基于LDA的Topic Model变形最近几年来,随着LDA的产生和发展,涌现出了一批搞Topic Model的牛人.我主要关注了下面这位大牛和他的学生:David M. BleiLDA的创始者,04年博士毕业.一篇关于Topic Model的博士论文充分体现其精深的数学概率功底:而其自己实现的LDA又可体现其不俗的编程能力.说人无用,有论文为证: J. Chang and D. Blei. Relational Topic Models for Document Ne

Topic Model的分类和设计原则

Topic Model的分类和设计原则 http://blog.csdn.net/xianlingmao/article/details/7065318 topic model的介绍性文章已经很多,在此仅做粗略介绍,本文假设读者已经较为熟悉Topic Medel. Topic Model (LDA)认为一个离散数据集合(如文档集合,图片集合,为行文方便,本文统统以文档集合作为描述对象,其他的数据集合只需换掉对应的术语即可)是由隐含在数据集合背后的topic set 生成的,这个set中的每一个t

knowledge_based topic model - AMC

ABSTRACT摘要 Topic modeling has been widely used to mine topics from documents. However, a key weakness of topic modeling is that it needs a large amount of data (e.g., thousands of doc- uments) to provide reliable statistics to generate coherent topic

我是这样一步步理解--主题模型(Topic Model)、LDA(案例代码)

1. LDA模型是什么 LDA可以分为以下5个步骤: 一个函数:gamma函数. 四个分布:二项分布.多项分布.beta分布.Dirichlet分布. 一个概念和一个理念:共轭先验和贝叶斯框架. 两个模型:pLSA.LDA. 一个采样:Gibbs采样 关于LDA有两种含义,一种是线性判别分析(Linear Discriminant Analysis),一种是概率主题模型:隐含狄利克雷分布(Latent Dirichlet Allocation,简称LDA),本文讲后者. 按照wiki上的介绍,L

topic model - LDA 1

http://blog.csdn.net/pipisorry/article/details/42129099 step1 :install gensim step 2 :Corpora and Vector Spaces 将用字符串表示的文档转换为用id表示的文档向量: documents = ["Human machine interface for lab abc computer applications", "A survey of user opinion of

Topic Model Demo

R语言实现:library(tidyverse) 1.Ndocs = 500 WordsPerDoc = rpois(Ndocs, 100) 2. thetaList = list(c(A=.60, B=.25, C=.15),c(A=.10, B=.10, C=.80))     //主题A.B.C theta_1 = t(replicate(Ndocs/2, thetaList[[1]]))  theta_2 = t(replicate(Ndocs/2, thetaList[[2]])) t