涂小琴
(云南師范大學(xué)文理學(xué)院,昆明 650222)
隨著現(xiàn)代生活水平的提高,更多的愿意將時(shí)間和精力投入至精神生活,越來越多的人去到電影院,作為國內(nèi)電影最有影響的莫過于豆瓣(www.douban.com),豆瓣給電影愛好者提供了一個(gè)很好的分享及評(píng)論平臺(tái)。每一部電影,在豆瓣上都可以看到很多的評(píng)論,可見人們對(duì)電影的喜愛。那什么樣的電影是大眾所喜歡的呢?什么樣的電影又是不被大眾所喜愛呢,通過Py?thon爬蟲,我們可以獲取大量的影評(píng)來進(jìn)行分析,從而得出觀眾的喜好。
情感分析是一種常見的自然語言處理(NLP)方法的應(yīng)用,NLP情感分析中一般有兩種方法,第一種是根據(jù)語義和依存關(guān)系來量化文本的情感色彩。但這種方法首先需要很完善的情感詞庫,另外需要很好的語言學(xué)基礎(chǔ),也就是說需要知道一個(gè)句子通常在什么情況為表現(xiàn)為Positive和Negative。個(gè)人認(rèn)為,我們永遠(yuǎn)無法窮盡所有的語法規(guī)則和感情詞匯,這也就無形之中增加了構(gòu)造分類規(guī)則的難度。第二種方法,就是基于機(jī)器學(xué)習(xí)的方法?;跈C(jī)器學(xué)習(xí),本質(zhì)上就是要轉(zhuǎn)化為機(jī)器學(xué)習(xí)能解決的問題。情感分析實(shí)際上就是認(rèn)為是機(jī)器學(xué)習(xí)中的二分類問題。但是機(jī)器是無法理解文本的,所以我們必須能夠?qū)崿F(xiàn)讓文本轉(zhuǎn)化為向量,從而讓機(jī)器能夠理解。
通過豆瓣網(wǎng)站中最近熱點(diǎn)的兩部電影《摔跤吧!爸爸》,以及電影《悟空傳》的影評(píng)進(jìn)行數(shù)據(jù)處理,通過PLN機(jī)器學(xué)習(xí)進(jìn)行情感分析,分析觀眾情感傾向。
豆瓣上有很多關(guān)于每一部電影的評(píng)論,對(duì)于一些評(píng)分比較高的電影而言,有的評(píng)論在幾十萬條,所以采用Python網(wǎng)絡(luò)爬蟲來進(jìn)行處理,由于豆瓣是一個(gè)反爬蟲的網(wǎng)站,所以在做網(wǎng)絡(luò)爬蟲時(shí),還需要進(jìn)行瀏覽器訪問模擬,通過對(duì)網(wǎng)頁源代碼的分析,用正則表達(dá)式來獲取所需數(shù)據(jù)。為了能夠更好地分析觀眾的情感,在獲取數(shù)據(jù)時(shí),分別獲取了豆瓣網(wǎng)站上得分高于9.0的兩部電影,以及得分低于4.0的兩部電影的影評(píng)數(shù)據(jù)進(jìn)行分析。通過高分的兩部電影與低分的兩部電影進(jìn)行對(duì)比分析,更能反映觀眾的喜好。
要獲取相應(yīng)的數(shù)據(jù),不同的網(wǎng)站對(duì)應(yīng)著不同的正則表達(dá)式,最近在豆瓣網(wǎng)站中得分比較高的其中一部電影為《摔跤吧,爸爸!》,評(píng)分在9.1分,首先通過進(jìn)入豆瓣網(wǎng)站進(jìn)入該電影影評(píng),獲取影評(píng)首頁的URL,再與影評(píng)的下一頁進(jìn)行URL比較,找到這部電影所有影評(píng)的URL規(guī)則,利用循環(huán)來進(jìn)行讀取每頁影評(píng)的數(shù)據(jù)。借助庫文件Beautifulsoup、Requests以及Re來進(jìn)行數(shù)據(jù)的爬取,爬取的數(shù)據(jù)有:評(píng)論人、評(píng)論的時(shí)間、評(píng)論等級(jí)、評(píng)論具體內(nèi)容等,因?yàn)樵u(píng)論量比較大,所以將獲取到的數(shù)據(jù)存放到Excel中。獲取影評(píng)的關(guān)鍵代碼如下:
圖1 獲取數(shù)據(jù)結(jié)果
通過圖1可以看出,獲取到的數(shù)據(jù)中有很多的語氣詞,如“啊”,“哦”“的”等等,還有不少的標(biāo)點(diǎn)符號(hào),這些都不利于我們對(duì)關(guān)鍵詞出現(xiàn)次數(shù)的統(tǒng)計(jì),所以需對(duì)相應(yīng)的數(shù)據(jù)進(jìn)行清理工作,借助“WordStop.txt”停用詞來進(jìn)行處理,將停用詞進(jìn)行對(duì)比過濾。得到清理后的數(shù)據(jù)。通過Python中的正則表達(dá)式模塊RE來進(jìn)行清理工作,關(guān)鍵代碼如下:
以及對(duì)詞頻進(jìn)行統(tǒng)計(jì)。
詞頻(Term Frequency,TF)指的是某一個(gè)給定的詞語在該文件中出現(xiàn)的頻率。這個(gè)數(shù)字是對(duì)詞數(shù)(term count)的歸一化,以防止它偏向長的文件。(同一個(gè)詞語在長文件里可能會(huì)比短文件有更高的詞數(shù),而不管該詞語重要與否。)對(duì)于在某一特定文件里的詞語來說,它的重要性可表示為:
在以上式子中,ni,j是該詞在文件dj中的出現(xiàn)次數(shù),而分母則是在文件dj中所有字詞的出現(xiàn)次數(shù)之和。
其中, ||D:語料庫中的文件總數(shù), ||{ }j:ti∈dj:包含詞語ti的文件數(shù)目(即ni,j≠0的文件數(shù)目),如果該詞語不在語料庫中,就會(huì)導(dǎo)致被除數(shù)為0,因此一般情況下使用1+ | { j: ti∈dj}
|,然后,tfidfi,j=tfij×idfi。
某一特定文件內(nèi)的高詞語頻率,以及該詞語在整個(gè)文件集合中的低文件頻率,可以產(chǎn)生出高權(quán)重的TF-IDF。因此,TF-IDF傾向于過濾掉常見的詞語,保留重要的詞語。為了能夠分類出最有效的情感詞,引用 PMI(Pointwise Mutual Information),PMI用來衡量兩個(gè)事物之間的相關(guān)性(例如兩個(gè)詞)。所以對(duì)公式(2)進(jìn)行修改。
其中,pos表示文檔的情感,word表示某一個(gè)詞。
為了解決分詞和詞頻問題,使用Python中的jieba分詞庫。
在影評(píng)中的一些詞,可能是常用詞,所以需要把他們放入到常用詞文檔中,在進(jìn)行分詞時(shí),就需用進(jìn)行提前剔除,而有一些詞語并不是普通意義上的情感詞,所以需要通過公式(3)來構(gòu)造這些詞語的詞向量。具體實(shí)現(xiàn)的關(guān)鍵代碼如下:
通過對(duì)兩部電影影評(píng)的結(jié)果進(jìn)行分析,發(fā)現(xiàn),觀眾對(duì)兩部電影的推薦度如圖2所示。
通過對(duì)詞頻進(jìn)行分析,得出兩部電影的PMI最大的前15個(gè)詞。如表1所示:
從上表可以看出,對(duì)于《摔跤吧!爸爸》這部電影,很多評(píng)論顯示的是褒義詞居多,而《悟空傳》評(píng)論中貶義詞居多,也反映了觀眾的喜好心理。
表1
圖2
本文通過機(jī)器學(xué)習(xí)的方法,讓文本轉(zhuǎn)換為向量,方便機(jī)器識(shí)別,采集的數(shù)據(jù)在2萬條左右,數(shù)據(jù)越多,所得到的分詞的權(quán)重也就越準(zhǔn)確,文中通過Python語言獲取大量的影評(píng)數(shù)據(jù),將兩部電影的影評(píng)進(jìn)行對(duì)比分析,從PMI的結(jié)果可以看出來,觀眾更喜歡看勵(lì)志,題材好的作品。
[1]江騰蛟,萬常選,劉德喜.基于語義分析的評(píng)價(jià)對(duì)象-情感詞對(duì)抽取[J].計(jì)算機(jī)學(xué)報(bào),2016.4.
[2]朱琳琳,徐建.網(wǎng)絡(luò)評(píng)論情感分析關(guān)鍵技術(shù)及應(yīng)用研究[J].情報(bào)理論與實(shí)踐,2017.1.
[3]趙剛,徐贊.基于機(jī)器學(xué)習(xí)的商品評(píng)論情感分析模型研究[J].信息安全研究,2017.2.
[4]崔連超.互聯(lián)網(wǎng)評(píng)論文本情感分析研究[D].山東大學(xué),2015.
[5]藍(lán)天廣.電子商務(wù)產(chǎn)品在線評(píng)論的細(xì)粒度情感強(qiáng)度分析[D].北京郵電大學(xué),2015.