日期:2023-01-24 阅读量:0次 所属栏目:计算机应用
随着网络成为继报纸、无线广播和电视三大传统的传播媒体之后的“第四媒体”,网络舆情对社会的影响与日俱增。网络舆情成为最主要的社会舆情表述和传播方式之一。对于公司企事业单位,一些恶劣事件的披露很可能成为他们继续发展的绊脚石;对于社会,一些有损稳定,影响极为恶劣的言论很可能对社会造成极为恶劣的负面影响。由于这些信息往往呈现爆炸式增长,因此,舆情监控系统的一个重要目标即是及早的发现舆情发布源头,从而提醒管理者及时对其进行适当的控制。这就要求舆情监控系统最好能够做到在数小时甚至几十分钟之内能够抓取到新发布的舆论信息后立刻过滤出是否含有恶劣言论,这对舆情监控系统具有十分重要的意义。
目前舆情发现的方法研究可以基本归为两大类,一类是基于规则的文本内容关键词识别的方法【1,2】,一类是基于统计的机器学习文本分类方法【3~6】。第一类方法能够最大限度的在舆情未扩散之前的挖掘出网络中明显直接的舆情信息,但由于语义方面的局限性使得舆情信息的挖掘不够充分,第二类方法一般需要在一定数量的相关舆情记录出现后才能被挖掘,舆情信息的挖掘较为全面。目前有很多舆情监控系统采用这两类方法相结合的方式进行舆情监控[7,8]。
对于第一类方式,较为普遍,简单而有效的一种方式是预存储一些行业恶劣情感词库,比如高校教育行业里可设定自杀、罢课、贪污,猥亵等恶劣情感词,然后对从网络中抓取到的文本数据进行关键词字串正则匹配,匹配成功则过滤出一条舆情记录同时将匹配的关键词替换成高亮文本返回给用户。该方法虽然可行,但正则表达式的算法完成一篇文档的过滤需要对关键词集中每一个关键词进行循环匹配,时间主要消耗在循环调用、字符串匹配和文本高亮替换之上,算法效率较为低下,在一定程度上影响了舆情发现的时效性。该文提出基于搜索引擎的关键词查询过滤方法,能够最大限度的利用索引查询的高效性,把批量舆情信息过滤时间控制在较短时间内,较好的解决了恶劣舆情过滤的实时高效问题。
1 基于搜索引擎的关键词舆情过滤算法设计
在这一节中,先介绍搜索引擎背后的基本原理,然后详细介绍基于搜索引擎的关键词舆情过滤算法的设计与实现。
1.1 索引与布尔代数
搜索引擎能够在毫秒时间内检索到成千上万的相关结果,其关键原理是索引和布尔代数运算。最简单的索引的结构是用一个很长的二进制数表示一个关键词是否出现在每篇文献中,有多少篇文献就有多少位数,每一位对应一篇文献,1代表相应的文献有这个关键词,0代表没有。比如“南华大学”的二进制数是010010001100001…,表示第二、第五、第九、第十、第十五篇文献包含这个关键词,“论坛”的二进制数是010001001000000…,检索同时包含“南华大学”和“论坛”的文献时,将这两个二进制代数进行AND布尔运算,就可以找到第二、第九篇文献满足要求。实际应用中的搜索引擎的索引是一个只记录了等于1的位数的一张大表:表的每一行对应一个关键词,而每一个关键词后面跟着一组数字,是包含该关键词的文献序号。计算机做布尔运算是非常快的,目前最便宜的微机都可以在一个指令周期进行32位布尔运算,一秒钟进行数十亿次以上。
1.2 舆情过滤算法设计
基于搜索引擎的关键词舆情过滤算法充分利用索引进行布尔运算所带来的高效性进行设计。其设计思路及流程如图1所示。先从爬虫抓取完成队列中获得已经下载好的网页文档,利用HTMLParser对其进行结构解析以获得URL、标题、作者、正文、发表时间等属性信息,然后将这些属性构成的文档对象插入数据库采集记录表,插入成功则获取插入记录的自增标识ID,然后进入分词索引程序,将需要分词的属性比如标题,正文进行分词,然后连同标识ID一起分别作为一个Lucene文档的域进行索引,索引完成之后即可对其进行过滤查询。将标识ID和用户设定的恶劣情感词集组合成布尔查询字符串之后对索引库进行检索,若能检索到唯一一条记录,则表明刚才索引的那篇文档中包含有该用户关心的舆情信息,最终反馈给用户。以上是该过滤算法设计的基本思路流程,以下将对此过程中的关键问题进行详细介绍。
图1 基于搜索引擎的关键词舆情过滤设计流程
1.2.1 唯一标识ID的生成
唯一标识ID的生成方式有多种,只须满足系统全局唯一标识一篇文档的要求,因此可以通过程序生成全局唯一标识符。在实现石鼓舆情监控系统的过程中,因为要采集每一篇文档的结构化数据,因此唯一标识ID是通过数据库采集记录数据插入后返回主键ID得到的,如图2中采集记录表主键采集记录ID。我们利用网络爬虫对某些特定监控类型网站进行下载后做结构化解析,每个网页文档经过解析将得到如图2数据表所示的标题、作者、URL、发表时间、正文等元素信息,然后将此文档元素信息插入采集记录表和回复记录表(没有回复则不插入回复记录表),插入成功后程序将获得此记录的自增类型主键采集记录ID。此ID将成为后续进行索引的一个唯一标识域。
图2 石鼓舆情监控系统部分数据库设计
1.2.2 索引的建立
使用开源库lucene建立索引。上一步生成的唯一标识ID须作为索引的一个文档存储域。如无特殊要求,则可将文档解析出来的全部文本作为另一个域进行分词并索引。本舆情监控系统将之前解析出的标题、正文、回复内容作为索引域进行分词后,连同采集记录ID、URL、作者一起进行索引。
为了保证文本分词后预存储的所有恶劣情感词仍旧还作为一个完整词出现在索引表中(如果待索引文本中包含预存储的恶劣情感词),需要将这些预存储的恶劣情感词加入分词器的用户自定义词典,分词器则不会将某情感词分解成两个或多个词项了。这样会保证后续的关键词检索不遗漏结果。本系统采用中科院分词系统ICTCLAS50,可将恶劣情感词加入词典文件中。
1.2.3 舆情关键词查询过滤
索引表建立之后,则可循环将所有用户设定的恶劣情感词集合和唯一标识ID构造布尔查询字符串对索引表进行检索。构造的查询字符串实则是一个布尔算术表达式。比如查询串“采集记录ID AND (跳楼OR 罢课 OR贪污 OR猥亵)”,
该表达式即可从刚索引的那篇文档中找到是否含有一个或多个恶劣情感词的记录,有则返回该记录文档,没有则返回零个文档。查询表达式中,所有恶劣情感词之间是或OR关系,它们形成一个整体与采集记录ID是与AND关系,形成的布尔运算要先检索到满足采集记录ID等于指定值的索引文档,然后在此文档中检索OR查询串中包含的至少一个情感词。本系统中如果查询返回了一条记录文档,则将该记录中匹配的关键词高亮后反馈给用户并入库。
1.3 舆情过滤算法的实现
由于舆情监控系统面对的是浩瀚信息的互联网,因此海量数据的处理效率是制约系统性能的关键因素。将该算法实现在基于生产者-消费者的多线程结构之上可大大提高系统性能,如图3所示。
将该算法的关键流程分拆到各个线程中分别实现,线程控制数据缓存池中数据流的走向,各线程本身的并发运行交由线程池进行统一管理。这样增大了系统的吞吐量,提高了系统资源的利用率,也大大的提升了系统的运行效能。
2 实验结果对比分析
开发环境: Windows XP操作系统,英特尔酷睿双核T6600 @2.20GHz处理器,4G存,Java JDK1.7,MySql5.5,Myeclipse9.0,lucene3.0。服务器环境:Windows Server 2003,4核Intel? Xeon? CPU E5506 @2.13GHz,16G内存,Tomcat7.0。
本系统算法的实验分别基于三类网站进行观察分析。第一类是以大量回复内容为主的某BBS论坛网站,第二类是以大文本正文为主的新浪新闻网站,第三类是以小文本为主的腾讯微博(不要回复评论内容)。得到的实验结果与在程序中使用正则表达式和在数据库中使用SQL正则表达式两种方式做对比分析(这两种情况同样是在多线程架构之上进行试验)。同时计算基于搜索引擎的过滤算法的查准率和查全率。因为本算法在完成一篇文档的查询过滤时,由于唯一标识ID的作用,每次只在特定的一篇文档中查询过滤,检索结果最多是返回一条记录,因此采用平均查准率和查全率来衡量,分析N篇文档时的定义如下:
使用基于搜索引擎的舆情过滤算法在恶劣情感词数量和索引库大小两个因素作用下监控100篇文档从下载到查询过滤结束的运行时间结果,同时计算它们的平均查全率和平均价查准率,并实验得到在java程序中使用正则表达式的运行时间,在mysql中使用SQL正则表达式的运行时间。绘图得到如图4,5,6。平均查全率和平均查准率如表1。
表1 平均查全率/平均查准率
图4 **(南华)BBS论坛实验结果
图5 新浪新闻实验结果
图6 腾讯微博实验结果
分析图4,5,6,三大类型网站的实验图大同小异,成水平状态的4条曲线是基于搜索引擎的过滤算法的运行时间图,他们基本保持平稳但有随着恶劣情感词个数增加呈稍微上升趋势,当索引库增大时,运行时间会有相应增加,但涨幅很小。基于Java正则和sql正则的运行时间曲线都随着恶劣情感词个数增加基本呈线性增加趋势,恶劣情感词的数量决定了他们的循环次数,当恶劣情感词较少的时候(10个左右),性能会优于基于搜索引擎的过滤算法,但当词数增加时,特别是词数较多时,则没有丝毫性能优势。而从工程上来看,由于要适应于多个用户,关键词数往往在几十甚至上百个以上。另外,基于sql正则的方法运行效率整体上比基于java正则有微弱优势。基于以上分析,基于搜索引擎关键词过滤算法能很好的适应于各大类型网站,且能取得良好的运行效率,达到恶劣舆情信息的发现实时高效的目标。
分析表1,三大类型网站的平。因此,基于搜索引擎过滤算法的查全率有待提高。
3 总结
基于搜索引擎的关键词舆情过滤算法在执行效率上要比普通的正则匹配、高亮文本替换好得多,它非常适合于网页实时下载和内容解析的系统中,并且能利用开源搜索引擎框架的高亮语法方便的生成舆情简要文本,较好的解决了恶劣舆情信息的实时挖掘问题。下一步的工作:一是将索引库尝试部署成分布式索引,构建运行高效而稳定的舆情过滤监控系统和搜索引擎;二是结合机器学习的方式进行文本聚类以获得更高的查全率和查准率。
参考文献:
[1] 李强.互联网有害信息实时过滤报警系统的实现[J].计算机工程与设计,2006(18):3419-3423.
.北京:北京邮电大学,2011.
[3] 庞磊,李寿山,周国栋.基于情绪知识的中文微博情感分类方法[J].计算机工程,2012(13);156-158.
[4] 邱云飞,程亮. 微博突发话题检测方法研究[J].计算机工程,2012(9);288-290.
, 2005.
.Expert Systems with Applications,2009,36 : 6527-6535.
[7] 黄晓斌,赵超.文本挖掘在网络舆情信息分析中的应用[J].情报科学,2009(1):94-99.
[8] 张伟.网络舆情监控系统的研究与实现[D].天津:天津大学,2011.
[9] 韩忠明,张玉沙,张慧,万月亮,黄今慧.有效的中文微博短文本倾向性分类算法[J].计算机应用与软件,2012(10):89-93.