apache-spark - 如何使用 KMeans 在 Spark 中对推文进行聚类?
问题描述
我想根据主题对推文进行聚类(例如,一个集群中的所有亚马逊推文,另一个集群中的所有 Netflix 推文,等等)问题是,所有传入的推文都已经根据这些关键字进行了过滤,但是它们被混淆了,我只是在它们进来时对其进行分类。
我正在使用 Spark 流,并正在寻找一种方法来矢量化这些推文。因为这是批处理,所以我无法访问整个推文语料库。
解决方案
如果您有一个预定义的词汇表,其中可能同时选择了多个术语 - 例如您感兴趣的一组非互斥 tweet
类别 - 那么您可以拥有一个二进制向量,其中每个位代表一个类别。
如果类别是互斥的,那么您希望通过聚类实现什么?具体来说,不会有“灰色区域”,其中一些观测属于 CategorySet-A,其他观测属于 CategorySet-B,其他观测属于某个中间组合。如果每个观察都被固定在一个类别中,那么您将拥有离散 点而不是集群。
相反,如果您希望基于相似的词集进行聚类——那么你可能需要预先知道“词汇”——在这种情况下,这意味着:“我关心的推文术语是什么”。在这种情况下,您可以使用bag of words
模型 https://machinelearningmastery.com/gentle-introduction-bag-words-model/来比较推文 - 然后根据生成的向量进行聚类。
现在,如果你不确定先验词汇——这很可能是这种情况,因为你不知道下一条推文的内容是什么——那么你可能会定期重新聚类——当你获得新词时. 然后,您可以使用包含新“看到”术语的更新。 bag of words
请注意,这会产生处理成本和延迟。为了避免成本/延迟,您必须提前决定限制您的集群的条款:如果您对目标主题感兴趣,这可能是可能的。
推荐阅读
- python - 如何读取带有换行符的字符串并存储到 Pandas 数据框或 python 列表中
- r - 如何在 Github 的 README 中添加 R-CMD-check 状态
- html - 如何在用户搜索的网站顶部获取信息?
- php - php如何设置不同类型的抛出错误
- javascript - 使用带有 JavaScript 的递归函数来显示键值对的最优雅的方式是什么?
- java - RecyclerView 中的复选框无法正常工作
- azure - Azure Cli 如何为 webapp 启用 Application Insights
- javascript - 如何将 Amazon S3 存储桶中的 javascript 连接到 Amazon 时间服务器?
- c++ - 如何调试linux服务器上的死锁?
- amazon-web-services - 我是否需要为我的免费级别 AWS 账户支付一些费用?我现在该怎么办?