最近在帮朋友做一个关于“热点新闻发现”的需求。先解释下什么是热点新闻发现:即在海量的新闻文本中,找到内容相似的那一类新闻,如果这类新闻的数量达到一定阈值,便认为该类新闻属于热点新闻。
其实这一类型的课题早在几年前就已经开始研究,属于TDT(Topic Detecting and Tracking话题检测与发现)分支之一,而且方法也较为成熟,多半是在文本分析的基础上利用数据挖掘中聚类知识进行处理。
但是,笔者遇到的这个需求较为特殊:
第一,这里的文本类型是互联网搜索引擎爬下来的“新闻”;
第二,数据量大约是10W-100W之间;
第三,需要程序单机处理,并且硬件配置和普通PC无异(双核CPU,内存4G左右);
第四,程序要求在30分钟内处理完毕;
最后,程序得到的热点新闻必须在新浪、网易、腾讯等大型门户网站上有相关新闻。
(哎,这就是小公司的悲哀,老板们总希望用最小成本获得最大收益,“又想马儿跑又想马儿不吃草”,天下哪有这等便宜事,但是谁叫他是老板,作为“码农”,还是得想尽办法去满足老板的需求。)
理想情况,假设硬件资源充足的情况下,大家会怎么处理?
上图为简易的传统处理流程,如果硬件资源充足,即认为内存无上限,为了达到较快的运行时间,开发者理所当然将存储在硬盘上的文本文件全部Load进内存,然后:
1)对每篇新闻进行分词:文本分析中对文本进行分词处理是每篇文本特征化的第一步;
2)文本特征化:使用这种<分词,词频>来特征化每篇文本,当然你也可以使用较为常用的TF-IDF(即词3频-逆文档率)来进行特征化;
3)聚类:当获得每篇文本特征化表示方式后,开发者可以使用层次聚类、基于密度的聚类或者比较常用的划分式聚类(比如:k-means)来进行聚类分析;
4)过滤处理:对聚类后的所有类簇进行匹配,如果类簇中的新闻数量未达到阈值则将其过滤,否则认为该类属于热点新闻。
理想很美好,现实很骨感。老板给的硬件环境只是普通PC,为了不发生OOM(out of memory)的事件,这就使得开发者不可能将所有数据load至内存。是否有其他解决办法呢?也许有人想到,是不是可以采用类似外排序那种处理方式,处理一部分数据后将其结果保存至外存储,然后再处理下一步部分数据,如此循环,最后对所有结果进行归并。
是滴,这确实是一个好办法,即传说中的用时间换空间。但是万恶的老板要求,所有数据必须在30分钟内处理完毕,时间条件上不允许,并且传统的聚类算法处理时间随着数据量的增长往往呈非线性增长趋势,在时间上也较难满足笔者需求。
正像其他的数据挖掘问题一样,熟悉业务可能比会使用“牛B”的算法更为重要。为了解决上述问题,笔者对业务本身以及数据源特征进行了梳理,并总结出“某些经验”(这是基于对业务理解所产生的,可能并不一定具有普遍性,但是如果读者的业务也和笔者相似,可以举一反三试用下)形成了下述流程。
如图所示,与理想情况相比,新流程多了无效新闻过滤环节和二次聚类环节,并且在第一次聚类过程中特征化方式不一样,这些都是基于业务经验总结出来的,详述如下:
1) 无效新闻过滤:由于互联网上的新闻质量参差不齐以及爬虫本身的问题,所以往往会导致无效新闻的产生,笔者将其分为四类——a)新闻标题为空;b)新闻正文为空;c)新闻正文内容过短;c)新闻标题与正文内容不符。
其中,前三类过滤非常简单,只需判断是否为空或者检查字符串个数是否达标即可,而新闻标题与正文内容不符笔者是这么处理的:
首先,将标题进行分词(分词过程中需过滤无效词);
第二,定义同义词库,查找出分词后标题词元的同义词;
第三,在正文中查找是否出现标题词元,如果出现的词元个数大于阈值,即认为标题与正文相符(比如,标题词元有4个,在正文中出现了3个,阈值为2,则相符);否则,再将标题词元的同义词进行匹配,如果正文中匹配的个数大于阈值,也认为标题与正文相符;否则,判定为新闻内容与标题不相符。
(Tip:其实这个匹配过程属于多字符串匹配过程,笔者选用AC算法进行处理。)
最后,即可获得有效新闻,通过此步骤,可以过滤掉大量无效新闻,优化后续处理步骤的空间和时间。
2) 初次聚类:在第一次聚类过程中,笔者的特征提取方式和普通文本特征提取不太一样(传统处理可能选词频或者TF-IDF作为文本特征),笔者选取每篇文本的最长句作为新闻文本特征。这是基于业务特性的经验总结,因为笔者发现互联网上的新闻发表方式多为转载,或者是在各大门户网站所发表新闻的基础上进行局部修改。在此步骤中,如果两篇文章中最长的一句话是相同的,笔者即认为它们是相似新闻。
在此步骤中,笔者将最长句作为文本特征,并采用Hashtable作为存储结构,其中key:是文本最长句,而value是具有该最长句的新闻集合。
3) 过滤初次聚类结果:在此步骤中,笔者设定了过滤阈值,如果某个类簇(新闻集合)中新闻数量低于阈值,则将其过滤。
当然,读者会说,此时最好不应该进行过滤,因为通过后续第二次聚类处理,某些小于阈值的类簇有可能形成一个大类簇。对,这确有可能发生,笔者之所以这么做,是在精确度和时空复杂度之间进行了取舍,如果加入此过滤步骤,将会为第二次聚类优化大量时间和空间。
4) 二次聚类:或许读者已发现初次聚类并不是一个十分严谨的聚类,假如两篇文本内容相似但是不拥有相同的最长句,那么它们很可能被拆分成两类新闻,而这步骤便是要解决该问题。
经过对初次聚类结果过滤后,其实此时得到的类簇数量已经远远低于最开始的新闻文本数量(笔者针对自己的数据实验,最开始时新闻文本数量有30W,经过初次聚类并过滤后将只剩下2k个类簇),此时选取每个类簇的新闻标题作为原始文本,采用理想硬件条件下的普通的聚类方式进行聚类处理,即完成了二次聚类。
(虽然普通的聚类方式会随着数据量增加时间会曾非线性增长,但是经过多次过滤处理,第二次聚类过程所处理的数据量已骤减(只有2K左右),因此可以选用该算法。)
5) 最后,再将二次聚类合并后的类簇进行阈值过滤,即得到热点新闻。
(TIP:在该步过滤环节中,笔者还引入了指定网站过滤——即如果某个类簇中不包含五大网站(sina/sohu/qq/ifeng/163)的新闻便将其过滤,原因是考虑到五大网站的影响力和权威性,如果连它们都没有录入新闻,我们有理由认为这类新闻很难成为热点新闻。)
总结一下,笔者的解题思路其实是遵循这么一个模式:为了解决时间和空间问题,需要一步一步的过滤或合并数据,但是每次在过滤或合并数据时选择的处理方式的效率一定要高,即要考虑收获与成本之间的差异,即多引入一个流程所带来的时空开销一定要远远小于后续流程所节省的时空量;其次是关于算法准确率问题,为了获得时空上的优化可能是需要牺牲算法准确率(比如初次聚类的过滤问题),笔者建议读者最好多准备几组实验数据以确定阈值,从而达到准确率和时空复杂度之间的平衡。
相关推荐
热点发现算法是网络舆情监控的关键技术之一,可以帮助相关部门及时发现和处理网络舆情热点,从而引导舆情方向。 热点发现算法的主要作用是从海量的网络舆情信息中快速准确地发现热点事件和话题。这些热点可能涉及到...
文本挖掘技术在处理网络舆情数据时,能够对网络上的大量文本信息,如论坛帖子、新闻评论、博客文章等进行分析处理,通过自然语言处理技术对文本内容进行语义分析,提取出话题、情感倾向和实体等关键信息。...
在李子柒爆红事件的舆情监测报告中,这种方法的使用可能会揭示舆情发展的关键节点、热点话题的生命周期、以及不同信息传播渠道的效果对比等。通过大数据监测,能够实现对舆情变化的迅速响应和预测,这对于品牌运营、...
文中可能会提供一些实际案例,展示了使用上述技术和方法成功监测到的突发新闻事件,如自然灾害、社会事件或热点话题,以证明该系统的实用性和准确性。 总之,《Twitter突发新闻事件监测跟踪》分享涵盖了从获取...
医护人员可以通过关注专业医学网站、参与医生社区讨论,以及监测社交媒体上的热点话题,来发现潜在的新闻线索。 1.3 关注政策与科研进展 医疗新闻还包括政策变化、科研成果和新技术的应用。通讯员需要关注国家卫生...
该系统通过数据挖掘技术,提取新闻内容和用户评论的关键信息,然后利用文本分析和自然语言处理(NLP)方法来识别热点话题和情感倾向。 主要特性和功能可能包括: 1. **数据爬取**:定期从网易新闻网站抓取新闻标题...
1. 数据驱动的新闻报道:通过分析社交媒体、搜索引擎等平台的大数据,新闻机构可以实时了解公众关注的热点话题,提前预测新闻事件的发展趋势,从而制定更具针对性的报道计划。 2. 内容个性化:利用用户行为数据,...
通过监测和分析社交媒体上的热点话题,新闻机构可以快速捕捉到公众的关注点,提前布局报道。例如,通过爬取微博、微信等平台的数据,记者可以发现潜在的新闻线索,提前介入事件,提高新闻的时效性。同时,大数据分析...
2. 热点识别:通过对大数据的分析,系统能快速识别出当前的热点链接,这些链接可能与新闻事件、热门话题或者用户关注的焦点相关。 3. 链接排序:根据链接的热度和相关性,系统会进行智能排序,将最相关的、最热门的...
3. **中文分词与相似度分析**:利用中文分词技术将新闻文本切分为有意义的词汇单元,再结合中文相似度算法对不同新闻之间的相似性进行评估,从而发现热点话题和趋势。 4. **趋势分析与可视化展示**:通过对新闻数据...
而通过对新闻报道的分析,模型可以挖掘出新闻报道中的关键词、舆情数据等信息,为编辑和新闻工作者提供参考,并且能够迅速发现热点话题,做出迅速反应。 三、内容创作者助手 在信息时代,新闻报道的更新速度很快,...
尽管如此,国内外的研究仍处于起步阶段,且侧重于舆情监测系统、话题监测、传播机制等方面的探讨。 活动在本质上是一个事件,因此在监测与分析时既需要借鉴网络舆情的基本方法,也需要融入网络情报研究的方法,从多...
4. **互联网云数据分析处理子系统**:对收集到的信息进行智能分析,识别关键词、热点话题、情感倾向等,提供深度洞察和趋势预测。 在性能需求部分,系统需要能够快速响应用户请求,处理大量并发任务,同时保证数据...
话题提取模型主要解决的是如何从大量的信息中,特别是网络社区中,识别和提取出人们关注的热点话题和事件,这不仅对于舆情监测和管理具有重要意义,而且对于Web数据挖掘、个性化推荐、主题发现和预测趋势等领域也...
1. **个人用户视角**:智能热点发现系统能够实时分析大量网络数据,如社交媒体、新闻网站、论坛等,提取出最受关注的话题,使用户能够第一时间了解到社会动态,满足信息需求。 2. **企业应用**:企业可以通过分析...
7. **网络舆情热点自动发现**:系统能够分析和追踪热点新闻,快速定位舆情爆发点和事态发展。通过统计新闻的传播链,提供不同时间段的热点新闻排行,帮助理解舆情传播情况。 8. **多维度关联的舆情展现**:系统自动...
通过监测和分析微博上的热门话题,可以及时捕捉到社会动态,预测可能的趋势,这对于新闻报道、市场营销和舆情监控都具有实际应用意义。 项目的实施时间从2013年6月开始,预计到2014年12月结束。项目团队由陈梦园、...
- **主题模型**:如LDA(Latent Dirichlet Allocation),用于发现新闻中的主要话题。 - **趋势分析**:通过时间序列分析,揭示新闻热点的变化规律。 4. 数据存储 - **SQLite**:轻量级数据库,适用于小规模数据...