一种生成事件脉络的方法

简介:

前言

对于一些延续时间较长的新闻事件,我们希望通过机器挖掘的手段,抽取出事件发展的重要阶段,称为事件的脉络信息;使得用户能够通过脉络信息,直观的了解该事件发展的过程。比如:在中国协助智利解救被困矿工一事的专题页中,展现如下的事件回顾信息,能够帮助用户迅速的领略该事件的来龙去脉。

图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才发布,这样就导致描述同一阶段的新闻,往往会被分到不同的阶段中去,这样就影响了时间片聚类的效果。所以我们在进行时间片聚类之前,还进行了相似新闻的去重。

相似新闻去重的实现方法是:对新闻集合内的新闻,进行一次相似度,如果碰到文本相似度很高的新闻,则归档在一起,以最早的那篇新闻为代表新闻,参加时间片聚类。具体的做法是:按照新闻的发布时间由远及近的顺序,计算每篇新闻与之前的新闻的文本相似度,如果相似度太高,则认为可能是重复的内容,则把这篇新闻标记为更早的新闻的转载或者相近报道。

为了避免同一事件中的新闻太相似,我们还利用新闻集合中的所有新闻,抽取出了的事件的特征向量,利用该特征向量,对单篇新闻的特征向量进行一定程度的降权,从而放大新闻集合内的新闻之间的差异。

另外,如果新闻集合太大,则可以选取一些高质量的新闻来做精简,这样的噪音就更少了。在我们的试验中,主要是利用转载和站点权威性来做的过滤。

 

总结

本方法利用了新闻媒体对新闻事件的报道行为,来挖掘出新闻事件的发展阶段以及代表新闻,从而给用户提供简单明了的新闻事件脉络。主要利用了时间片聚类算法来自动将事件划分成若干个进展阶段,然后从各个进展阶段中,抽取出代表新闻。为了改善算法,还提出了一种“新闻时间距离”的度量方法;同时,还结合了文本内容分析的手段,来对新闻集合进行精简,去噪,改善脉络抽取的效果。

 














本文转自百度技术51CTO博客,原文链接:http://blog.51cto.com/baidutech/743767,如需转载请自行联系原作者

相关文章
|
7天前
|
存储 安全 Java
事件的力量:探索Spring框架中的事件处理机制
事件的力量:探索Spring框架中的事件处理机制
23 0
|
测试技术 领域建模 定位技术
基于事件风暴的需求分析 | 方法案例一
事件风暴(Event Storming)源自领域驱动设计社区,由 Alberto Brandolini 在2012 年发明[1]。 事件风暴最早的名字是基于事件的建模(Event-Based Modeling),正如这个名字所暗示的,事件风暴在发明之初的核心目的是领域建模,在今天的大多数文献和实践中,事件风暴的核心关注点都是领域模型和软件架构。
3054 2
基于事件风暴的需求分析 | 方法案例一
|
9月前
用系统化思维来看今天的关窗事件
用系统化思维来看今天的关窗事件
|
JavaScript 前端开发
【重温基础】20.事件
【重温基础】20.事件
103 0
|
Android开发
事件分发四部曲之二《嵌套滑动事件分析》
事件分发四部曲之二《嵌套滑动事件分析》
事件分发四部曲之二《嵌套滑动事件分析》
|
运维 测试技术 程序员
程序员枪击事件引发的背后思考
程序员枪击事件在我所关注的知识分享公众号和技术群方面传播的比较广。 针对该事件我要谈谈我的看法。   针对该公众号所说的,因注释不写、代码排版差、非驼峰命名和天天git push -f导致该程序员枪击自己的四位同事。
1256 0