gpt4 book ai didi

algorithm - 我如何衡量某些词的趋势,比如 Twitter?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:21:40 24 4
gpt4 key购买 nike

我每天都有报纸文章的语料库。语料库中的每个单词都有当天出现的频率计数。我一直在尝试寻找一种算法来捕获中断词,类似于 Twitter 衡量人们推文趋势的方式。

例如,假设“经济衰退”一词在同一组报纸中出现的频率如下:
第 1 天 |经济衰退 | 456
第 2 天 |经济衰退 | 2134
第 3 天 |经济衰退 | 3678

虽然“欧洲”
第 1 天 |欧洲 | 67895
第 2 天 |欧洲 | 71999
第 3 天 |欧洲 | 73321

我正在考虑将每天的增长百分比乘以频率总和的对数。然后我会取平均来打分并比较各种单词。

在这种情况下:
经济衰退 = (3.68*8.74+0.72*8.74)/2 = 19.23
欧洲 = (0.06*12.27+0.02*12.27)/2 = 0.49

有没有更好的方法来捕捉爆炸式增长?我正在尝试挖掘每日语料库以查找在特定时间段内越来越多地提及的术语。请让我知道是否有更好的算法。我希望能够找到具有高非恒定加速度的单词。也许采用二阶导数会更有效。或者,也许我让这种方式太复杂了,并且在发现 channel 上看了太多物理节目。如果可能的话,请通过数学示例告诉我谢谢!

最佳答案

首先要注意的是,这可以通过局部问题来近似。也就是说,一个“趋势”一词实际上只取决于最近的数据。因此,我们可以立即将数据截断到最近的 N 天,其中 N 是一些通过实验确定的最佳值。这显着减少了我们必须查看的数据量。

事实上,NPR article建议这个。

然后您需要以某种方式看待增长。而这正是衍生品所捕捉到的。首先要做的是规范化数据。将所有数据点除以第一个数据点的值。这使得不常用词的大幅增长不会被流行词相对较小的增长所淹没。

对于一阶导数,做这样的事情:

d[i] = (data[i] - data[i+k])/k

对于一些实验确定的 k 值(在这种情况下,它是天数)。同理,二阶导数可表示为:

d2[i] = (data[i] - 2*data[i+k] + data[i+2k])/(2k)

高阶导数也可以这样表示。然后你需要为这些衍生品分配某种加权系统。这是一个纯粹的实验过程,实际上取决于您要考虑“趋势”的内容。例如,您可能希望为增长加速度赋予速度一半的权重。另一件需要注意的事情是,你应该尽量从你的数据中去除噪音,因为衍生品对噪音非常敏感。您可以通过仔细选择 k 的值并完全丢弃频率非常低的词来做到这一点。

我还注意到您乘以频率的对数和。我想这是为了给流行词的增长更多的权重(因为更流行的词首先不太可能成为趋势)。衡量一个词流行程度的标准方法是查看它的 inverse document frequency。 (以色列国防军)。

我会除以一个词的 IDF,以赋予更受欢迎的词更大的增长权重。

IDF[word] = log(D/(df[word))

其中 D 是文档总数(例如,对于 Twitter,它将是推文的总数)而 df[word] 是包含 word(例如,包含一个词的推文数量)。

高 IDF 对应一个不受欢迎的词,而低 IDF 对应一个流行词。

关于algorithm - 我如何衡量某些词的趋势,比如 Twitter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8482800/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com