高楚翔 舒 杭 羅家輝
(東北林業(yè)大學(xué) 信息與計(jì)算機(jī)工程學(xué)院,哈爾濱 150036)
從公開(kāi)發(fā)表的散文、隨筆、詩(shī)歌甚至小說(shuō)中獲取作者反映的情感傾向,并從中獲知熱門(mén)社會(huì)事件對(duì)人類(lèi)情感變化的引導(dǎo),是保護(hù)社會(huì)主流思想不被西方反動(dòng)勢(shì)力影響的重要手段。該次研究主要針對(duì)詩(shī)歌網(wǎng)上最新發(fā)表的各種新體詩(shī),因其相對(duì)傳統(tǒng)詩(shī)歌的篇幅較長(zhǎng),反映的信息量相對(duì)傳統(tǒng)詩(shī)歌也比較大,能在大量分析中提取出詩(shī)人對(duì)社會(huì)事件的情感反射。
情感分析是數(shù)據(jù)挖掘領(lǐng)域一個(gè)熱門(mén)的研究方向。目前對(duì)情感分析的研究大部分集中在對(duì)微博各種熱門(mén)博文的研究,或者是商品銷(xiāo)售領(lǐng)域、電影上映后的評(píng)價(jià)分析等方面,而對(duì)現(xiàn)代派詩(shī)人利用現(xiàn)代詩(shī)來(lái)表達(dá)澎湃情感問(wèn)題的分析卻沒(méi)有涉及過(guò)。新體詩(shī)用詞復(fù)雜多樣,情緒的表達(dá)也更是包羅萬(wàn)象,因此,對(duì)于新體詩(shī)的情感分析也更加具有研究?jī)r(jià)值。
情感分析工作,可以劃分為3類(lèi)方法,第1類(lèi)是基于情感詞典的文本情感分析?;谠~典的方法中,主要采用兩種詞典,一種是自定義的情感詞典,主要是通過(guò)對(duì)于語(yǔ)料 中的情感詞進(jìn)行發(fā)現(xiàn)與搜集;另一種是依賴(lài)于開(kāi)源的大型語(yǔ)料庫(kù),英文中采用的大型語(yǔ)料庫(kù)是WordNet,而中文中主要采用HowNet[1]。2011年,陳岳峰等人對(duì)HowNet中所提出的褒貶義概念進(jìn)行聚類(lèi),將聚類(lèi)中心作為基準(zhǔn)概念,進(jìn)行詞語(yǔ)的情感識(shí)別[2];2015年,Tang D等人采用門(mén)控循環(huán)神經(jīng)網(wǎng)絡(luò)(GRU)對(duì)文檔進(jìn)行建模,進(jìn)行文檔級(jí)情感分析[3];Jin Wang等人提出一種局部卷積神經(jīng)網(wǎng)絡(luò)與循環(huán)神經(jīng)網(wǎng)絡(luò)相融合的分類(lèi)模型,對(duì)于句子進(jìn)行多維度的情感分析,其在中文語(yǔ)料中取得較好的效果[4]。
新體詩(shī)包含了大量的信息,而且相對(duì)于傳統(tǒng)詩(shī)歌,詞匯的使用更加豐富,情緒的表達(dá)更加多樣,而且一首詩(shī)中的情緒常常不止1種,有時(shí)甚至是3種以上情感糅合在一起,例如:“我每次回到家鄉(xiāng)、站在橋上、就會(huì)想起我的父親、一個(gè)善良的人、勤勞的人、熱心的人、只可惜、他去世的時(shí)候、只有五十幾歲、盡管沒(méi)有給我們、留下什么、卻給我們留下了精神”這段詩(shī)中,先表達(dá)了對(duì)父親的贊美之情,然后轉(zhuǎn)而描寫(xiě)對(duì)于父親離世的悲傷,最終以希望結(jié)尾,總體上被歸結(jié)于消極的情緒;“寫(xiě)吧,寫(xiě)給我的小情人、你童年的生活,一人一碗、吃空碗里的飯時(shí),我們一起歡笑、淚水流向湯碗時(shí),我們一起憂(yōu)愁、調(diào)皮,霸道,還會(huì)說(shuō)唱、生活里充滿(mǎn)陽(yáng)光,喜愛(ài)吃糖”這段詩(shī)中,作者既寫(xiě)了和女兒的開(kāi)心的生活,也寫(xiě)了難過(guò)的時(shí)刻,總體上又表達(dá)了對(duì)女兒的喜愛(ài)之情,被歸結(jié)為積極的情緒。通過(guò)對(duì)各種新體詩(shī)的挖掘分析,可以深入地剖析詩(shī)人對(duì)當(dāng)下熱點(diǎn)、社會(huì)生活的看法和態(tài)度,可以對(duì)社會(huì)輿論起到一定的監(jiān)控作用。
正因?yàn)樾麦w詩(shī)的情感表達(dá)相對(duì)于淘寶評(píng)論或是美團(tuán)評(píng)論等內(nèi)容的情感表達(dá)更加晦澀曖昧,所以也會(huì)給機(jī)器學(xué)習(xí)帶來(lái)不小的難度,所以在構(gòu)建數(shù)據(jù)集時(shí)要盡量避開(kāi)情感糅合過(guò)多的新體詩(shī),盡量選擇例如“如果每天清晨、你有閱讀報(bào)紙的習(xí)慣、那么最開(kāi)心的、莫過(guò)于能在當(dāng)天的報(bào)紙上、第一時(shí)間讀到、自己喜歡的文章、并把認(rèn)為重要的部分、摘抄到筆記本上、生活的內(nèi)容豐富多彩、人生的選擇多種多樣”這種情感表達(dá)很直接的詩(shī)歌,來(lái)提高情感特征的準(zhǔn)確性。
利用Word2vec神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型進(jìn)行詞向量訓(xùn)練,通過(guò)將新體詩(shī)訓(xùn)練集進(jìn)入Word2vec工具進(jìn)行訓(xùn)練,能夠根據(jù)上下文的語(yǔ)境,將詩(shī)歌中每個(gè)詞語(yǔ)映射成為k維的實(shí)數(shù)向量,獲得每個(gè)詞在向量空間上的表示。CBOW和Skip-Gram模型為Word2vec技術(shù)的優(yōu)化改進(jìn)。它們將Word2vec詞向量表示技術(shù)中計(jì)算復(fù)雜度高的隱藏層替換為投影層,它能夠計(jì)算輸入層詞向量總和。其中,CBOW表示輸入特定詞w的上下文輸出包含詞w的概率,Skip-Gram表示輸入特定詞w,輸出詞w的上下文中包含詞w的概率。[5]
現(xiàn)有的SA方法主要有基于詞典的方法、基于機(jī)器學(xué)習(xí)(Machine Learning,ML)的方法和基于深度學(xué)習(xí)(Deep Learning,DL)的方法[6]。其中,基于詞典的方法主要利用情感詞典將語(yǔ)料庫(kù)中表達(dá)情感的關(guān)鍵詞提取出來(lái),進(jìn)而對(duì)目標(biāo)語(yǔ)句進(jìn)行情感分析[7]?;谠~典的方法能體現(xiàn)文本的非結(jié)構(gòu)化特征,在情感詞典覆蓋率和標(biāo)注準(zhǔn)確率較高的情況下分類(lèi)效果較理想[8]?;贛L的方法可以通過(guò)語(yǔ)句中詞語(yǔ)級(jí)別的情感特征準(zhǔn)確捕獲文本中有用的情感信息,這種詞級(jí)特征可以將語(yǔ)義信息表示成向量形式,方便衡量?jī)蓚€(gè)詞之間的相似度,因而在情感分析任務(wù)中表現(xiàn)良好[9]。
在word2vec之前采用深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練詞向量進(jìn)而處理詞與詞之間的關(guān)系的傳統(tǒng)模型是用多層的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)(一般是3層:輸入層、隱藏層和輸出層)。然后根據(jù)數(shù)據(jù)的輸入和輸出分為為CBOW (continuous bag ofwords)和Skip Gram兩種模型,其中CBOW通過(guò)中心詞的上下文對(duì)詞向量進(jìn)行預(yù)測(cè),Skip Gram通過(guò)中心詞對(duì)上下文進(jìn)行預(yù)測(cè),見(jiàn)圖1所示。
圖1 CBOW模型與Skip Gram模型Figure 1 CBOW model and Skip Gram model
Word2vec相對(duì)于傳統(tǒng)是神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型做出了改進(jìn)。一是在輸入層到隱藏層的映射中直接對(duì)所有輸入詞向量求和并取平均,大大降低了計(jì)算量;二是采用了負(fù)采樣的方法,即每次讓1個(gè)樣本只更新部分權(quán)重,同時(shí)其他權(quán)重全部固定,以此來(lái)減少計(jì)算量。這樣使word2vec的方法維度更少,速度加快,通用性也得到了加強(qiáng)。
該研究主要分為3個(gè)模塊:文本獲取模塊、文本預(yù)處理模塊和模型算法模塊。
文本獲取模塊包括:爬蟲(chóng)功能。網(wǎng)頁(yè)爬蟲(chóng)功能:通過(guò)python腳本對(duì)中國(guó)詩(shī)歌網(wǎng)獲取其現(xiàn)代詩(shī)(http://www.zgshige.com/sg/xds)和關(guān)鍵字搜索(http://www.zgshige.com/zcms/search/result?SiteID=122&Query=)板塊內(nèi)的新體詩(shī)。由于中國(guó)詩(shī)歌網(wǎng)
的欄目有最大頁(yè)數(shù)50頁(yè)的限制,導(dǎo)致50頁(yè)之后的頁(yè)面丟失出現(xiàn)404錯(cuò)誤而無(wú)法接著爬取數(shù)據(jù),于是本文使用了基于關(guān)鍵字的數(shù)據(jù)爬取方式對(duì)原有的文本獲取模塊進(jìn)行修改,并使用了xls表格文檔對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)。
文本預(yù)處理模塊包括:文字處理功能,構(gòu)建詞向量功能。文字處理功能:對(duì)從網(wǎng)站獲取大量xls格式存儲(chǔ)的詩(shī)歌進(jìn)行拼接處理,格式處理,使其能投入下一步的分詞和模型處理。構(gòu)建詞向量功能:使用word2vec模型,構(gòu)建訓(xùn)練樣例的詞向量模型。
模型算法模塊包括:模型訓(xùn)練功能。模型評(píng)估功能:調(diào)用保存的模型,對(duì)測(cè)試數(shù)據(jù)進(jìn)行測(cè)試,得到每個(gè)主題詞的準(zhǔn)確率數(shù)據(jù)。
該研究的路線(xiàn)是利用爬蟲(chóng)工具對(duì)中國(guó)詩(shī)歌網(wǎng)上的新體詩(shī)進(jìn)行爬取,選擇合適的分詞工具對(duì)近體詩(shī)進(jìn)行分詞提取,并解決詩(shī)歌中一些含有具體情感映射的事物的提取與不含特殊含義的事物加以區(qū)分。并在分析后利用深度學(xué)習(xí)算法對(duì)文本進(jìn)行情感挖掘,利用新數(shù)據(jù)進(jìn)行訓(xùn)練,從而得到正確的結(jié)論,見(jiàn)圖2所示。
圖2 技術(shù)路線(xiàn)Figure 2 Technical route
該文的實(shí)驗(yàn)數(shù)據(jù)選取自文本獲取模塊收集新體詩(shī)文本。選取經(jīng)過(guò)文本特殊字符刪除、題目等無(wú)用信息刪除等預(yù)處理的10 000條新體詩(shī)數(shù)據(jù),采用人工標(biāo)注的方式實(shí)現(xiàn)對(duì)新體詩(shī)的情感極性標(biāo)注。選擇3名同學(xué)各自對(duì)10 000條新體詩(shī)數(shù)據(jù)進(jìn)行了主觀細(xì)致極性判斷的方式,將數(shù)據(jù)分為積極與消極兩種細(xì)致類(lèi)別,統(tǒng)計(jì)3名同學(xué)各自的標(biāo)注結(jié)果,將每條新體詩(shī)文本的細(xì)致情感極性最高支持票數(shù)為最終標(biāo)注結(jié)果,避開(kāi)了獨(dú)自判斷的差異性,并最終采用5 000條細(xì)致區(qū)分的數(shù)據(jù)作為訓(xùn)練集。
獲取詞向量部分的代碼如下:
def build_vector(text, size, wv):
vec = np.zeros(size).reshape((1, size))
count = 0
for w in text:
try:
vec += wv[w].reshape((1, size))
count += 1
except:
continue
if count != 0:
vec /= count
return vec
將在對(duì)訓(xùn)練集進(jìn)行訓(xùn)練后,通過(guò)設(shè)置積極情緒測(cè)試集(positive,簡(jiǎn)稱(chēng)pos)和消極情緒測(cè)試集(negative,簡(jiǎn)稱(chēng)neg)各500條數(shù)據(jù),對(duì)測(cè)試集進(jìn)行如上的測(cè)試分析,然后記錄正確率。結(jié)果發(fā)現(xiàn),無(wú)論如何設(shè)置神經(jīng)網(wǎng)絡(luò)層數(shù)和最小詞頻數(shù),得到結(jié)果始終為50%,顯然并不符合實(shí)驗(yàn)預(yù)期要求。
于是研究小組再次對(duì)于研究數(shù)據(jù)進(jìn)行大量、細(xì)致地清洗,先將數(shù)據(jù)中所有的回車(chē)、空格、制表符號(hào)也全部刪除,然后再把所有可能出現(xiàn)歧義表達(dá)的詞語(yǔ)全部刪除,然后設(shè)置重新進(jìn)行訓(xùn)練。經(jīng)過(guò)多次對(duì)比訓(xùn)練后發(fā)現(xiàn),對(duì)比不同的神經(jīng)網(wǎng)絡(luò)層數(shù)以及最小詞頻數(shù)之后對(duì)比得到,當(dāng)取神經(jīng)網(wǎng)絡(luò)層數(shù)為300、最小詞頻數(shù)為10時(shí),得到的正確率最高,為86.1%,終于得到了符合實(shí)驗(yàn)預(yù)期的結(jié)果,見(jiàn)圖3所示。
圖3 不同神經(jīng)網(wǎng)絡(luò)層數(shù)以及最小詞頻數(shù)所得到的正確率的對(duì)比Figure 3 Comparison of the correct rate obtained by different neural network layers and the minimum word frequency
最后選擇設(shè)置神經(jīng)網(wǎng)絡(luò)層數(shù)為300、最小詞頻數(shù)為10,對(duì)測(cè)試集進(jìn)行情感分析實(shí)驗(yàn),統(tǒng)計(jì)結(jié)果的召回率與正確率,最終得到的結(jié)果如表1所示。
表1 積極與消極的召回率與正確率統(tǒng)計(jì)表Table 1 Positive and negative recall rate and correct rate statistics table
結(jié)果表明,因?yàn)樵谠?shī)歌的表達(dá)中,消極情緒的表達(dá)詞匯相對(duì)于積極情緒會(huì)更加豐富多樣,甚至有時(shí)不需要直接的表達(dá)詞匯,僅僅通過(guò)意象的堆疊就可以表達(dá)出悲傷、寂寞、思念等消極情緒,例如“推開(kāi)夜的清冷,幻作一縷煙火在塵世里徘徊”、“濁凈不染塵,攬攜無(wú)遠(yuǎn)晴空??仗w無(wú)人,聽(tīng)皓皓小城,從林靜白夜度,飛蛾暗影攙浮屠,遠(yuǎn)道一人緩緩來(lái)”,對(duì)于機(jī)器學(xué)習(xí)造成了一定的難度。由此可見(jiàn)Word2vec模型對(duì)于新體詩(shī)的情感分析是有效的,對(duì)于積極的情感類(lèi)型的新體詩(shī)更有效一些。圖4-圖7為積極結(jié)果和消極結(jié)果的示例。
圖4 積極結(jié)果1Figure 4 Positive results 1
圖5 積極結(jié)果2Figure 5 Positive results 2
圖6 消極結(jié)果1Figure 6 Negative result 1
圖7 消極結(jié)果2Figure 7 Negative result 2
對(duì)于新體詩(shī)的情感分析是人們對(duì)于熱點(diǎn)的看法和民生意見(jiàn)的重要依據(jù),所以挖掘詩(shī)中的情感傾向可以實(shí)現(xiàn)對(duì)于社會(huì)輿論風(fēng)向的監(jiān)控作用,具有重要的研究意義。該文通過(guò)使用word2vec語(yǔ)言模型,在真實(shí)的詩(shī)歌數(shù)據(jù)中進(jìn)行實(shí)驗(yàn),表明該模型對(duì)于新體詩(shī)的情感分析是十分有效的,從而可以為社會(huì)對(duì)于輿論風(fēng)向的監(jiān)控提供科學(xué)依據(jù)。
由于詩(shī)歌的情感往往豐富多樣,用詞方式也千變?nèi)f化,除此之外,詩(shī)歌的情感表達(dá)與社會(huì)熱點(diǎn)有著直接關(guān)系,很多詩(shī)歌的寫(xiě)作都是基于熱點(diǎn)事件的評(píng)價(jià)以及感慨。因此,下一階段的工作可以圍繞社會(huì)熱點(diǎn)事件對(duì)新體詩(shī)進(jìn)行情感分析。