一种生成事件脉络的方法
本文介绍一种生成新闻事件脉络的方法,该方法已经应用于百度新闻的新闻事件专题页中。
前言
对于一些延续时间较长的新闻事件,我们希望通过机器挖掘的手段,抽取出事件发展的重要阶段,称为事件的脉络信息;使得用户能够通过脉络信息,直观的了解该事件发展的过程。比如:在中国协助智利解救被困矿工一事的专题页中,展现如下的事件回顾信息,能够帮助用户迅速的领略该事件的来龙去脉。
图1:事件专题页
图2:事件的脉络信息
问题描述
输入:关于某一事件的相关新闻集合,包含的新闻量最好多于10篇;我们实验用的数据,是利用文本聚类得到的新闻簇,新闻簇的大小从几十到几百篇都有。(得到事件新闻集合的方法,还可以通过事件检测与跟踪的办法,或者通过获取搜索引擎的返回结果等方法,新闻集合的质量越好,覆盖的时间窗越长,对挖掘脉络越有利)
输出:事件的脉络信息,简单一些,就是:给出一个重要新闻的列表,这些重要的新闻涵盖了该事件的各个重要阶段的重要信息。
挖掘方法
这里介绍的方法,是想通过分析新闻媒体对事件跟踪报道的变化,来拟合新闻事件的发展阶段的变化。这种方法主要是从新闻的外部属性(主要是发布时间和转载情况)进行分析,前提假设是:在事件有重要进展的阶段时,就会有一些高质量的新闻跟进报道,而且越是重要的进展,报道越多越集中。实验的结果也验证了这一假设是成立的。
时间片聚类
我们使用了一种叫做时间片聚类的方法,来发现事件发展的主要阶段。
对于每一篇新闻,我们抽取出该新闻的发布时间;然后按照新闻的发布时间,把一个新闻事件集合内的新闻进行排列。如果把新闻按照发布时间投影到时间轴上,如果事件有明显的发展阶段,根据前面的设想,就能在时间轴上看到一些新闻比较密集的区域,这些区域就是我们要获取的事件的各个阶段。
至于如何获取新闻比较密集的时间片段,可选的方法有很多种。这里介绍一种利用凝聚层次聚类的方法,将时间轴切分成若干个片段的方法。
先把每篇新闻看成一个时间片段(其实是一个点),然后每次合并距离最近的两个片段,直到任意两个片段之间的距离都大于一个预先设定的阈值。这是凝聚层次聚类的基本做法,选用层次聚类的一个主要原因是:它不需要事先指定要得到的划分的个数,而一些其他常见的聚类算法,如k-means,k-mediods等方法。而我们也确实很难提前确定一个事件应该切分成几个阶段。
影响聚类效果的另一个重要因素,就是“距离”的计算,在本问题中,则是两个时间片段之间的“距离”的计算。在尝试对比了最短距离、最长距离和平均距离之后,我们选择了平均距离作为度量的指标,即计算两个片段内的新闻两两之间的距离的平均值,公式如下:
A,B表示两个片段。其中a1,a2,…,an是A片段内的n篇新闻,b1,b2,…,bm是B片段内的m篇新闻。dist(a,b)是新闻a和新闻b之间的发布时间间隔。
代表新闻的选取
通过时间片聚类的办法,获取到了事件的若干个进展以后,则要从每个进展的新闻集合中,抽取出一篇代表新闻。
具体的策略,可以根据具体的产品需求来定。一般都会考虑如下因素:新闻来源的站点是否权威,该新闻的发布时间(在同一个片段内而言),该新闻是否有更多的转载等等。
如果要求更多媒体化,还可以从新闻集合中,抽取出相应的图片,视频等相关资源。
一些改进的办法
新闻时间距离
为了改进时间片聚类的效果,在计算新闻之间的时间距离时,我们用到了“新闻时间距离”的概念。一天有24个小时,各个小时的新闻发布数量是有很大差别的。通过统计,我们能看出,新闻发布的高峰是在8:00~11:30,以及14:00~16:00。统计不同时间段的新闻发布数量,对于后续的时间片聚类是有帮助的。
“新闻时间距离”是相对于“自然时间距离”来说的,一天24小时,每个小时的跨度是一样的,即从凌晨2点到凌晨3点的时间间隔,和上午9点到上午10点的时间间隔都是1个小时。但是对于新闻来说,由于新闻发布并不是在24小时内均匀分布的,所以我们认为:在新闻发布高峰期间隔1个小时,要比在新闻发布的低谷期间隔一个小时,造成的时间跨度更长。
统计的方法是:按照每半小时为一个小时间片,统计每个时间段内的新闻发布数,求出各个时间段新闻数占所有时间片新闻总数的比值,这个比值可以用来重新分配24小时的时间长度,计算“新闻时间距离”。最终的结果可能是:在0点至6点之间的1个小时,在“新闻时间距离”中只有半个小时,甚至更少,而在9:00~11:00期间的一个小时,相当于2~3个小时。
新闻集合的去噪
在我们的实验中,还发现另外一个现象:各媒体对事件跟进报道的时效性不一,比如同样的新闻内容,新华网的报道更具时效性,在当前20:00就发布了,而一些小的新闻站点,则可能要等到第二天的9:00才发布,这样就导致描述同一阶段的新闻,往往会被分到不同的阶段中去,这样就影响了时间片聚类的效果。所以我们在进行时间片聚类之前,还进行了相似新闻的去重。
相似新闻去重的实现方法是:对新闻集合内的新闻,进行一次相似度,如果碰到文本相似度很高的新闻,则归档在一起,以最早的那篇新闻为代表新闻,参加时间片聚类。具体的做法是:按照新闻的发布时间由远及近的顺序,计算每篇新闻与之前的新闻的文本相似度,如果相似度太高,则认为可能是重复的内容,则把这篇新闻标记为更早的新闻的转载或者相近报道。
为了避免同一事件中的新闻太相似,我们还利用新闻集合中的所有新闻,抽取出了的事件的特征向量,利用该特征向量,对单篇新闻的特征向量进行一定程度的降权,从而放大新闻集合内的新闻之间的差异。
另外,如果新闻集合太大,则可以选取一些高质量的新闻来做精简,这样的噪音就更少了。在我们的试验中,主要是利用转载和站点权威性来做的过滤。
总结
本方法利用了新闻媒体对新闻事件的报道行为,来挖掘出新闻事件的发展阶段以及代表新闻,从而给用户提供简单明了的新闻事件脉络。主要利用了时间片聚类算法来自动将事件划分成若干个进展阶段,然后从各个进展阶段中,抽取出代表新闻。为了改善算法,还提出了一种“新闻时间距离”的度量方法;同时,还结合了文本内容分析的手段,来对新闻集合进行精简,去噪,改善脉络抽取的效果。
建议继续学习:
- Js事件监听封装(支持匿名函数) (阅读:3596)
- jQuery事件编写进阶 (阅读:3389)
- jQuery事件的冒泡过程 (阅读:2928)
- js中鼠标滚轮事件详解 (阅读:2469)
- 关于Javascript的俩个有趣的探讨 (阅读:2322)
- javascript事件:获取事件对象getEvent函数 (阅读:2231)
- 基于事件的社会化网站 (阅读:1888)
- C#的设计缺陷(1):显式实现接口内的事件 (阅读:1449)
- 使用jquery卸载全部事件 (阅读:970)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:editor 来源: 搜索研发部官方博客
- 标签: 事件
- 发布时间:2011-06-21 13:36:39
- [54] IOS安全–浅谈关于IOS加固的几种方法
- [52] android 开发入门
- [52] 如何拿下简短的域名
- [51] 图书馆的世界纪录
- [49] Oracle MTS模式下 进程地址与会话信
- [49] Go Reflect 性能
- [47] 【社会化设计】自我(self)部分――欢迎区
- [46] 读书笔记-壹百度:百度十年千倍的29条法则
- [36] 程序员技术练级攻略
- [29] 视觉调整-设计师 vs. 逻辑