我想基于主题对推文进行聚类(例如,一个集群中的所有Amazon推文,另一个集群中的所有Netflix推文,等等。)事实是,所有传入的推文已经按这些关键字进行过滤,但是它们重新弄乱了,当它们进来时我只是对其进行分类。
我正在使用Spark流,正在寻找一种矢量化这些推文的方法。因为这是批处理,所以我无法访问整个推文集。
答案 0 :(得分:2)
如果您有一个预定义的词汇表,并且可能同时选择了多个术语,例如一组您感兴趣的非互斥 {em> tweet
类别-然后您可以拥有一个二进制向量,其中每个位代表一个类别。
如果类别是互斥的,那么您希望通过聚类实现什么?具体地说,将没有“灰色区域”,其中一些观测值属于CategorySet-A,其他观测值属于CategorySet-B,而另一些观测值则介于两者之间。如果每个观察结果都严格限制在一个类别中,那么您将拥有离散的点而不是聚类。
如果相反,您希望基于相似的单词集进行聚类-那么您可能需要预先了解“词汇”-在这种情况下,其含义是:“我关心的是哪些tweet术语”。在这种情况下,您可以使用bag of words
模型https://machinelearningmastery.com/gentle-introduction-bag-words-model/比较推文-然后根据生成的向量进行聚类。
现在,如果您不确定词汇的先验性(由于您不知道下一条推文的内容是什么,那么可能是这种情况),那么您可能会求助于重新聚类定期-随着您获得新单词。然后,您可以使用更新的 bag of words
,其中包括新近出现的术语。请注意,这会导致处理成本和延迟。为了避免成本/延迟,您必须提前决定限制集群使用的条件:如果您对目标主题感兴趣,可以这样做。