热词即当下流行的词汇,网络热词就是在网络上使用频率很高的词语或热炒受狂热追捧的网络现象
怎么才能判断热词呢?以搜索为例,点击类似。所有变换和简化须不影响排序结果。
排位变化最初的算法参考电影排行榜,统计昨日Top词、前日Top词,然后计算每个词w两天的排位差,排位变化最大的就是最热的词。
排序取出取出排位前 N 的词语集合。
WZ为昨日搜索词TopN集合,WQ为前日搜索词TopN集合。
SortBySearchCount(WZ, Desc)
SortBySearchCount(WQ, Desc)
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),表示其越火,根据排序,可以得到第三情况的词条最火。此时也符合实际情况。
算法很简单:今日次数/昨日次数,按照变化率排序即可。
Cz某词w昨日的次数,Cq某词w前日的次数
ChangeRate = (Cz+1)/(Cq+1) - 1
}
SortByChangeRate(WZ, Desc)
算法很简单,但是哪些前日访问很少的词语,就很占便宜了。
加权变化率是对于算法2的修正,考虑搜索量因素,将搜索量较小的词语加权小,而对于搜索量大的词语加权大,平衡一下访问量因素。此处的权值取两天内此词总共的搜索次数在全部搜索次数中的比例。
Cz某词w昨日的次数,Cq某词w前日的次数
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)根据词语的排位差进行排序,其中排位变化最大的就是最热的词。
评价:此算法比较笨,必需做三次排序,但是挑选出的词语效果还是比较好的。
算法思想:根据词语两天的出现次数求出其出现次数的比值,根据比值求出其热度。
(2)对每一个词,计算每个词w两天的变化率,即今日次数/昨日次数。
(3)根据词语的变化率进行排序,其中变化率最大的就是最热的词。
评价:算法简单,但是对于访问次数少但变化率大的词语会占便宜。
算法思想:根据词语两天的出现次数和其在总搜索次数的站的份额求出比值,根据比值求出其热度。
(2)对每一个词,计算每个词w两天的加权变化率,即(今日次数/昨日次数)* 该词这两天的总搜索次数在全部搜索次数中的比例。
(3)根据词语的加权变化率进行排序,其中加权变化率最大的就是最热的词。
评价:算法简单,弥补了变化率的缺点。
注意:求热词时,单纯比较每天词条的出现次数是不行的,重要的是比较多天之间的出现次数。
大家可以从直觉上迅速判断出,哪些词可以算作是 2 日的热词。比方说,“下雪”一词在 1日只出现了 33 次,在 2日却出现了 92 次,后者是前者的 2.8 倍,这不大可能是巧合,初步判断一定是 2 日真的有什么地方下雪了。“那些年”在 2 日的频数确实比 1 日更多,但相差并不大,我们没有理由认为它是当日的一个热词。
一个问题摆在了我们面前:我们如何去量化一个词的“当日热度”?第一想法当然是简单地看一看每个词的当日频数和昨日频数之间的倍数关系,不过细想一下你就发现问题了:它不能解决样本过少带来的偶然性。 2 日“李宇春”一词的出现频数是 1日的 4 倍,这超过了“下雪”一词的 2.8 倍,但我们却更愿意相信“李宇春”的现象只是一个偶然。更麻烦的则是“电磁炉”一行, 2 日的频数是 1 日的无穷多倍,但显然我们也不能因此就认为“电磁炉”是 2 日最热的词。
忽略所有样本过少的词?这似乎也不太好,样本少的词也有可能真的是热词。比如“北半球”一词,虽然它在两天里的频数都很少,但这个 9 倍的关系确实不容忽视。事实上,人眼很容易看出哪些词真的是 2 日的热词:除了“下雪”以外,“看见”、“北半球”和“脖子”也应该是热词。你或许坚信后三个词异峰突起的背后一定有什么原因(并且迫切地想知道这个原因究竟是什么),但却会果断地把“李宇春”和“电磁炉”这两个“异常”归结为偶然原因。你的直觉是对的—— 2 日发生了极其壮观的双子座流星雨,此乃北半球三大流星雨之一。白天网友们不断转发新闻,因而“北半球”一词热了起来;晚上网友们不断发消息说“看见了”、“又看见了”,“看见”一词的出现频数猛增;最后呢,仰望天空一晚上,脖子终于出毛病了,于是回家路上一个劲儿地发“脖子难受”。
让计算机也能聪明地排除偶然因素,这是我们在数据挖掘过程中经常遇到的问题。我们经常需要对样本过少的项目进行“平滑”操作,以避免分母过小带来的奇点。这里,我采用的是一个非常容易理解的方法:一个词的样本太少,就给这个词的热度打折扣。为了便于说明,我们选出四个词为例来分析。
下表截取了前四个词,右边四列分别表示各词在 1 日出现的频数,在 2 日出现的频数,在两天里一共出现的总频数,以及后一天的频数所占的比重。第三列数字是前两列数字之和,第四列数字则是第二列数字除以第三列数字的结果。最后一列应该是一个 0 到 1 之间的数,它表明对应的词有多大概率出现在了 2 日这一天。最后一列可以看作是各词的得分。可以看到,此时“下雪”的得分低于“李宇春”,这是我们不希望看到的结果。“李宇春”的样本太少,我们想以此为缘由把它的得分拖下去。
怎么做呢?我们把每个词的得分都和全局平均分取一个加权平均!首先计算出这四个词的平均总频数,为 313.75 ;再计算出这四个词的平均得分,为 0.719 。接下来,我们假设已经有 313.75 个人预先给每个词都打了 0.719 分,换句话说每个词都已经收到了 313.75 次评分,并且所有这 313.75 个评分都是 0.719 分。“下雪”这个词则还有额外的 125 个人评分,其中每个人都给了 0.736 分。因此,“下雪”一词的最终得分就是:
类似地,其他几个词的得分依次为:
容易看出,此时样本越大的词,就越有能力把最终得分拉向自己本来的得分,样本太小的词,最终得分将会与全局平均分非常接近。经过这么一番调整,“下雪”一词的得分便高于了“李宇春”。实际运用中, 313.75 这个数也可以由你自己来定,定得越高就表明你越在意样本过少带来的负面影响。这种与全局平均取加权平均的思想叫做 Bayesian average ,从上面的若干式子里很容易看出,它实际上是最常见的平滑处理方法之一——分子分母都加上一个常数——的一种特殊形式。
利用之前的抽词程序抽取出某网每一天内用户状态所含的词,把它们的频数都与前一天的作对比,再利用刚才的方法加以平滑,便能得出每一天的热词了。我手上的数据是某网 x 月上半月的数据,因此我可以得出从 x 月 某段时间的热词(选取每日前 5 名,按得分从高到低)。
date1: 第一场雪、北京、金隅、周末、新疆
date2: 荷兰、葡萄牙、死亡之组、欧洲杯、德国
date3: 那些年、宣传、期末、男朋友、升旗
date4: 教室、老师、视帝、体育课、质量
date5: 乔尔、星期二、摄影、经济、音乐
date6: 陈超、星巴克、优秀、童鞋、投票
date7: 曼联、曼城、欧联杯、皇马、冻死
date8: 保罗、月全食、交易、火箭、黄蜂
date9: 变身、罗伊、穿越、皇马、巴萨
date10: 皇马、巴萨、卡卡、梅西、下半场
date11: 淘宝、阿内尔卡、双十二、申花、老师
date12: 南京、南京大屠杀、勿忘国耻、默哀、警报
date13: 流星雨、许愿、愿望、情人节、几颗
date14: 快船、保罗、巴萨、昨晚、龙门飞甲
看来, date13 日果然有流星雨发生。
注意,由于我们仅仅对比了相邻两天的状态,因而产生了个别实际上是由工作日/休息日的区别造成的“热词”,比如“教室”、“老师”、“星期二”等。把这样的词当作热词可能并不太妥。结合上周同日的数据,或者干脆直接与之前整个一周的数据来对比,或许可以部分地解决这一问题。
事实上,有了上述工具,我们可以任意比较两段不同文本中的用词特点。更有趣的是,某网状态的大多数发布者都填写了性别和年龄的个人信息,我们为何不把状态重新分成男性和女性两组,或者 80 后和 90 后两组,挖掘出不同属性的人都爱说什么?要知道,在过去,这样的问题需要进行大规模语言统计调查才能回答!然而,在互联网海量用户生成内容的支持下,我们可以轻而易举地挖掘出答案来。
我真的做了这个工作(基于另一段日期内的数据)。男性爱说的词有:
兄弟、篮球、男篮、米兰、曼联、足球、蛋疼、皇马、比赛、国足、超级杯、球迷、中国、老婆、政府、航母、踢球、赛季、股市、砸蛋、牛逼、铁道部、媳妇、国际、美国、连败、魔兽、斯内德、红十字、经济、腐败、程序、郭美美、英雄、民主、鸟巢、米兰德比、官员、内涵、历史、训练、评级、金融、体育、记者、事故、程序员、媒体、投资、事件、社会、项目、伊布、主义、决赛、操蛋、纳尼、领导、喝酒、民族、新闻、言论、和谐、农民、体制、城管⋯⋯
下面则是女性爱说的词:
一起玩、蛋糕、加好友、老公、呜呜、姐姐、嘻嘻、老虎、讨厌、妈妈、呜呜呜、啦啦啦、便宜、减肥、男朋友、老娘、逛街、无限、帅哥、礼物、互相、奶茶、委屈、各种、高跟鞋、指甲、城市猎人、闺蜜、巧克力、第二、爸爸、宠物、箱子、吼吼、大黄蜂、狮子、胃疼、玫瑰、包包、裙子、游戏、遇见、嘿嘿、灰常、眼睛、各位、妈咪、化妆、玫瑰花、蓝精灵、幸福、陪我玩、任务、怨念、舍不得、害怕、狗狗、眼泪、温暖、面膜、收藏、李民浩、神经、土豆、零食、痘痘、戒指、巨蟹、晒黑⋯⋯
下面是 90 后用户爱用的词:
加好友、作业、各种、乖乖、蛋糕、来访、卧槽、通知书、麻将、聚会、补课、欢乐、刷屏、录取、无限、互相、速度、一起玩、啦啦啦、晚安、求陪同、基友、美女、矮油、巨蟹、五月天、第二、唱歌、老虎、扣扣、啧啧、帅哥、哈哈哈、尼玛、便宜、苦逼、斯内普、写作业、劳资、孩纸、哎哟、炎亚纶、箱子、无聊、求来访、查分、上课、果断、处女、首映、屏蔽、混蛋、暑假、吓死、新东方、组队、下学期、陪我玩、打雷、妹纸、水瓶、射手、搞基、吐槽、同学聚会、出去玩、呜呜、白羊、表白、做作业、签名、姐姐、停机、伏地魔、对象、哈哈、主页、情侣、无压力、共同、摩羯、碎觉、肿么办⋯⋯
下面则是 80 后用户爱用的词:
加班、培训、周末、工作、公司、各位、值班、砸蛋、上班、任务、公务员、工资、领导、包包、办公室、校内、郭美美、时尚、企业、股市、新号码、英国、常联系、实验室、论文、忙碌、项目、部门、祈福、邀请、招聘、顺利、朋友、红十字、男朋友、媒体、产品、标准、号码、存钱、牛仔裤、曼联、政府、简单、立秋、事故、伯明翰、博士、辞职、健康、销售、深圳、奶茶、搬家、实验、投资、节日快乐、坚持、规则、考验、生活、体制、客户、发工资、忽悠、提供、教育、处理、惠存、沟通、团购、缺乏、腐败、启程、红十字会、结婚、管理、环境、暴跌、服务、变形金刚、祝福、银行⋯⋯
不仅如此,不少状态还带有地理位置信息,因而我们可以站在空间的维度对信息进行观察。这个地方的人都爱说些什么?爱说这个词的人都分布在哪里?借助这些包含地理位置的签到信息,我们也能挖掘出很多有意思的结果来。例如,对北京用户的签到信息进行抽词,然后对于每一个抽出来的词,筛选出所有包含该词的签到信息并按地理坐标的位置聚类,这样我们便能找出那些地理分布最集中的词。结果非常有趣:“考试”一词集中分布在海淀众高校区,“天津”一词集中出现在北京南站,“逛街”一词则全都在西单附近扎堆。北京首都国际机场也是一个非常特别的地点,“北京”、“登机”、“终于”、“再见”等词在这里出现的密度极高。
以上就是本篇文章【热词】的全部内容了,欢迎阅览 ! 文章地址:http://dfvalve.xrbh.cn/quote/6483.html 行业 资讯 企业新闻 行情 企业黄页 同类资讯 网站地图 返回首页 迅博思语资讯移动站 http://keant.xrbh.cn/ , 查看更多