0

我正在尝试实时检测 Twitter 上的热门话题。我所做的是每次收到推文时,我都会将推文分配给与推文讨论相同主题的集群。无论我使用何种聚类算法或如何将推文分配给主题,我都无法找到如何检测趋势主题。

我对趋势集群/主题的理解或定义是,在特定时间段内,它比其他集群获得更多的推文。或者更新集群大小的频率大于其他集群。

如何将该定义转换为实际代码或数学模型是我无法解决的。

这是趋势集群大小如何发展的示例: 在此处输入图像描述

如您所见,集群大小将为零,然后突然开始增加,因为现在它是一个热门话题,并且正在将推文分配给集群。一旦集群不再是热门话题,那么集群大小将保持相对静态。

4

2 回答 2

3

您似乎正在尝试检测您绘制的图形曲线的斜率高于某个阈值的情况。但是你没有连续的曲线,而是有样本点,每个推文分配给一个集群。理论上,两个这样的样本点会定义一个斜率,但这些斜率看起来会非常崎岖不平:在一个原本无聊的话题上连续两条推文会突然使它成为趋势。为避免这种情况,您必须以某种方式平滑数据。一种可能的方法是使用滑动窗口,跨越固定的时间量(例如两个小时)或固定数量的推文。所以你可以制定一个阈值,比如

  • 如果最后x分钟内的推文数量超过y
  • 如果第y到最后一条推文的时间不超过x分钟前,那就是趋势

用这样的阈值来表达,上面的两个公式实际上是等价的。如果您必须使用单个数字来衡量时尚度,那么这两者之间就会有所不同。

如果这种简单的方法不适合您,您可能想在Cross Validated上提问,并且您还可以研究各种峰值检测算法,因为这本质上是在斜率函数中找到峰值的问题。

于 2013-07-15T10:05:00.847 回答
0

考虑到原始问题的日期,这对您来说可能为时已晚,但可能不会。鉴于您提出问题以来的时间,您可能有数据知道趋势线的形状是什么样的。现在您所要做的就是对其进行标准化,例如在 -1,0,1 之间,然后分析您的实时数据(也已标准化)以进行匹配。如果真实数据和线形之间的差异低于阈值,则趋势正在进行中,您可以发出警报。

一个

于 2017-03-26T10:56:15.480 回答