专栏名称: 机器学习算法与自然语言处理
一个有情怀的公众号。机器学习、自然语言处理、算法等知识集中营、期待与你相遇~
目录
相关文章推荐
知乎日报  ·  2025 ... ·  昨天  
知乎日报  ·  国内外这么多 AI 大模型,为什么是 ... ·  昨天  
知乎日报  ·  今年回家,你最想带上什么? ·  2 天前  
知乎日报  ·  一起来「画/话蛇添福」,在乎过大年! ·  2 天前  
知乎日报  ·  知乎瞎扯|什么叫降维打击? ·  3 天前  
51好读  ›  专栏  ›  机器学习算法与自然语言处理

【NLP】目前有比Topic Model更先进的聚类方式么?比如针对短文本的、加入情感分析的?

机器学习算法与自然语言处理  · 公众号  ·  · 2019-08-26 00:00

正文

点击上方“MLNLP”,选择“星标”公众号

重磅干货,第一时间送达


编辑:忆臻

https://www.zhihu.com/question/298517764

本文仅作为学术分享,如果侵权,会删文处理

PyTorch中在反向传播前为什么要手动将梯度清零?


作者:霍华德
https://www.zhihu.com/question/298517764/answer/537539141


Topic Model (主题模型)如果从99年Hofmann提出pLSA开始,发展了近20年了。这20年里出现了很多东西,最近一些年也有长足的发展,只是被深度学习盖住了风头。

Topic Model近几年的发展主题是“更多的Topic”。传统LDA一般就搞几百个topic,最多上千个topic就够了。突然有些人说我们要搞更多的topic,我们要上百万的topic。google有个系统能搞50万topic,非常之牛啤。另外大家觉得,topic多了就能学习出更小的topic,表达更加细微的语义。

于是大家就搞起了,LDA从12年开始,逐步发展了SparseLDA, AliasLDA, LightLDA, WarpLDA。发展到2015年底,通过降低理论的时间复杂度,学100万topic已经非常快了,这的确是长足进步。

简单总结一下这些进步:

  1. SparseLDA利用了稀疏性来加速算法。因为当上百万topic的时候,一个词只会属于少数的几个topic。但这个算法有个重大缺点,就是初始化时,模型一点都不稀疏,所以前几轮迭代会非常慢。

  2. AliasLDA主要是利用Alias table来优化了Gibbs Sampling采样的时间复杂度,从而使得N个topic的采样的时间复杂度从O(N)降低到O(1)。

  3. LightLDA的主要贡献在于采用了两个交替进行的独立采样过程,一个过程只依赖词,一个过程只依赖文档。

  4. WarpLDA主要是LightLDA的工程优化。

不得不说LDA是词袋模型的巅峰之作,优雅的模型,优雅的推导过程,是一位优雅的古典美人。


作者:zhugehun
https://www.zhihu.com/question/298517764/answer/513015199

谢Nemo老师邀请,第一次在知乎回答技术问题~

首先,LDA本身是一个主题模型,主要是提取一段话的主题,不过由于一类文档属于同一个主题,所以也可以用作文本的聚类。

其次,所有的NLP任务基本都会有两种解决方案,

第一种是基于规则的解决方案,比如:解决情感分析的聚类问题,可以人工构建一个巨大的情感词的列表和一系列的人工规则,如:“开心”属于正面情感,“不”“开心”属于负面情感,“非常”“不”“开心”属于负面情感,“非常”“开心”属于正面情感等。

然后利用这个巨大的情感词库和这些规则就可以实现对文本情感方面的聚类。

第二种是基于统计学习的解决方案,这种解决方案主要包括两个部分,第一个部分是文本的表示学习,第二个部分是使用机器学习进行分类/聚类。

文本的表示学习本质上是用一个向量来表示词、句子、一段文本等,又有很多种不同的表示学习方式:

  1. 使用One-hot的方式来表示词或者字。

  2. 使用TF-IDF来表示句子或者文本。

  3. 使用Word2Vec表示词。

  4. 自己定义的特征提取方式,如根据偏旁、部首、拼音、词性、依存关系或者业务相关词等来作为一个句子的表示。

  5. 使用DeepLearning的方式来表示词或者文本,这块也是深度学习在NLP领域应用最广的一块,希望通过深度学习的方式来提取文本特征,使得文本嵌入到多维空间中之后能体现出文本的语义信息,如“king”-“male” = “queen”-“female”。在DeepLeaning做表示学习这块有几篇代表的论文:Word2Vec,Elmo和最新出来的BERT模型。

然后是使用机器学习的方式来对进行文本表示之后的向量进行分类和聚类。

如果是分类,可以采用LR/SVM/决策树/XGBOOST/DNN/Bayes等来分类。

如果是聚类,可以采用Kmeans等来聚类。

因为对文本表示学习的好坏很大程度上决定了聚类或者分类的效果,所以想要做好文本的聚类或者分类很大程度上决定于文本表示的好坏。

希望能够帮到您。



作者:Jesper
https://www.zhihu.com/question/298517764/answer/511437491


首先,你这是两个点,分类和聚类。

简单说说分类好了,传统方法来讲,将文本通过tfidf、word2vec、glove等各种花式取词向量或句向量。通过传统分类器,如svm,lr等,简单暴力,可做为base model,可达到一定的效果。

近几年吵得火热的深度,效果就更为显著了。首先就是14年Kim大神提出的text-cnn, 简单的神经网络,却达到了显著的效果。然后就是各种LSTM, 单向,双向什么的。CNN呢,就是卷积层和池化层不停做文章。当然不得不提attention, 加attention显然理论上效果更好。补充一句,简单粗暴的话,首推fasttext。


推荐阅读:

就最近看的paper谈谈预训练语言模型发展

如何评价Word2Vec作者提出的fastText算法?深度学习是否在文本分类等简单任务上没有优势?

从Word2Vec到Bert,聊聊词向量的前世今生(一)