什么是短文本聚类的好方法?

机器算法验证 机器学习 聚类 文本挖掘
2022-01-31 05:17:40

我正在研究文本聚类问题。数据包含几个句子。有没有一种很好的算法可以在短文本上达到高精度?

你能提供好的参考吗?

KMeans、谱聚类等算法不能很好地解决这个问题。

2个回答

这主要取决于您想要多少“最先进”(SOTA)与您希望走多深(双关语......)。

如果您只能使用 word2vec、Glove 或 fastText 提供的浅词嵌入,我认为 Word Mover Distance(WMD [是的,真的...])是测量(短)文档距离的好功能 [1] . 过去我什至看过几个 Python Notebooks 提供了这种距离测量的“教程”,所以它真的很容易上手。

但是,如果您对 SOTA 更感兴趣,您将不得不研究深度(序列表示)学习,使用某种从句子中学习主题模型的循环网络。除了集成(语义)单词嵌入之外,这些方法通过使用依赖关系学习主题表示,超越了 [good, old] “bag-of-words” 方法句子中的单词[s]。例如,Sentence Level Recurrent Topic Model (SLRTM) 是一个非常有趣的深度循环模型,它基于更传统的 LDA(Blei 等人)或 LSA(Landauer 等人)的思想,但它只是一个 arXiv论文(因此,所有关于非同行评审研究的默认“用盐警告”都应该适用......)[2]。尽管如此,如果您想进入这个兔子洞,该论文有许多出色的指针和参考资料可以帮助您开始研究。

最后,应该澄清的是,我并没有声称这些是公认的词袋模型和序列模型的最佳性能方法。但是它们应该让您非常接近“最好的” SOTA 可能是什么,并且至少应该作为一个很好的起点。

[1] 马特 J.库斯纳等人。从词嵌入到文档距离。第 32 届机器学习国际会议论文集,JMLR,2015。

[2] 飞天等。SLRTM:让话题自己说话。arXiv 1604.02038, 2016。

https://github.com/RandyPen/TextCluster
这是一种针对短文本的 Cluster 方法,性能优于 KMeans 等。无需设置潜在变量数。
基本思想是将句子标记为单词。然后根据文本组件指向不同的桶。在每个桶中,计算句子和桶之间的相似度。如果相似度得分高于特定值,则将此句子附加到该桶中,否则搜索下一个桶。

基本的