馮如曉 劉志明 雷龍艷
摘要:網(wǎng)絡(luò)輿情已成為社會情報的一種重要表現(xiàn)形式。對于性質(zhì)惡劣(負面)的網(wǎng)絡(luò)輿情信息,能否及時高效的挖掘出來對網(wǎng)絡(luò)輿情監(jiān)控具有十分重要的意義。針對目前輿情發(fā)現(xiàn)的時效性不足的問題,該文提出基于搜索引擎的關(guān)鍵詞檢索過濾算法,并在多線程環(huán)境下運行,充分利用索引查詢的高效性,大大提高了惡劣輿情過濾的效率。
關(guān)鍵詞:搜索引擎;輿情過濾;布爾模型;索引;lucene
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2014)06-1328-05
A Research of Algorithm about Public Opinion Key words Filtering Based on Search Engine
FENG Ru-xiao, LIU Zhi-ming, LEI Long-yan
(School of Computer Science and Technology, University of South China, Hengyang 421001, China)
Abstract: Net-mediated public opinion has become one format of social information. As to severe public opinion context, it is of significance for public opinion monitoring system to find that information timely and efficient. To deal with the problem of lacking efficiency of finding severe opinion at present, in this paper, a algorithm about keywords filtering based on search engine is designed and run in multi-thread environment. The algorithm makes use of index searching efficiency and improves productivity obviously in public opinion filtering system.
Key words: search engine; public opinion filtering; bool model; index; lucene
隨著網(wǎng)絡(luò)成為繼報紙、無線廣播和電視三大傳統(tǒng)的傳播媒體之后的“第四媒體”,網(wǎng)絡(luò)輿情對社會的影響與日俱增。網(wǎng)絡(luò)輿情成為最主要的社會輿情表述和傳播方式之一。對于公司企事業(yè)單位,一些惡劣事件的披露很可能成為他們繼續(xù)發(fā)展的絆腳石;對于社會,一些有損穩(wěn)定,影響極為惡劣的言論很可能對社會造成極為惡劣的負面影響。由于這些信息往往呈現(xiàn)爆炸式增長,因此,輿情監(jiān)控系統(tǒng)的一個重要目標即是及早的發(fā)現(xiàn)輿情發(fā)布源頭,從而提醒管理者及時對其進行適當?shù)目刂?。這就要求輿情監(jiān)控系統(tǒng)最好能夠做到在數(shù)小時甚至幾十分鐘之內(nèi)能夠抓取到新發(fā)布的輿論信息后立刻過濾出是否含有惡劣言論,這對輿情監(jiān)控系統(tǒng)具有十分重要的意義。
目前輿情發(fā)現(xiàn)的方法研究可以基本歸為兩大類,一類是基于規(guī)則的文本內(nèi)容關(guān)鍵詞識別的方法【1,2】,一類是基于統(tǒng)計的機器學(xué)習(xí)文本分類方法【3~6】。第一類方法能夠最大限度的在輿情未擴散之前的挖掘出網(wǎng)絡(luò)中明顯直接的輿情信息,但由于語義方面的局限性使得輿情信息的挖掘不夠充分,第二類方法一般需要在一定數(shù)量的相關(guān)輿情記錄出現(xiàn)后才能被挖掘,輿情信息的挖掘較為全面。目前有很多輿情監(jiān)控系統(tǒng)采用這兩類方法相結(jié)合的方式進行輿情監(jiān)控[7,8]。
對于第一類方式,較為普遍,簡單而有效的一種方式是預(yù)存儲一些行業(yè)惡劣情感詞庫,比如高校教育行業(yè)里可設(shè)定自殺、罷課、貪污,猥褻等惡劣情感詞,然后對從網(wǎng)絡(luò)中抓取到的文本數(shù)據(jù)進行關(guān)鍵詞字串正則匹配,匹配成功則過濾出一條輿情記錄同時將匹配的關(guān)鍵詞替換成高亮文本返回給用戶。該方法雖然可行,但正則表達式的算法完成一篇文檔的過濾需要對關(guān)鍵詞集中每一個關(guān)鍵詞進行循環(huán)匹配,時間主要消耗在循環(huán)調(diào)用、字符串匹配和文本高亮替換之上,算法效率較為低下,在一定程度上影響了輿情發(fā)現(xiàn)的時效性。該文提出基于搜索引擎的關(guān)鍵詞查詢過濾方法,能夠最大限度的利用索引查詢的高效性,把批量輿情信息過濾時間控制在較短時間內(nèi),較好的解決了惡劣輿情過濾的實時高效問題。
1 基于搜索引擎的關(guān)鍵詞輿情過濾算法設(shè)計
在這一節(jié)中,先介紹搜索引擎背后的基本原理,然后詳細介紹基于搜索引擎的關(guān)鍵詞輿情過濾算法的設(shè)計與實現(xiàn)。
1.1 索引與布爾代數(shù)
搜索引擎能夠在毫秒時間內(nèi)檢索到成千上萬的相關(guān)結(jié)果,其關(guān)鍵原理是索引和布爾代數(shù)運算。最簡單的索引的結(jié)構(gòu)是用一個很長的二進制數(shù)表示一個關(guān)鍵詞是否出現(xiàn)在每篇文獻中,有多少篇文獻就有多少位數(shù),每一位對應(yīng)一篇文獻,1代表相應(yīng)的文獻有這個關(guān)鍵詞,0代表沒有。比如“南華大學(xué)”的二進制數(shù)是010010001100001…,表示第二、第五、第九、第十、第十五篇文獻包含這個關(guān)鍵詞,“論壇”的二進制數(shù)是010001001000000…,檢索同時包含“南華大學(xué)”和“論壇”的文獻時,將這兩個二進制代數(shù)進行AND布爾運算,就可以找到第二、第九篇文獻滿足要求。實際應(yīng)用中的搜索引擎的索引是一個只記錄了等于1的位數(shù)的一張大表:表的每一行對應(yīng)一個關(guān)鍵詞,而每一個關(guān)鍵詞后面跟著一組數(shù)字,是包含該關(guān)鍵詞的文獻序號。計算機做布爾運算是非??斓?,目前最便宜的微機都可以在一個指令周期進行32位布爾運算,一秒鐘進行數(shù)十億次以上。
1.2 輿情過濾算法設(shè)計
基于搜索引擎的關(guān)鍵詞輿情過濾算法充分利用索引進行布爾運算所帶來的高效性進行設(shè)計。其設(shè)計思路及流程如圖1所示。先從爬蟲抓取完成隊列中獲得已經(jīng)下載好的網(wǎng)頁文檔,利用HTMLParser對其進行結(jié)構(gòu)解析以獲得URL、標題、作者、正文、發(fā)表時間等屬性信息,然后將這些屬性構(gòu)成的文檔對象插入數(shù)據(jù)庫采集記錄表,插入成功則獲取插入記錄的自增標識ID,然后進入分詞索引程序,將需要分詞的屬性比如標題,正文進行分詞,然后連同標識ID一起分別作為一個Lucene文檔的域進行索引,索引完成之后即可對其進行過濾查詢。將標識ID和用戶設(shè)定的惡劣情感詞集組合成布爾查詢字符串之后對索引庫進行檢索,若能檢索到唯一一條記錄,則表明剛才索引的那篇文檔中包含有該用戶關(guān)心的輿情信息,最終反饋給用戶。以上是該過濾算法設(shè)計的基本思路流程,以下將對此過程中的關(guān)鍵問題進行詳細介紹。
圖1 基于搜索引擎的關(guān)鍵詞輿情過濾設(shè)計流程
1.2.1 唯一標識ID的生成
唯一標識ID的生成方式有多種,只須滿足系統(tǒng)全局唯一標識一篇文檔的要求,因此可以通過程序生成全局唯一標識符。在實現(xiàn)石鼓輿情監(jiān)控系統(tǒng)的過程中,因為要采集每一篇文檔的結(jié)構(gòu)化數(shù)據(jù),因此唯一標識ID是通過數(shù)據(jù)庫采集記錄數(shù)據(jù)插入后返回主鍵ID得到的,如圖2中采集記錄表主鍵采集記錄ID。我們利用網(wǎng)絡(luò)爬蟲對某些特定監(jiān)控類型網(wǎng)站進行下載后做結(jié)構(gòu)化解析,每個網(wǎng)頁文檔經(jīng)過解析將得到如圖2數(shù)據(jù)表所示的標題、作者、URL、發(fā)表時間、正文等元素信息,然后將此文檔元素信息插入采集記錄表和回復(fù)記錄表(沒有回復(fù)則不插入回復(fù)記錄表),插入成功后程序?qū)@得此記錄的自增類型主鍵采集記錄ID。此ID將成為后續(xù)進行索引的一個唯一標識域。
圖2 石鼓輿情監(jiān)控系統(tǒng)部分數(shù)據(jù)庫設(shè)計
1.2.2 索引的建立
使用開源庫lucene建立索引。上一步生成的唯一標識ID須作為索引的一個文檔存儲域。如無特殊要求,則可將文檔解析出來的全部文本作為另一個域進行分詞并索引。本輿情監(jiān)控系統(tǒng)將之前解析出的標題、正文、回復(fù)內(nèi)容作為索引域進行分詞后,連同采集記錄ID、URL、作者一起進行索引。
為了保證文本分詞后預(yù)存儲的所有惡劣情感詞仍舊還作為一個完整詞出現(xiàn)在索引表中(如果待索引文本中包含預(yù)存儲的惡劣情感詞),需要將這些預(yù)存儲的惡劣情感詞加入分詞器的用戶自定義詞典,分詞器則不會將某情感詞分解成兩個或多個詞項了。這樣會保證后續(xù)的關(guān)鍵詞檢索不遺漏結(jié)果。本系統(tǒng)采用中科院分詞系統(tǒng)ICTCLAS50,可將惡劣情感詞加入詞典文件userdict.txt中。
1.2.3 輿情關(guān)鍵詞查詢過濾
索引表建立之后,則可循環(huán)將所有用戶設(shè)定的惡劣情感詞集合和唯一標識ID構(gòu)造布爾查詢字符串對索引表進行檢索。構(gòu)造的查詢字符串實則是一個布爾算術(shù)表達式。比如查詢串“采集記錄ID AND (跳樓OR 罷課 OR貪污 OR猥褻)”,該表達式即可從剛索引的那篇文檔中找到是否含有一個或多個惡劣情感詞的記錄,有則返回該記錄文檔,沒有則返回零個文檔。查詢表達式中,所有惡劣情感詞之間是或OR關(guān)系,它們形成一個整體與采集記錄ID是與AND關(guān)系,形成的布爾運算要先檢索到滿足采集記錄ID等于指定值的索引文檔,然后在此文檔中檢索OR查詢串中包含的至少一個情感詞。本系統(tǒng)中如果查詢返回了一條記錄文檔,則將該記錄中匹配的關(guān)鍵詞高亮后反饋給用戶并入庫。
1.3 輿情過濾算法的實現(xiàn)
由于輿情監(jiān)控系統(tǒng)面對的是浩瀚信息的互聯(lián)網(wǎng),因此海量數(shù)據(jù)的處理效率是制約系統(tǒng)性能的關(guān)鍵因素。將該算法實現(xiàn)在基于生產(chǎn)者-消費者的多線程結(jié)構(gòu)之上可大大提高系統(tǒng)性能,如圖3所示。
將該算法的關(guān)鍵流程分拆到各個線程中分別實現(xiàn),線程控制數(shù)據(jù)緩存池中數(shù)據(jù)流的走向,各線程本身的并發(fā)運行交由線程池進行統(tǒng)一管理。這樣增大了系統(tǒng)的吞吐量,提高了系統(tǒng)資源的利用率,也大大的提升了系統(tǒng)的運行效能。
2 實驗結(jié)果對比分析
開發(fā)環(huán)境: Windows XP操作系統(tǒng),英特爾酷睿雙核T6600 @2.20GHz處理器,4G存,Java JDK1.7,MySql5.5,Myeclipse9.0,lucene3.0。服務(wù)器環(huán)境:Windows Server 2003,4核Intel? Xeon? CPU E5506 @2.13GHz,16G內(nèi)存,Tomcat7.0。
本系統(tǒng)算法的實驗分別基于三類網(wǎng)站進行觀察分析。第一類是以大量回復(fù)內(nèi)容為主的某BBS論壇網(wǎng)站,第二類是以大文本正文為主的新浪新聞網(wǎng)站,第三類是以小文本為主的騰訊微博(不要回復(fù)評論內(nèi)容)。得到的實驗結(jié)果與在程序中使用正則表達式和在數(shù)據(jù)庫中使用SQL正則表達式兩種方式做對比分析(這兩種情況同樣是在多線程架構(gòu)之上進行試驗)。同時計算基于搜索引擎的過濾算法的查準率和查全率。因為本算法在完成一篇文檔的查詢過濾時,由于唯一標識ID的作用,每次只在特定的一篇文檔中查詢過濾,檢索結(jié)果最多是返回一條記錄,因此采用平均查準率和查全率來衡量,分析N篇文檔時的定義如下:
使用基于搜索引擎的輿情過濾算法在惡劣情感詞數(shù)量和索引庫大小兩個因素作用下監(jiān)控100篇文檔從下載到查詢過濾結(jié)束的運行時間結(jié)果,同時計算它們的平均查全率和平均價查準率,并實驗得到在java程序中使用正則表達式的運行時間,在mysql中使用SQL正則表達式的運行時間。繪圖得到如圖4,5,6。平均查全率和平均查準率如表1。
表1 平均查全率/平均查準率
圖4 **(南華)BBS論壇實驗結(jié)果
圖5 新浪新聞實驗結(jié)果
圖6 騰訊微博實驗結(jié)果
分析圖4,5,6,三大類型網(wǎng)站的實驗圖大同小異,成水平狀態(tài)的4條曲線是基于搜索引擎的過濾算法的運行時間圖,他們基本保持平穩(wěn)但有隨著惡劣情感詞個數(shù)增加呈稍微上升趨勢,當索引庫增大時,運行時間會有相應(yīng)增加,但漲幅很小。基于Java正則和sql正則的運行時間曲線都隨著惡劣情感詞個數(shù)增加基本呈線性增加趨勢,惡劣情感詞的數(shù)量決定了他們的循環(huán)次數(shù),當惡劣情感詞較少的時候(10個左右),性能會優(yōu)于基于搜索引擎的過濾算法,但當詞數(shù)增加時,特別是詞數(shù)較多時,則沒有絲毫性能優(yōu)勢。而從工程上來看,由于要適應(yīng)于多個用戶,關(guān)鍵詞數(shù)往往在幾十甚至上百個以上。另外,基于sql正則的方法運行效率整體上比基于java正則有微弱優(yōu)勢。基于以上分析,基于搜索引擎關(guān)鍵詞過濾算法能很好的適應(yīng)于各大類型網(wǎng)站,且能取得良好的運行效率,達到惡劣輿情信息的發(fā)現(xiàn)實時高效的目標。
分析表1,三大類型網(wǎng)站的平均查準率較高,平均查全率都偏低,騰訊微博的查全率和查準率都是三者中最低,這可能是用戶在發(fā)表微博這種短文本時隨意性較大所致[9]。新浪新聞的查全率和查準率為三者中最高也與新聞介質(zhì)本身規(guī)范性較強有關(guān)[10]。因此,基于搜索引擎過濾算法的查全率有待提高。
3 總結(jié)
基于搜索引擎的關(guān)鍵詞輿情過濾算法在執(zhí)行效率上要比普通的正則匹配、高亮文本替換好得多,它非常適合于網(wǎng)頁實時下載和內(nèi)容解析的系統(tǒng)中,并且能利用開源搜索引擎框架的高亮語法方便的生成輿情簡要文本,較好的解決了惡劣輿情信息的實時挖掘問題。下一步的工作:一是將索引庫嘗試部署成分布式索引,構(gòu)建運行高效而穩(wěn)定的輿情過濾監(jiān)控系統(tǒng)和搜索引擎;二是結(jié)合機器學(xué)習(xí)的方式進行文本聚類以獲得更高的查全率和查準率。
參考文獻:
[1] 李強.互聯(lián)網(wǎng)有害信息實時過濾報警系統(tǒng)的實現(xiàn)[J].計算機工程與設(shè)計,2006(18):3419-3423.
[2] 王俊.基于Web搜索的輿情分析系統(tǒng)的設(shè)計與實現(xiàn)[D].北京:北京郵電大學(xué),2011.
[3] 龐磊,李壽山,周國棟.基于情緒知識的中文微博情感分類方法[J].計算機工程,2012(13);156-158.
[4] 邱云飛,程亮. 微博突發(fā)話題檢測方法研究[J].計算機工程,2012(9);288-290.
[5] Kim Soo-Min, Hovy E.Automatic Detection of Opinion Bearing Words and Sentences[C]//Proc. of International Joint Conference on Natural Language Processing. Jeju Island, Korea: [s. n.], 2005.
[6] Qiang Y,Ziqiong Zhang,Rob Law.Sentiment classication of online re-views to travel destinations by supervised machine learning approaches[J].Expert Systems with Applications,2009,36 : 6527-6535.
[7] 黃曉斌,趙超.文本挖掘在網(wǎng)絡(luò)輿情信息分析中的應(yīng)用[J].情報科學(xué),2009(1):94-99.
[8] 張偉.網(wǎng)絡(luò)輿情監(jiān)控系統(tǒng)的研究與實現(xiàn)[D].天津:天津大學(xué),2011.
[9] 韓忠明,張玉沙,張慧,萬月亮,黃今慧.有效的中文微博短文本傾向性分類算法[J].計算機應(yīng)用與軟件,2012(10):89-93.
[10] 王貴斌,陳敏直.文化規(guī)范與新聞框架[J].當代傳播,2005(3):18-20.