用 LDA 和 LSA 两种方法来降维和做 Topic 建模

2018 年 8 月 24 日 AI研习社

本文为 AI 研习社编译的技术博客,原标题 2 latent methods for dimension reduction and topic modeling,作者为 Edward Ma。

翻译 | dudubear、机智的工人       校对 | 余杭       审核 | 余杭


图片链接: https://pixabay.com/en/golden-gate-bridge-women-back-1030999/

在优秀的词嵌入方法出现之前,潜在语义分析模型(LSA)和文档主题生成模型(LDA)都是解决自然语言问题的好方法。LSA模型和LDA模型有相同矩阵形式的词袋表示输入。不过,LSA模型专注于降维,而LDA模型专注于解决主题建模问题。

由于有很多资料介绍这两个模型的数学细节,本篇文章就不深入介绍了。如果感兴趣,请自行阅读参考资料。为了让大家更好地理解,我不会做去停用词这样的预处理操作。但这是在使用LSA、LSI和LDA模型时非常关键的部分。阅读以下文章,你会了解以下内容:

  • 潜在语义分析模型(LSA)

  • 文档主题生成模型(LDA)

  • 主旨概要


  潜在语义分析(LSA)

2005年Jerome Bellegarda将LSA模型引入自然语言处理任务。LSA模型的目的是对分类任务降维。其主要思想是具有相似语义的词会出现在相似的文本片段中。在自然语言处理领域,我们经常用潜在语义索引(LSI)作为其别名。

首先,我们用m个文档和n个词作为模型的输入。这样我们就能构建一个以文档为行、以词为列的m*n矩阵。我们可以使用计数或TF-IDF得分。然而,用TF-IDF得分比计数更好,因为大部分情况下高频并不意味着更好的分类。

  图片来源: http://mropengate.blogspot.com/2016/04/tf-idf-in-r-language.html

