如何在Spark中使用KMeans对推文进行聚类?

我想根据主题对推文进行聚类(例如,将所有关于亚马逊的推文聚集在一个簇中,所有关于Netflix的推文聚集在另一个簇中,等等)。问题是,所有传入的推文已经根据这些关键词进行了过滤,但它们是混杂在一起的,我只是在它们进来时对它们进行分类。

我正在使用Spark流处理,并希望找到一种方法来向量化这些推文。因为这是批处理,我无法访问整个推文语料库。


回答:

如果你有一个预定义的词汇表,其中可能同时选择了多个术语——例如,一组你感兴趣的非互斥tweet类别——那么你可以有一个二进制向量,其中每个位代表一个类别。

如果类别是互斥的,那么你希望通过聚类实现什么?具体来说,不会存在一些观察属于类别集A,其他属于类别集B,还有一些属于两者之间的组合的“灰色区域”。如果每个观察都严格限定在一个类别内,那么你拥有的就是离散的而不是簇。

如果你希望根据相似的词集进行聚类——那么你可能需要预先知道“词汇表”——在这种情况下,这意味着:“我关心的推文术语是什么”。在这种情况下,你可以使用词袋模型https://machinelearningmastery.com/gentle-introduction-bag-words-model/来比较推文——然后根据生成的向量进行聚类。

现在,如果你事先不确定词汇表——这在你不知道下一篇推文的内容的情况下很可能发生——那么你可能会定期进行重新聚类——因为你获得了新词。你可以使用一个更新的词袋,其中包括新“看到”的术语。请注意,这会带来处理成本和延迟。为了避免成本/延迟,你必须提前决定限制聚类的术语:如果你是针对特定主题感兴趣的,这可能是可能的。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注