比tf/idf和余弦相似度更好的文本文档聚类方法?

21

我正在尝试对Twitter流进行聚类。我希望将每个推文放入一个关于相同话题的簇中。我尝试使用tf / idf和余弦相似度的在线聚类算法来聚类流,但我发现结果很糟糕。

使用tf / idf的主要缺点是它聚类关键字相似的文档,因此仅适用于识别几乎相同的文档。例如,请考虑以下句子:

1- 网站Stackoverflow很好。 2- Stackoverflow是一个网站。

由于它们共享许多关键字,上述两个句子很可能会在合理的阈值下被聚类在一起。但是现在请考虑以下两个句子:

1- 网站Stackoverflow很好。 2- 我经常访问Stackoverflow。

现在使用tf / idf,聚类算法将失败,因为它们仅共享一个关键字,尽管它们都谈论相同的主题。

我的问题是:是否有更好的文档聚类技术?


6
@ThomasJungblut 嗯,TF-IDF 应该是一种加权方案,已经在相关关键字上放置了更多的权重。如果认为问题在于推文只是如此微小的文本片段,那么你不能指望相似度在它们上面工作得很好,除了“接近相同”之外。大多数推文甚至都不是完整的句子,因此 NLP 也可能会失败。 - Has QUIT--Anony-Mousse
1
LSI / LDA / NMF等算法需要注意主题漂移。如果您的流程管道没有正确完成,对已知数据集进行模型训练将产生良好的结果。然后,如果您将模型应用于完全未见过的数据集,可能会由于拟合原始训练数据而导致性能显著下降。因为Twitter文字很短,所以表示需要进行一些微调,因为可能没有足够的文本来正确训练模型。 - Steve
@steve 这个问题有没有解决方案? - Jack Twain
@guckogucko 这个消息来自哪个用户会有任何影响吗? - Steve
@Steve 你是什么意思? - Jack Twain
你只考虑推文的内容,还是你也会了解之前用户发布的推文信息? - Steve
3个回答

11
根据我的经验,在潜在语义分析(LSA/LSI)向量上使用余弦相似度比原始tf-idf更适用于文本聚类,虽然我承认我没有在Twitter数据上尝试过。特别是,它往往可以解决您遇到的稀疏问题,即文档中只包含足够的共同术语。

像LDA这样的主题模型可能会更好地发挥作用。


主题模型是聚类技术还是特征表示? - Jack Twain
@guckogucko:特征表示。 - Fred Foo

7
如其他评论和回答所提到的,使用LDA可以得到很好的推文-主题权重。如果这些权重对您的需求不足,则可以考虑使用聚类算法来聚类这些主题分布。尽管它取决于训练集,但LDA可以轻松将推文与stackoverflow、stack-overflow和stack overflow捆绑在同一个主题中。然而,“我的箱子堆积如山”可能会被归为关于箱子的另一个主题。另一个例子:带有“Apple”一词的推文可能属于多种不同的主题(公司、水果、纽约等)。LDA将查看推文中的其他单词以确定适用的主题。
1. “Steve Jobs是Apple的CEO”显然是关于公司的; 2. “我正在吃最美味的苹果”显然是关于水果的; 3. “当我去美国旅行时,我要去大苹果”很可能是关于访问纽约的。

2

长答案:

TfxIdf目前是最著名的搜索方法之一。您需要进行自然语言处理(NLP)的预处理。有很多资源可以帮助您处理英语(例如Python中的“nltk”库)。

在索引之前,您必须在查询(问题)和文档上都使用NLP分析。

关键是:虽然tfxidf(或像lucene中的tfxidf ^ 2那样)很好,但您应该在具有元语言信息的注释资源上使用它。这可能很困难,并且需要对核心搜索引擎、语法分析(语法)和文档领域有广泛的了解。

简短回答:更好的技术是使用轻量级语法NLP注释的TFxIDF,并重新编写查询和索引。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接