TF-IDF的主要思想是高频的词有可能不代表着很多的信息。换句话说,就是出现频率小的词在模型中有更高的权重。字词的重要性与它在同一文件中出现的次数成正比,但同时与其在语料库中出现的次数成反比。更详细的内容,请参考此博客(https://towardsdatascience.com/3-basic-approaches-in-bag-of-words-which-are-better-than-word-embeddings-c2cbc7398016)。

该模型的挑战是矩阵很稀疏(或维数很高),同时有噪声(包括许多高频词)。因此,使用分解 SVD 来降维。

SVD 的思想在于找到最有价值的信息并使用低维的t来表达这一信息。

输出

可以看到维度从 130 K 降到了  50。

输出


  文档主题生成模型(LDA)

2003年,David Blei, Andrew Ng和Michael O. Jordan提出了LDA模型。这属于无监督学习,而主题模型是其个中典型。它建立的假设在于每份文档都使用多个主题混合生成,同样每个主题也是由多个单词混合生成。

 不同话题下的不同词汇

显然,你可以想象出两层聚合。第一层是类别的分布。打个比方,类似我们有金融新闻、天气新闻和政治新闻。第二层则是类中的单词分布。比如,我们可以在天气新闻中找到类似“晴朗的”和“云”这样的单词,在金融新闻中找到“钱”和“股票”这样的单词。

然而,"a","with","can"这样的单词对主题建模问题没有帮助。这样的单词存在于各个文档,并且在类别之间概率大致相同。因此,想要得到更好的效果,消除停用词是关键一步。

对特定的文档d,我们得到了其主题分布θ。则主题t可以根据这个分布(θ)从ϕ中选出相应的单词。

输出:


  主旨概要

要获取完整代码,请访问我的github仓库(https://github.com/makcedward/nlp/blob/master/sample/nlp-lsa_lda.ipynb)。

  • 两个模型均使用词袋表示作为输入矩阵

  • SVD的挑战是我们很难判定最优的维数。总的来说,低维所消耗的资源更少,但有可能无法区分相反意义的词。而高维能解决该问题,但会消耗更多地资源


  关于我

我是工作在湾区的一名数据科学家。我的主要研究方向是数据科学和人工智能,尤其是自然语言处理和平台相关的。你可以通过Medium、LindeIn或Github了解我。


参考

SVD教程:https://cs.fit.edu/~dmitra/SciComp/Resources/singular-value-decomposition-fast-track-tutorial.pdf

CHHK LSI教程:http://www1.se.cuhk.edu.hk/~seem5680/lecture/LSI-Eg.pdf

Stanford LSI教程:https://nlp.stanford.edu/IR-book/pdf/18lsi.pdf

LSA和LDA介绍:https://cs.stanford.edu/~ppasupat/a9online/1140.html


原文链接:

https://towardsdatascience.com/2-latent-methods-for-dimension-reduction-and-topic-modeling-20ff6d7d547


点击文末【阅读原文】即可观看更多精彩内容:

NLP 教程:词性标注、依存分析和命名实体识别解析与应用

想研究 NLP,不了解词嵌入与句嵌入怎么行?

手把手教你从零起步构建自己的快速语义搜索模型

文本分类又来了,用 Scikit-Learn 解决多类文本分类问题

CS224n斯坦福自然语言处理课程(中英双语字幕)


等你来译:

利用词向量和tsne算法来学习tensorflow

LDA 和 LSA 来做Topic建模

微软的TextWorld框架,NLP界的强化学习框架

深度学习的NLP工具

登录查看更多
13

相关内容

【经典书】贝叶斯编程,378页pdf,Bayesian Programming
专知会员服务
241+阅读 · 2020年5月18日
【图神经网络(GNN)结构化数据分析】
专知会员服务
112+阅读 · 2020年3月22日
【MIT深度学习课程】深度序列建模,Deep Sequence Modeling
专知会员服务
75+阅读 · 2020年2月3日
Python中的端对端主题建模: 隐含狄利克雷分布(LDA)
Python程序员
9+阅读 · 2019年5月15日
Github项目推荐 | gensim - Python中的主题建模
AI研习社
15+阅读 · 2019年3月16日
一步步教你轻松学主成分分析PCA降维算法
干货 | 一文详解隐含狄利克雷分布(LDA)
人工智能头条
10+阅读 · 2018年7月8日
Word2Vec与Glove:词嵌入方法的动机和直觉
论智
14+阅读 · 2018年6月23日
LibRec 每周算法:LDA主题模型
LibRec智能推荐
29+阅读 · 2017年12月4日
专栏 | 技术干货:一文详解LDA主题模型
机器之心
28+阅读 · 2017年12月1日
基于LDA的主题模型实践(一)
机器学习深度学习实战原创交流
20+阅读 · 2015年9月9日
Arxiv
4+阅读 · 2019年4月17日
Arxiv
3+阅读 · 2017年12月18日
Arxiv
3+阅读 · 2015年5月16日
VIP会员
相关资讯
Python中的端对端主题建模: 隐含狄利克雷分布(LDA)
Python程序员
9+阅读 · 2019年5月15日
Github项目推荐 | gensim - Python中的主题建模
AI研习社
15+阅读 · 2019年3月16日
一步步教你轻松学主成分分析PCA降维算法
干货 | 一文详解隐含狄利克雷分布(LDA)
人工智能头条
10+阅读 · 2018年7月8日
Word2Vec与Glove:词嵌入方法的动机和直觉
论智
14+阅读 · 2018年6月23日
LibRec 每周算法:LDA主题模型
LibRec智能推荐
29+阅读 · 2017年12月4日
专栏 | 技术干货:一文详解LDA主题模型
机器之心
28+阅读 · 2017年12月1日
基于LDA的主题模型实践(一)
机器学习深度学习实战原创交流
20+阅读 · 2015年9月9日
Top
微信扫码咨询专知VIP会员