我正试图在Twitter上实时检测热门话题。我正在做的是每次收到推文时,我都会将推文分配给群集,该群集与推文相同。无论我使用的聚类算法或我如何为主题分配推文,我都无法找到如何检测趋势主题。
我对趋势群集/主题的理解或定义是,在某段时间内,它被分配的推文比其他群集更多。或者更新群集大小的频率高于其他群集。
如何将该定义转换为实际代码或数学模型是我无法解决的问题。
这是一个关于趋势群集大小如何发展的示例:
如您所见,群集大小将为零,然后突然开始增加,因为现在它是一个热门话题,并且正在将推文分配给群集。一旦群集不再是热门话题,那么群集大小将保持相对静态。
答案 0 :(得分:2)
您似乎正在尝试检测绘制的图形曲线的斜率高于某个阈值的情况。但是你没有连续的曲线,而是你有一个采样点,一个用于每个推文到一个簇的分配。两个这样的样本点在理论上可以定义一个斜率,但是这些斜率看起来非常颠簸:两个推文紧密连接在另一个无聊的话题上会突然变成趋势。为避免这种情况,您必须以某种方式平滑数据。一种可能的方式是使用滑动窗口,跨越固定的时间量(例如两小时)或固定数量的推文。所以你可以制定像
这样的门槛作为这样的门槛,上面的两个公式实际上是等价的。如果您必须使用单个数字衡量时尚,那么这两者之间会有所不同。
如果这种简单的方法不适合你,你可能想在Cross Validated询问,你也可能会研究各种峰值检测算法,因为这实际上是在斜率函数中找到峰值的问题
答案 1 :(得分:0)
考虑到原始问题的日期,这可能为时已晚,但可能没有。考虑到您的问题后的时间,您可能有数据知道趋势线形状的样子。现在你所要做的就是将它标准化,例如在-1,0,1之间,并分析你的实时数据,也进行标准化,以获得匹配。如果实际数据与线形之间的差异低于阈值,则趋势正在进行中,您可以发出警报。
一