彭慶喜 張力 張瑞志
【摘 要】本文利用Java結(jié)合開源機器學習工具Weka設(shè)計與實現(xiàn)了一個輕量級評論抽取原型系統(tǒng)L-RES。首先設(shè)計了一個爬行子系統(tǒng),將評論從網(wǎng)站爬取下來,然后對網(wǎng)頁進行解析以及結(jié)構(gòu)化。進一步,采用機器學習方法挖掘評論中的情感信息。最后將原型系統(tǒng)封裝撐API供開發(fā)者是使用。實驗證明該框架非常有效。
【關(guān)鍵詞】L-RES;評論;抽??;Weka
1 引言
隨著互聯(lián)網(wǎng)的發(fā)展,電子商務(wù)更廣泛的被使用。同時,產(chǎn)品評論越來越引起人們的關(guān)注。據(jù)調(diào)查,在電子購物網(wǎng)站上,當產(chǎn)品的評分從4.5到5.0分(滿分5分),可以為用戶帶來25%的產(chǎn)品銷量增長[1]。因此產(chǎn)品評論網(wǎng)站如Yelp,Resellerratings,Tripadvisor,中國的點評網(wǎng)(Dianping.com)等越來越多。然而,產(chǎn)品評論網(wǎng)站中的評論信息數(shù)量巨大,內(nèi)容龐雜,用戶很難從中獲取自己感興趣的信息。本文設(shè)計與實現(xiàn)了一個Web評論抽取系統(tǒng)Lightweight Review Extraction System(L-RES),通過爬蟲將Web評論抽取下來。進一步的從,采用機器學習方法對評論按照情感進行分類。最后的結(jié)果設(shè)計成API供開發(fā)者調(diào)用。
2 L-RES抽取子系統(tǒng)設(shè)計
本文設(shè)計的抽取系統(tǒng)主要由以下模塊組成:(1)網(wǎng)頁爬行模塊;(2)網(wǎng)頁解析模塊。
2.1 網(wǎng)頁爬行模塊
為了獲取網(wǎng)頁,爬蟲必須像一個web客戶端那樣進行工作。它首先向服務(wù)器發(fā)送一個http請求,并讀取返回的響應(yīng)。如果讀取到的http狀態(tài)碼為200,則表示本次請求成功,并建立了一個連接。為了讓爬蟲系統(tǒng)能夠正常且自動的爬取特定的網(wǎng)頁,必須首先建立一個種子URL,作為爬蟲抓取網(wǎng)頁的入口。當連接建立之后,爬蟲會獲取到連接到的網(wǎng)頁,并提取特定的網(wǎng)頁鏈接加入到URL隊列,然后保存連接到的網(wǎng)頁文件到相應(yīng)的文件系統(tǒng),進入到下一次爬取和鏈接抽取的狀態(tài),直到目標URL全部抓取完成。Redis是一個基于C語言且開源的內(nèi)存數(shù)據(jù)庫,使用Redis中的Set集合可以實現(xiàn)爬蟲隊列的功能,故本文使用Redis數(shù)據(jù)庫作為本文爬蟲系統(tǒng)的URL隊列。
2.2 網(wǎng)頁解析模塊
本文爬蟲的網(wǎng)頁解析模塊使用jsoup1.9.1和文檔型數(shù)據(jù)MongoDB [2]開發(fā)。
jsoup是一個用于解析HTML標簽的Java類庫,它提供了非常便利的API來操作和抽取HTML標簽下的信息。
MongoDB是一個基于分布式文件存儲的數(shù)據(jù)庫,由C++語言編寫,旨在為web應(yīng)用提供可擴展的高性能數(shù)據(jù)存儲方案。是非關(guān)系型數(shù)據(jù)庫中功能最豐富的數(shù)據(jù)庫產(chǎn)品。本文主要利用MongoDB存儲手機評論語句、評論人、評論時間、產(chǎn)品評分等信息。MongoDB與RDBMS(Relationship Database Management System)的最大區(qū)別在于,MongoDB中沒有表結(jié)構(gòu)的概念,存儲在數(shù)據(jù)庫中的最小單元為文檔,故本文中解析得到的信息在MongoDB中的存儲形式為:{
Comment: ,
Holder: ,
Time: ,
Score:
}
其中Comment是評論語句,Holder是評論人,Time是評論時間,Score是產(chǎn)品評分。
3 L-RES情感分析子系統(tǒng)
數(shù)據(jù)預(yù)處理是情感分析的前提,對于情感分類任務(wù)而言,需處理的數(shù)據(jù)一般為非結(jié)構(gòu)化文本,故需要借助自然語言處理技術(shù)來處理此類數(shù)據(jù)。
在情感分析之前需對數(shù)據(jù)完成諸如分詞、去除停用詞、詞干恢復(fù)、詞性標注、句法分析、語義分析、句子依存關(guān)系分析等處理任務(wù),以便充分獲取特征詞,進而提高情感分類的召回率和精確率。
本文中的數(shù)據(jù)預(yù)處理模塊基于weka [3]開發(fā)完成,主要實現(xiàn)了以下功能:
(1)中文情感句的依存關(guān)系分析;
(2)英文情感句的依存關(guān)系分析;
(3)英文句的詞性標注;
(4)中文句子的分詞處理;
(5)向量空間模型的生成;
本框架主要實現(xiàn)了情感分類算法:算法描述如下:
Step1:對待處理數(shù)據(jù)做去停止詞,分詞及詞性標注等預(yù)處理;
Step2:將Step1 得到的數(shù)據(jù)作為訓練數(shù)據(jù)訓練簡單貝葉斯分類器;
Step3:對測試數(shù)據(jù)集執(zhí)行Step1并將得到的數(shù)據(jù)用于測試Step2中訓練的模型。若測 試結(jié)果符合要求則執(zhí)行Step4,否則依次執(zhí)行Step1,Step2和Step3;
Step4:保存測試好的分類器;
Step5:調(diào)用Step4得到的分類器對未標記數(shù)據(jù)執(zhí)行分類任務(wù);
4 總結(jié)
本文研究了Web評論的抽取。設(shè)計與實現(xiàn)了一個輕量級評論抽取系統(tǒng)原型系統(tǒng)L-RES。首先設(shè)計爬行系統(tǒng)從互聯(lián)網(wǎng)爬取評論信息,然后設(shè)計了網(wǎng)頁解析模塊對網(wǎng)頁進行解析與結(jié)構(gòu)化,然后將評論持久化到Mongo DB數(shù)據(jù)庫。進一步,調(diào)用Weka分類算法對評論中的情感進行分類。最后將結(jié)果封裝給開發(fā)者使用。該系統(tǒng)目前存在的問題在于,針對管控比較嚴格的評論系統(tǒng)還不能有效抽取評論。另外一方面,系統(tǒng)的可擴展性不強,下一步我們打算針對這兩方面對其進行改進。
參考文獻
[1]Here's Proof That Yelp Rating Can Make Or Break A Retailer. "Here's Proof That Yelp Rating Can Make Or Break A Retailer." Businessinsider
[2]Tong Y M,Huang W,Dai-Wei L I,et al. Design and implementation of information integration system based on Mongo DB[J]. Information Technology,2015
[3] Hall M. The WEKA Data Mining Software: An Update SIGKDD Explorations[J]. Acm Sigkdd Explorations Newsletter,2010,11(1):10-18