黃 迅,孫軍梅
(杭州師范大學(xué)信息科學(xué)與工程學(xué)院,浙江 杭州 311121)
輿論的跟蹤和管理一直是社會(huì)上的一個(gè)熱點(diǎn)問(wèn)題,良好的輿論管控不僅能讓社會(huì)更有秩序,還能更好地引導(dǎo)社會(huì)人群思想走向.本文以輿情分析作為基本點(diǎn),設(shè)計(jì)實(shí)現(xiàn)了一個(gè)針對(duì)學(xué)校百度貼吧的輿情分析系統(tǒng).該系統(tǒng)以深度學(xué)習(xí)模型作為文本分類器,大大節(jié)約了人力資源,以時(shí)下較為流行的學(xué)生校內(nèi)交流途徑——學(xué)校貼吧作為分析重點(diǎn),得到的輿情分析結(jié)果更具針對(duì)性.學(xué)??梢酝ㄟ^(guò)本系統(tǒng)實(shí)時(shí)了解本校學(xué)生輿情情況.
通常基于人工的輿情分析包括獲得信息、辨別信息類別、統(tǒng)計(jì)多個(gè)信息結(jié)果.基于深度學(xué)習(xí)的輿情分析也離不開這3個(gè)步驟,只不過(guò)這些步驟都用計(jì)算機(jī)來(lái)自動(dòng)實(shí)現(xiàn).首先對(duì)訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)進(jìn)行預(yù)處理,然后基于幾種神經(jīng)網(wǎng)絡(luò)模型對(duì)訓(xùn)練數(shù)據(jù)進(jìn)行訓(xùn)練,最后將訓(xùn)練好的模型用于對(duì)實(shí)時(shí)爬取的測(cè)試數(shù)據(jù)進(jìn)行分類預(yù)測(cè),經(jīng)過(guò)統(tǒng)計(jì)分析,得到輿情數(shù)據(jù)的分析結(jié)果,并實(shí)時(shí)給出圖形化的顯示.學(xué)生輿情分析系統(tǒng)的流程如圖1所示.
圖1 輿情分析流程圖Fig.1 Public opinion analysis flowchart
本文使用的數(shù)據(jù)集:一是從搜狗實(shí)驗(yàn)室(https://www.sogou.com/labs/resource/cs.php)下載的新聞分類數(shù)據(jù)作為訓(xùn)練用數(shù)據(jù)集,二是通過(guò)自己設(shè)計(jì)實(shí)現(xiàn)的網(wǎng)絡(luò)爬蟲實(shí)時(shí)抓取百度貼吧評(píng)論數(shù)據(jù)作為測(cè)試集.
貼吧評(píng)論數(shù)據(jù)是通過(guò)設(shè)計(jì)實(shí)現(xiàn)的網(wǎng)絡(luò)爬蟲系統(tǒng)來(lái)抓取的實(shí)時(shí)評(píng)論數(shù)據(jù).為了契合輿情分析的主體,設(shè)計(jì)實(shí)現(xiàn)的網(wǎng)絡(luò)爬蟲系統(tǒng)具備如下3個(gè)特點(diǎn):1)時(shí)效性,即爬取的是近期的輿論,而不是所有的輿論,因?yàn)檫^(guò)久的輿論沒有統(tǒng)計(jì)的價(jià)值,對(duì)于當(dāng)下的輿論熱點(diǎn)沒有過(guò)多的幫助,甚至還會(huì)影響當(dāng)下的輿論分析.2)關(guān)鍵性,即要抓關(guān)鍵的輿論,就百度貼吧而言,評(píng)論數(shù)超過(guò)某數(shù)值的帖子及回復(fù)即是關(guān)鍵輿論,相對(duì)沒有回復(fù)的帖子來(lái)說(shuō),這種帖子更加具有熱點(diǎn)的代表性(一些無(wú)意義的廣告帖顯然沒有分析的價(jià)值,況且廣告帖一般也不會(huì)有較多回帖).3)實(shí)時(shí)性,即應(yīng)當(dāng)是每隔一段時(shí)間就進(jìn)行一次爬取,輿情一般會(huì)實(shí)時(shí)更新,所以爬蟲也需要跟上輿情更新的腳步,按時(shí)爬取數(shù)據(jù).
針對(duì)這3個(gè)特點(diǎn)制定了爬蟲的基本策略:1)為了滿足時(shí)效性和實(shí)時(shí)性,給爬蟲設(shè)置了一個(gè)循環(huán),每4 h進(jìn)行一次爬取,爬取最近的500條帖子記錄;2)為了抓取關(guān)鍵評(píng)論,在爬取過(guò)程中加入回復(fù)數(shù)量必須超過(guò)1的限制;3)為了減少在爬蟲爬取過(guò)程中網(wǎng)頁(yè)的訪問(wèn)等待時(shí)間,進(jìn)行了多線程優(yōu)化,分別設(shè)置1個(gè)專門文件IO的線程和n個(gè)訪問(wèn)帖子網(wǎng)頁(yè)的線程.經(jīng)過(guò)測(cè)試之后發(fā)現(xiàn),n=10時(shí),可以滿足要求,爬取速度大大提高.
2.2.1 去冗余信息
從貼吧爬取的文本無(wú)法直接輸入模型,且這些沒有經(jīng)過(guò)處理的文本數(shù)據(jù)中有很多冗余信息,會(huì)影響分類效果和效率.所以要進(jìn)行中文文本的預(yù)處理,如中文分詞、停用詞過(guò)濾、詞語(yǔ)向量化等[1].本文使用結(jié)巴分詞的精確模式進(jìn)行中文分詞.分詞處理后又進(jìn)行了去標(biāo)點(diǎn)、去空格、去停用詞等處理,最終文本串會(huì)變成一系列有效詞語(yǔ)的集合.
2.2.2 生成向量空間信息
本文使用word2vec的Skip-gram模型對(duì)詞語(yǔ)進(jìn)行向量化處理.通過(guò)word2vec模型訓(xùn)練后將會(huì)生成一個(gè)向量空間,每個(gè)詞語(yǔ)都會(huì)對(duì)應(yīng)一個(gè)向量,使用python中g(shù)ensim提供的most_similar接口實(shí)現(xiàn).滑動(dòng)窗口大小設(shè)定為3.由于語(yǔ)料比較大,所以忽略詞頻過(guò)小的詞語(yǔ)的界限定為3,即出現(xiàn)小于3次的詞語(yǔ)都忽略.通過(guò)觀察發(fā)現(xiàn)去停用詞后的語(yǔ)料包含的字詞數(shù)目不會(huì)超過(guò)100,故這里將序列的長(zhǎng)度統(tǒng)一設(shè)為100,不足100的通過(guò)零值來(lái)補(bǔ)齊.
本文基于卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)模型[2]和長(zhǎng)短時(shí)記憶(long short-tern memory,LSTM)模型[3],提出了LSTM-CNN模型,對(duì)貼吧數(shù)據(jù)進(jìn)行分類.卷積神經(jīng)網(wǎng)絡(luò)其基本邏輯是把數(shù)據(jù)用多個(gè)卷積核進(jìn)行特征提取,每個(gè)卷積核都表示一種特征,每個(gè)卷積結(jié)果(特征圖)都表示該數(shù)據(jù)在該特征下的表現(xiàn)情況,最終可以得到該數(shù)據(jù)在多個(gè)特征下的特征圖.然后用池化操作,把特征圖中最為突出的幾個(gè)元素提取出來(lái).最后再經(jīng)過(guò)全連接層和softmax層得到輸出結(jié)果.相較于卷積神經(jīng)網(wǎng)絡(luò),長(zhǎng)短期記憶網(wǎng)絡(luò)對(duì)局部特征的提取效果不佳,但它是一個(gè)順序結(jié)構(gòu),可以提取出上下文語(yǔ)義特征,所以LSTM在處理序列數(shù)據(jù)時(shí)往往會(huì)取得不錯(cuò)的效果.由于評(píng)論是句子級(jí)的分類任務(wù),所以考慮上下文信息是十分有必要的.故本文提出將CNN和LSTM兩個(gè)模型結(jié)合起來(lái)對(duì)文本進(jìn)行分類,這樣既可以提取文本數(shù)據(jù)的各局部特征,又可提取出文本的上下文語(yǔ)義關(guān)聯(lián)信息.同時(shí)在結(jié)合的過(guò)程中,需要注意LSTM和CNN的先后順序.若是CNN在前,很可能在特征提取的過(guò)程中丟失文本的時(shí)序特征,而LSTM在前的話,由于LSTM本身就有長(zhǎng)期記憶性,所以對(duì)于歷史信息會(huì)有較好的保留,特征丟失也會(huì)比較少,所以本文選用先LSTM后CNN的形式構(gòu)造模型.模型結(jié)構(gòu)如圖2所示.
圖2 LSTM-CNN模型結(jié)構(gòu)圖Fig.2 LSTM-CNN model structure diagram
表1 模型初始參數(shù)設(shè)置Tab.1 Model initial parameter settings
3.2.1 模型的超參數(shù)初始設(shè)置
模型超參數(shù)指的是模型外部的配置變量,恰當(dāng)?shù)某瑓?shù)設(shè)置對(duì)于生成一個(gè)性能優(yōu)良的神經(jīng)網(wǎng)絡(luò)模型至關(guān)重要.模型在訓(xùn)練時(shí)參數(shù)設(shè)置不同,訓(xùn)練效果也會(huì)有所差異.本文模型訓(xùn)練中主要通過(guò)數(shù)據(jù)和經(jīng)驗(yàn)來(lái)確定部分超參數(shù),另有部分超參數(shù)需要通過(guò)實(shí)驗(yàn)來(lái)確定.表1給出了CNN、LSTM、LSTM-CNN模型在初始訓(xùn)練時(shí)參數(shù)的設(shè)置情況.
模型每次批處理的大小(batch_size)將決定一次訓(xùn)練的數(shù)據(jù)量,它的選擇會(huì)影響訓(xùn)練的時(shí)間效率和噪聲梯度評(píng)估.如果訓(xùn)練的數(shù)據(jù)集比較小,可以采用全數(shù)據(jù)集作為批處理大小,但是當(dāng)訓(xùn)練的數(shù)據(jù)集很大時(shí),采用全數(shù)據(jù)集的方式顯然不合適,這時(shí)選擇一個(gè)適中的批處理大小就十分重要.本文參考了既有研究的經(jīng)驗(yàn),將各模型批處理大小統(tǒng)一設(shè)為128[4].
3.2.2 模型訓(xùn)練
訓(xùn)練過(guò)程中需要根據(jù)結(jié)果來(lái)對(duì)部分超參數(shù)進(jìn)行調(diào)節(jié),以取得最佳效果.迭代次數(shù)(epoch)對(duì)神經(jīng)網(wǎng)絡(luò)模型的擬合能力有重要影響,迭代次數(shù)設(shè)置過(guò)小,模型會(huì)欠擬合,一般為了提高訓(xùn)練精度會(huì)把epoch設(shè)置得比較大,但epoch過(guò)大又容易導(dǎo)致過(guò)擬合.故本實(shí)驗(yàn)首先需要獲得最佳epoch,本實(shí)驗(yàn)采用EarlyStopping機(jī)制,設(shè)置為2個(gè)epoch內(nèi)Validation Loss沒有改善就提前停止訓(xùn)練.
優(yōu)化器(optimizer)對(duì)于模型性能的提升具有重要作用,它的選擇主要取決于輸入數(shù)據(jù)的特性.本文研究對(duì)象為貼吧數(shù)據(jù),其特征稀疏,為了獲得最佳的效果應(yīng)該采用一種自適應(yīng)學(xué)習(xí)率的優(yōu)化算法,這樣可以不用調(diào)節(jié)學(xué)習(xí)率的大小就能獲得默認(rèn)參數(shù)下最好的結(jié)果.本實(shí)驗(yàn)過(guò)程中選取了幾種常用的自適應(yīng)學(xué)習(xí)率的優(yōu)化器進(jìn)行效果對(duì)比,包括Adam、SGD和RMSprop.圖3是采用3種不同優(yōu)化器時(shí)其中一次的LSTM-CNN模型在測(cè)試數(shù)據(jù)上F值隨迭代次數(shù)的變化情況,從圖中可看出,本模型在選擇Adam優(yōu)化器且迭代3次時(shí)F值達(dá)到最高,即模型的分類效果最好.故我們測(cè)試時(shí)也使用了Adam優(yōu)化器.
圖3 優(yōu)化器和迭代次數(shù)對(duì)LSTM-CNN模型效果的影響Fig.3 Effect of optimizer and iteration number on LSTM-CNN model
模型建好后需對(duì)模型的準(zhǔn)確度、正確性進(jìn)行評(píng)估和測(cè)試.
通過(guò)在訓(xùn)練好的各個(gè)模型上運(yùn)行測(cè)試集數(shù)據(jù),得到了不同模型對(duì)應(yīng)的準(zhǔn)確率和召回率.其中準(zhǔn)確率是指在分類器判斷為該類的樣本中,真正屬于該類的樣本所占比例,考察的是分類的正確性;召回率指分類器正確判斷為該類的樣本數(shù)占該類總樣本數(shù)的比例.然而由于準(zhǔn)確率和召回率是兩個(gè)值,無(wú)法根據(jù)兩個(gè)值來(lái)對(duì)比模型好壞,所以有一個(gè)綜合準(zhǔn)確率和召回率的值F1,F(xiàn)1=2×(Precision×Recall)/(Precision+Recall),可以判斷模型優(yōu)劣.本實(shí)驗(yàn)測(cè)試結(jié)果如表2所示.
表2 3個(gè)分類模型的性能比較Tab.2 Performance comparison of three classification models
根據(jù)最終統(tǒng)計(jì)的數(shù)據(jù),可以看出LSTM-CNN模型在準(zhǔn)確度、召回率上都比另兩種模型高出不少,綜合測(cè)評(píng)值F1也是高了4%,雖然訓(xùn)練耗時(shí)略長(zhǎng),但是仍在可接受范圍之內(nèi).所以本文最終選用LSTM-CNN模型作為輿情系統(tǒng)的分類模型.
圖4 杭師大某時(shí)間段輿情分析情況圖形化顯示Fig.4 Graphical representation of public opinion analysis in a certain period of HZNU
分類模型的輸出是一個(gè)向量,為了直觀地提供給輿情分析人員,本文把輸出的向量取所有索引中最大值的索引作為最終預(yù)測(cè)結(jié)果(索引中的值越大表示越有可能是該索引對(duì)應(yīng)的分類),再通過(guò)索引和分類的映射關(guān)系得到分類結(jié)果的可視化顯示.利用python中的pyplot模塊生成一個(gè)餅圖,反映當(dāng)前數(shù)據(jù)集各個(gè)分類的占比,通過(guò)這個(gè)占比可以分析出目前學(xué)生論壇的評(píng)論熱點(diǎn),而通過(guò)這些熱點(diǎn),分析人員可以作出正確的輿論預(yù)警或者輿論引導(dǎo)等相關(guān)工作.圖4顯示某一時(shí)段杭州師范大學(xué)(簡(jiǎn)稱杭師大)貼吧的輿情分析情況.
經(jīng)查看,杭師大貼吧中這一時(shí)期確實(shí)有大量的類似“考研”、“三位一體”、“分?jǐn)?shù)線”等與學(xué)習(xí)相關(guān)的字樣,所以也可以表明系統(tǒng)最終分類結(jié)果較為可靠.
系統(tǒng)會(huì)把每次爬取的信息分類結(jié)果以時(shí)間戳命名并保存,分析人員可以通過(guò)對(duì)比最近一次分析結(jié)果和之前的結(jié)果,若某些分類數(shù)值波動(dòng)較大,則需要對(duì)這些方面給予更多關(guān)注.
本文研究成果可以總結(jié)為兩點(diǎn):
1)較為精準(zhǔn)和及時(shí)地獲取學(xué)生在貼吧的言論信息.爬蟲系統(tǒng)每4 h進(jìn)行一次信息爬取,信息更新實(shí)時(shí),數(shù)據(jù)更具參考價(jià)值.
2)輿情的分析自動(dòng)完成,效率高.通過(guò)自動(dòng)爬取數(shù)據(jù)、自動(dòng)處理數(shù)據(jù)、自動(dòng)分析數(shù)據(jù),并以圖形化的方式顯示,分析人員能夠及時(shí)掌握輿情,準(zhǔn)確定位輿情方向,方便合理地制定更加符合現(xiàn)實(shí)情況的管控措施.
目前數(shù)據(jù)主要從貼吧獲取,以后可以考慮更多的數(shù)據(jù)獲取渠道,增大數(shù)據(jù)量,輿情分析模型隨著數(shù)據(jù)量的增大,精準(zhǔn)度也會(huì)越來(lái)越高,輿情分析結(jié)果也會(huì)更具參考價(jià)值.