热词统计发现算法3则
来源:互联网 发布:淘宝默认头像 编辑:程序博客网 时间:2024/04/29 22:51
2013-06-27 16:17 84人阅读 评论(0) 收藏 举报
目录(?)[+]
转载于http://qing.blog.sina.com.cn/2090594487/7c9bf0b733001jsa.html
以搜索为例,点击类似。所有变换和简化须不影响排序结果。
排位变化
最初的算法参考电影排行榜,统计昨日Top词、前日Top词,然后计算每个词w两天的排位差,排位变化最大的就是最热的词。
排序取出取出排位前 N 的词语集合。
WZ为昨日搜索词TopN集合,WQ为前日搜索词TopN集合。
SortBySearchCount(WZ, Desc)
SortBySearchCount(WQ, Desc)
for each(w in WZ)
{
if(w in WQ)
PositionChange = Position( w,昨日) - Position( w,前日 )
else
PositionChange = Position( w,昨日) - ( N + 1 )
}
SortByPositionChange( WZ)
此算法比较笨,必需做三次排序,但是挑选出的词语效果还是比较好的。
注意,根据上述方法,词条这两天的排位差PositionChange 越小,表示其越火。PositionChange 可以为负值。
----------备注----------
举例:对于在集合WZ中的词条w,给出几种情况:
(1)假设词条w这两天比较火,即分别出现在昨天和前天的词条集合WZ和WQ中了,则
假设昨天拍在第3位,前天排在第5位,则该词条上升了两位。此时PositionChange = -2.
假设昨天拍在第5位,前天排在第3位,则该词条下降了两位。此时PositionChange = 2.
(2)假设词条w只在昨天的集合WZ中,但是不在前天的集合WQ中,则
假设昨天拍在第3位,又因为N = 100,则98位。此时PositionChange = -98.
又因为PositionChange 越小(-98<-2<2),表示其越火,根据排序,可以得到第三情况的词条最火。此时也符合实际情况。
变化率
算法很简单:今日次数/昨日次数,按照变化率排序即可。
WZ为昨日搜索词全集,WQ为前日搜索词全集。
CZ为昨日搜索总次数,CQ为前日搜索总次数。
Cz某词w昨日的次数,Cq某词w前日的次数
for each(w in WZ)
{
if(w not in WQ) {
Cq = 0
}
ChangeRate = (Cz+1)/(Cq+1) - 1
}
SortByChangeRate(WZ, Desc)
算法很简单,但是哪些前日访问很少的词语,就很占便宜了。
加权变化率
加权变化率是对于算法2的修正,考虑搜索量因素,将搜索量较小的词语加权小,而对于搜索量大的词语加权大,平衡一下访问量因素。此处的权值取两天内此词总共的搜索次数在全部搜索次数中的比例。
WZ为昨日搜索词全集,WQ为前日搜索词全集。
CZ为昨日搜索总次数,CQ为前日搜索总次数。
Cz某词w昨日的次数,Cq某词w前日的次数
for each(w in WZ)
{
if(w not in WQ) {
Cq = 0
}
ChangeRate = (Cz+1) / (Cq+1) - 1
Weight = (Cz+Cq) / (CZ+CQ)
RateWithWeight = ChangeRate * Weight
}
SortByRateWithWeight (WZ, Desc)
因为我们只考虑排序,所以可以对词算法进一步简化
RateWithWeight = ChangeRate * Weight
= ( (Cz+1) / (Cq+1) - 1 ) * (Cz+Cq) / (CZ+CQ)= (Cz-Cq) * (Cz+Cq) / (Cq+1) / (CZ+CQ)
因为CZ、CQ对于两天内的所有值都是一样的,所以可以不计算,不影响最后的排序结果。
可以取简化后的
RateWithWeight = (Cz-Cq) * (Cz+Cq) / (Cq+1)
-------------------------------分割线------------------------------------
小结
方法一:排位差
算法思想:根据词语每天出现次数求出其排在老几,之后计算两天的排位差,根据排位差求热度。
具体步骤:
(1)统计每一个词在昨天和前天出现的次数,并找出排位前 N 的词语集合
(2)对每一个词,计算每个词w两天的排位差
(3)根据词语的排位差进行排序,其中排位变化最大的就是最热的词。
评价:此算法比较笨,必需做三次排序,但是挑选出的词语效果还是比较好的。
方法二:变化率
算法思想:根据词语两天的出现次数求出其出现次数的比值,根据比值求出其热度。
具体步骤:
(1)统计每一个词在昨天和前天出现的次数,并找出排位前 N 的词语集合
(2)对每一个词,计算每个词w两天的变化率,即今日次数/昨日次数。
(3)根据词语的变化率进行排序,其中变化率最大的就是最热的词。
评价:算法简单,但是对于访问次数少但变化率大的词语会占便宜。
方法三:加权变化率
算法思想:根据词语两天的出现次数和其在总搜索次数的站的份额求出比值,根据比值求出其热度。
具体步骤:
(1)统计每一个词在昨天和前天出现的次数,并找出排位前 N 的词语集合
(2)对每一个词,计算每个词w两天的加权变化率,即(今日次数/昨日次数)* 该词这两天的总搜索次数在全部搜索次数中的比例。
(3)根据词语的加权变化率进行排序,其中加权变化率最大的就是最热的词。
评价:算法简单,弥补了变化率的缺点。
注意:求热词时,单纯比较每天词条的出现次数是不行的,重要的是比较多天之间的出现次数。
- 热词统计发现算法3则
- 热词统计发现算法3则
- 热词统计发现算法3则
- 热词统计发现算法3则
- 热词发现的算法都有哪些?
- 分词,新词发现和热词发现
- 统计热词
- 浅谈互联网环境下的热词发现技术
- 文本挖掘、文本聚类、热词发现流程图
- 小波折发现热部署
- 使用Mysql和NoSQL实现热词统计功能
- SparkSQL和Spark Streaming结合统计热词
- 热词的识别与提取算法
- 网页点击热力图统计
- 意外发现idea支持热部署,郁闷
- 拓扑自动发现算法
- 排序算法的发现
- 发现规律,优化算法
- 安装postgreSQL出现configure:error:readline library not found解决方法及pg安装全过程
- poj 3256
- Cocos2D-iphone 开发之(7) 纹理 精灵 动画
- mac下svn问题 —— “.a”(静态库)文件无法上传
- windows下载android源码
- 热词统计发现算法3则
- Android 内存优化
- Visual Studio 2010 自述文件(与之前版本的区别及注意事项)
- poj 1077 & hdu 1043 Eight ( 多种解法:预处理、bfs、dbfs、IDA*、A*)
- 关于百度主页别修改为“酷日历”的解决方法
- 红薯 video4linux2编程实例
- office 2007 打开2003 报 向程序发送命令时出错 的解决办法
- Unable to start T-SQL Debugging. Could not connect to the computer ‘.’
- 关于排序算法的一点知识——算法思想