With your perfect help here我已经知道了如何计算热门话题(标准分数+浮动平均值)。
我的下一个问题:我的数据库中有与它们被提及的时间相关的术语(由1-3个单词组成)。但是,热门主题总是只有一个单词的术语,因为术语的一个部分总是比整个术语更常被提及。例如:昨天有3篇新闻文章是关于“巴拉克·奥巴马”的,今天有148篇。当然,“巴拉克·奥巴马”正在崛起。但“巴拉克”也在崛起,因此它是一个热门话题。
当我计算热门话题时,如何包含术语的长度?我不想使用另一种算法,我对上面的算法非常满意。我可以将所有两个单词的分数乘以1.5左右吗?
详细的例子:我最热门的趋势是:微软,中国,希拉里·克林顿,达拉斯小牛。我想说的是,“希拉里·克林顿”和“达拉斯小牛”从来都不是no1或no2,因为它们只有两个单词。“微软”和“中国”是一个单词的术语,所以它们的排名总是更好。有没有可能解决这个问题?
我希望你能帮助我。提前感谢!
发布于 2009-06-06 07:34:17
说到奥巴马,是的,你可以。:)
也许你可以在输出之前测试一下你的高趋势是否包含在低趋势中。我会尝试像这样的东西:
示例:你有
如果你想输出的列表不太长(就像你只取100个最好的分数),你只选择那些不包含在其他列表中的分数,可能会在包含其他分数的列表中增加50%的奖金。(您可能需要获取150个第一个值,然后进行删除冗余的处理,可能会达到大约110个值,然后修剪最后10个值以恢复100个值。)
“巴拉克·奥巴马”包含“巴拉克”和“奥巴马”,所以你可以给它100%的奖励,你的清单可能会变成:
希望它不会太多地改变你的算法,但实际上你可以在输出之前在最后插入这个处理。
编辑:
或者,如果你真的没有列出最好的分数,而只是一个接一个地计算,你可以拆分你的趋势来计算其组成部分的深思熟虑的总和(比如“巴拉克·奥巴马”的趋势是“巴拉克·奥巴马”的+0.5*“巴拉克”的+0.5*“奥巴马”的)。
发布于 2009-06-07 13:04:41
基于@subtenante的答案,你应该寻找的公式应该基于这样一个事实,即“巴拉克·奥巴马”总是包含“巴拉克”和“奥巴马”……
所以简单的数学会表明它应该是:
"Barack"s + "Obama"s - "Barack Obama"s..。当然,假设您的部分术语只存在于正确的上下文中,无论是单独出现还是组合成完整的术语-即“巴拉克”总是指“巴拉克·奥巴马”(而不是“奥巴马”)。“埃胡德·巴拉克”)。
https://stackoverflow.com/questions/939938
复制相似问题