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

Jac*_*ain 18 cluster-analysis machine-learning data-mining text-mining

我正在尝试聚集Twitter流.我想把每条推文都放到一个谈论相同主题的集群中.我尝试使用具有tf/idf和余弦相似性的在线聚类算法对流进行聚类,但我发现结果非常糟糕.

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

1-网站Stackoverflow是一个不错的地方.2- Stackoverflow是一个网站.

由于它们共享许多关键字,因此预先使用两个句子可能会与合理的阈值聚集在一起.但现在考虑以下两句话:

1-网站Stackoverflow是一个不错的地方.2-我定期访问Stackoverflow.

现在通过使用tf/idf,聚类算法将会失败,因为它们只共享一个关键字,即使它们都讨论相同的主题.

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

Fre*_*Foo 10

根据我的经验,潜在语义分析(LSA/LSI)向量的余弦相似性比文本聚类的原始tf-idf好得多,尽管我承认我没有在Twitter数据上尝试过.特别是,它倾向于处理您遇到的稀疏性问题,文档中没有足够的常用术语.

LDA等主题模型可能会更好.


小智 7

正如其他评论和答案中所述.使用LDA可以提供良好的tweet->主题权重.

如果这些权重不足以满足您的需求,您可以使用聚类算法来查看这些主题分布的聚类.

虽然它是训练集依赖LDA可以很容易地将stackoverflow,堆栈溢出和堆栈溢出的推文捆绑到同一主题中.然而,"我的堆栈即将溢出"可能会转向另一个关于盒子的话题.

另一个例子:带有Apple这个词的推文可以涉及许多不同的主题(公司,水果,纽约和其他).LDA会查看推文中的其他字词以确定适用的主题.

  1. "史蒂夫乔布斯是苹果首席执行官"显然是关于公司的
  2. "我正在吃最美味的苹果"显然是关于水果的
  3. "我去美国旅行时会去大苹果"最有可能访问纽约


Gal*_*tor 2

长答案:

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

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

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

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