王濤, 周藝雯
(同濟大學浙江學院 電子與信息工程系, 浙江 嘉興 314000)
科技技術(shù)的快速發(fā)展以及市場的快速擴張,使得企業(yè)間競爭愈發(fā)猛烈。以往,人們依靠路邊發(fā)傳單、電視放廣告等作為營銷策略,現(xiàn)如今,企業(yè)營銷策略不斷改進,精準營銷依靠分析受眾特征,優(yōu)化產(chǎn)品策略贏得企業(yè)經(jīng)營者的青睞。UGC(User Generated Content)在線評論,是新媒體平臺人們對商品數(shù)據(jù)的反饋心得。在線評論能反映用戶對當前購買商品質(zhì)量的態(tài)度[1]。電商評論網(wǎng)頁上,購買過產(chǎn)品的消費者對產(chǎn)品進行評價,這些評價對產(chǎn)品口碑起決定性作用。在產(chǎn)品服務(wù)的過程中,用戶不僅僅是接受者,也是產(chǎn)品消費過程中的信息提供者。作為商品的銷售方,如何分析用戶產(chǎn)生的數(shù)據(jù),例如用戶對產(chǎn)品的評論數(shù)據(jù)等,在此基礎(chǔ)上,商家可以修正不足,改進服務(wù),提升用戶滿意度。故而,基于在線評論的文本挖掘吻合供需雙方需求,受到越來越多用戶的青睞。本文通過采集分析攜程網(wǎng)民宿數(shù)據(jù),建立基于UGC數(shù)據(jù)分析模型。數(shù)據(jù)模型分為爬蟲模塊和分析模塊。爬蟲模塊采集房源數(shù)據(jù)和對應(yīng)評論數(shù)據(jù),分析模塊負責對評論數(shù)據(jù)集的數(shù)據(jù)清洗、分詞、特征提取、貝葉斯分類和情感分析。
網(wǎng)絡(luò)爬蟲向目標網(wǎng)站發(fā)送請求的過程是爬蟲程序模擬瀏覽器發(fā)送請求的過程[2]。發(fā)送http請求過程[3]如下。
(1) 瀏覽器發(fā)送Request請求,獲取目標網(wǎng)址中的html文件數(shù)據(jù)代碼,服務(wù)器把Response發(fā)送給瀏覽器;
(2) 瀏覽器解析收到的數(shù)據(jù),引用JS、CSS、Images源文件,瀏覽器再次發(fā)送請求,獲取過程中這些代碼用到的文件,完成渲染;
(3) 若請求失敗則對應(yīng)欄目顯示錯誤;
(4) 當前數(shù)據(jù)接收成功后,瀏覽器會根據(jù)當前的HTML代碼,渲染前端頁面。
互聯(lián)網(wǎng)中,不是所有網(wǎng)頁都可任意爬取。Robots 協(xié)議是網(wǎng)絡(luò)爬蟲中網(wǎng)站限制爬蟲的協(xié)議[4]。協(xié)議允許下,為高效準確爬取數(shù)據(jù),反爬蟲技術(shù)應(yīng)運而生[5]:(1) 基于Headers字段。網(wǎng)站檢查Headers字段User-Agent,如圖1所示。

圖1 用戶字段
網(wǎng)站基于用戶瀏覽器版本、瀏覽器內(nèi)核及操作系統(tǒng)版本渲染網(wǎng)頁。爬蟲過程,修改User-Agent字段,欺騙服務(wù)器,繞過檢查,完成響應(yīng)。(2)基于模擬用戶行為。當前主流網(wǎng)站通過檢測用戶訪問網(wǎng)站的頻率來判斷訪問狀況。若某賬戶短時間頻繁訪問,會被網(wǎng)站要求驗證碼訪問,或頁面收到響應(yīng)狀態(tài)碼“429 Too Many Requests”,甚至被網(wǎng)站拉入“黑名單”。為規(guī)避上述情況,一般通過RANDOM_DELAY函數(shù)設(shè)置隨機延時范圍,或使用IP代理。(3)基于動態(tài)頁面。一些網(wǎng)站的動態(tài)頁面通過AJAX或JS請求生成數(shù)據(jù),不可直接爬取,這便需要基于動態(tài)頁面的反爬蟲策略。如果能找到AJAX請求,分析請求中的隱含信息,可以間接獲取目標數(shù)據(jù)。當出現(xiàn)無法直接獲取AJAX請求時,可嘗試使用框架selenium+ phantomjs[6]。
本文在比對了市面上同類型民宿租房網(wǎng)站,包括攜程、去哪兒、飛豬、途牛、愛彼迎等民宿租房網(wǎng)站后(alexa 網(wǎng)站2020年5月數(shù)據(jù)),選擇攜程網(wǎng)作為目標網(wǎng)站。本文的爬蟲程序步驟如下。
(1) URL獲取。依照行政區(qū)獲取房源列表界面的各個行政區(qū)下的房源URL。
(2) 房源頁面下載。獲取房源頁面的詳細信息和對應(yīng)房源評論數(shù)據(jù)集。
(3) 網(wǎng)頁解析及結(jié)構(gòu)化。解析網(wǎng)頁源碼得到結(jié)構(gòu)化數(shù)據(jù)。
(4) URL管理。判斷URL是否爬取。
(5) 數(shù)據(jù)入庫。存儲結(jié)構(gòu)化的房源數(shù)據(jù)。
本文最終采集房源數(shù)據(jù)10 767條,評論數(shù)據(jù)102 550條,其中房源數(shù)據(jù)項包括:名稱、尺寸、類型、分數(shù)、評論數(shù)目、房源戶型、床數(shù)、臨近地點以及熱門屬性,如圖2所示。

圖2 房源數(shù)據(jù)(部分)
通過初步分析發(fā)現(xiàn),可能是受當前評分刷單風氣影響,評分不能較好反映該欄目對應(yīng)房源的評分。房源數(shù)據(jù)綜合評分項評分中滿分占比高達85.23%,選擇評分數(shù)據(jù)作為參考意見時,容易出現(xiàn)偏離真相的情況[7]。針對這種情況,本文以評論數(shù)據(jù)為基礎(chǔ),拆解評論數(shù)據(jù),為評論數(shù)據(jù)重新打分。
文本數(shù)據(jù)挖掘(Text Mining)是指從文本數(shù)據(jù)中抽取有價值的信息和知識的計算機處理技術(shù)。文本數(shù)據(jù)挖掘通過高效獲取含有隱藏價值的信息,指導(dǎo)人們的理論基礎(chǔ)和社會實踐。本文文本挖掘過程如圖3所示。

圖3 文本挖掘流程
(1) 訓(xùn)練集獲取。訓(xùn)練集一般由經(jīng)過預(yù)先訓(xùn)練的特征向量組成,每條文本有一個類別編號。本文訓(xùn)練集的編號即為房源的評分分值。
(2) 數(shù)據(jù)預(yù)處理。文本數(shù)據(jù)往往不能直接進行文本挖掘,對臟數(shù)據(jù)進行清理、中文分詞、進行相似度度量并建立特征集并提取是正式進行文本挖掘前必不可少的步驟。
(3) 文本挖掘。本文通過評論數(shù)據(jù)進行房源數(shù)據(jù)重打分,打分區(qū)間位于0.0-1.0,精度為0.1。這實質(zhì)上是一種文本聚類(Cluster)分析,在綜合比較后本文選擇樸素貝葉斯模型進行情感分析。
(4) 模式輸出。為便于直觀展現(xiàn),本文選擇python的Matplotlib進行圖表可視化。
本文程序框圖如圖4所示。

圖4 程序框圖
數(shù)據(jù)預(yù)處理是文本挖掘中承上啟下的環(huán)節(jié),預(yù)處理清除網(wǎng)絡(luò)爬蟲過程中的臟數(shù)據(jù),將文本分詞。預(yù)處理結(jié)果將直接影響后續(xù)特征提取及分類器分類結(jié)果。
2.1.1 數(shù)據(jù)清洗
電商評論的數(shù)據(jù)質(zhì)量經(jīng)常參差不齊,有些數(shù)據(jù)價值密度較低,有些刷單數(shù)據(jù)會影響統(tǒng)計結(jié)果,使最終分析結(jié)果不真實。數(shù)據(jù)清洗的目標:(1) 文本去重,減少刷單、用戶操作失誤、爬取重復(fù)評論的評論文本。(2) 壓縮去詞,刪除將評論中連續(xù)重復(fù)表達的詞匯。(3) 格式錯誤,如對房源尺寸數(shù)據(jù)“20 m2”,將其改成“20”。
2.1.2 中文分詞
對人類,根據(jù)語境判別句子含義是自然而然的,但對計算機十分困難。英文文本存在含獨立語義的最小語言單位[8],通過空格就可分隔,但對無空格分隔的中文分詞,將完整的中文句子分解成多個具有語義的詞匯,是中文自然語言處理中基礎(chǔ)但重要的環(huán)節(jié)。
自然語言建模是自然語言問題轉(zhuǎn)化成機器學習問題的關(guān)鍵,建模的目的是將單詞向量化,將詞語映射成實數(shù)向量[9]。2013年,谷歌研究團隊提出從大量文本語料庫中學習含有特定語義信息的低維度詞向量無監(jiān)督學習方式語義模型[10],Word2vec詞向量研究模型。Word2vec利用神經(jīng)網(wǎng)絡(luò),將獨立詞語轉(zhuǎn)化為詞向量,統(tǒng)計計算向量與向量間空間距離,實現(xiàn)非結(jié)構(gòu)型文本轉(zhuǎn)化為向量空間的向量運算。Word2vec模型包含兩種重要模型:CBOW(Continuous Bag-if-Words)模型和Skip-gram (Continuous Skip-gram)模型,這種方法訓(xùn)練出來的模型,訓(xùn)練步驟被相對簡化、合成方式被優(yōu)化,同時詞向量質(zhì)量較高,還降低了運算復(fù)雜度[11]。
假設(shè)已知輸入詞語W(t),預(yù)測輸入詞語W(t)周圍上下文2n個詞語的模型稱為Skip-gram 模型[12]。如果已知w(t)的上下文wct,存在未知詞語w(t),預(yù)測詞語w(t)的模型稱為 CBOW 模型,如圖5所示。

圖5 模型示例
分別為Skip-gram模型和CBOW模型的模型示例,此時n=2,模型包含三個層級:輸入層、投影層、輸出層。
上下文的定義如式(1)。
wt=wt-n,…,wt-1,wt+1,…,wt+n
(1)
式中,c表示詞語wt的前后詞語數(shù)量。Skip-gram模型和CBOW模型的優(yōu)化目標函數(shù)分別為式(2)、式(3)。
(2)
(3)
式中,C表示包含所有詞語的語料庫;k表示當前詞語w(t)的窗口大小。
以Skip-gram模型為例,假設(shè)語料庫中句子“農(nóng)業(yè)現(xiàn)代化受到限制”,選定詞語“受到”,上下文:農(nóng)業(yè)、現(xiàn)代化、限制。要使得條件概率值達到最大,給定w(t)前提下,使得單詞t距離2n的上下文概率達到最大:P(農(nóng)業(yè)|受到)、P(現(xiàn)代化|受到)、P(限制|受到)[13]。
當前的分詞工具一般基于Word2vec,目前較為成熟的開源中文分詞有LTP、Jieba、THULAC、NLPIR等[14]。本文通過LTP分詞工具實現(xiàn)分詞,LTP提供了以下模型文件,如表1所示。

表1 LTP模型文件
基于LTP分詞提供的cws.model模型文件,實現(xiàn)分句和詞性標注,部分LTP代碼如下。
for sentence in cont:
if sentence.strip() != ’’:
words= segmentor.segment(sentence)
for word in words:
f1.write(word+’ ’)
f1.write(’ ’)
word1=segmentor.segment(sentence)
postags = postagger.postag(word1)
for word,tag in zip(word1,postags):
if (tag == ’n’ ):
f.write(word+’ ’)
f.write(’ ’)
else:continue
貝葉斯分類是一類分類算法的總稱,這類算法均以貝葉斯定理為基礎(chǔ),故統(tǒng)稱為貝葉斯分類。而樸素貝葉斯分類是貝葉斯分類中最簡單,也是常見的一種分類方法。樸素貝葉斯的思想基礎(chǔ)是這樣的:對于給出的待分類項,求解在此項出現(xiàn)的條件下各個類別出現(xiàn)的概率,哪個最大,就認為此待分類項屬于哪個類別。本文根據(jù)類別于詞之間的聯(lián)合概率在已知條件概率和先驗概率的基礎(chǔ)上,去計算其后驗概率的分類。樸素貝葉斯算法的前提條件是類別具有獨立性,一個類別的屬性值對于給定類別的影響應(yīng)該獨立于該類別的其他屬性值。通過分類來計算一組給定樣本屬于特定類別的概率[15]。本文分類算法的具體過程描述如下。
(1) 對數(shù)據(jù)樣本進行標記;
(2) 對不同類別的樣本數(shù)據(jù)進行中文分詞和降噪;
(3) 將詞條組合成特征組并分析詞條頻率信息;
(4) 根據(jù)詞條頻率信息來計算其先驗概率;
(5) 對樣本數(shù)據(jù)進行中文分詞及降噪形成樣本特征組;
(6) 將詞條的先驗概率代入公式計算其后驗概率,所屬的文本類別就是其中最大的概率。
本文通過上述分類算法,將數(shù)據(jù)文本分成8個主題,價格、特色、體驗、餐飲、服務(wù)、環(huán)境、設(shè)施和交通,去掉無關(guān)的數(shù)據(jù)后,然后將此8個主題文本各分成五類(按照滿意度降序排列),總共四十個類別?!皟r格”主題評分如表2所示。

表2 模型評分“價格”主題
為便于理解情感趨勢,繪制基于評論評分的可視化圖表,將評論數(shù)據(jù)與初始房源評分數(shù)據(jù)進行對比就可以發(fā)現(xiàn),初始房源評分數(shù)據(jù)以好評居多,很難從中得到更多有用信息,但是通過評論數(shù)據(jù),綜合分析,就可以對當前地區(qū)的民宿經(jīng)營狀況提出以下方面建議。
(1) 提高民宿的餐飲尤其是早餐的服務(wù)質(zhì)量
餐飲-情感字典如圖6所示。
由圖6可知,排前五名的詞匯為:早餐、味道、菜、早飯、飯, 這表示住客對早餐的關(guān)注度較高,提示經(jīng)營者如果提高早餐質(zhì)量,可以調(diào)高服務(wù)評價。
(2) 提高民宿的硬件設(shè)施和日常維護
設(shè)施可視化如圖7所示。

圖7 設(shè)施可視化
總體來說,消費者對民宿的硬件設(shè)施滿意度不高,給出極低評價的不占少數(shù)。通過觀察情感詞典,提及頻率較高的硬件設(shè)施相關(guān)的詞語依次是房間、床、衛(wèi)生間、空調(diào)等,民宿的經(jīng)營者可以著重提高這些設(shè)施的檔次,同時做好即有基礎(chǔ)硬件設(shè)施的維護工作。
(3) 優(yōu)化民宿的服務(wù)體系
服務(wù)可視化如圖8所示。

圖8 服務(wù)可視化
雖然有一部分用戶相當滿意民宿的服務(wù),但多數(shù)顧客將評分置于0.6—0.8,這意味著民宿的服務(wù)勉強使其滿意,此外抱有消極態(tài)度的用戶不在少數(shù)。初步猜測這是有別于酒店擁有一套完整服務(wù)體系,民宿雖然具有自由神秘的特點,但也使得房東對于租客的態(tài)度比較自由隨性。酒店具有一套成熟的服務(wù)體系來提供基本的前臺接待及住房導(dǎo)引服務(wù)。而民宿經(jīng)營者通過網(wǎng)絡(luò)來履行服務(wù)責任,大多不與用戶面對面聯(lián)系:交付費用、鑰匙告知、住房期間問題解決等。這意味著用戶一旦出現(xiàn)緊急問題而無法得到及時滿意的解決,如空調(diào)制冷、熱水器不熱等問題。這就需要經(jīng)營者在基礎(chǔ)設(shè)施上下功夫,提高服務(wù)質(zhì)量。
隨著互聯(lián)網(wǎng)經(jīng)濟和電子商務(wù)的急速發(fā)展,產(chǎn)生了越來越多的融合數(shù)據(jù),更多的傳統(tǒng)行業(yè)將電子商務(wù)納入到其他業(yè)務(wù)體系中,雙十一的交易金額也在逐年增長。這些融合數(shù)據(jù)的價值挖掘?qū)⒃谖磥淼陌l(fā)展中具有廣大的前景和實用價值,為產(chǎn)品的發(fā)展和生產(chǎn)決策提供重要的參考依據(jù)。本文通過爬取了攜程網(wǎng)民宿房源數(shù)據(jù)和在線評論作為原始的數(shù)據(jù)集,應(yīng)用傳統(tǒng)的文本分析方法,分析房源數(shù)據(jù)和評論數(shù)據(jù)的特點,應(yīng)用貝葉斯分類完成了基于獨立主題的情感分析。根據(jù)爬取房源數(shù)據(jù)的特點,在以下方面展開了研究:(1) 房源數(shù)據(jù)爬蟲,通過分析房源網(wǎng)頁結(jié)構(gòu),分析待爬節(jié)點,解析網(wǎng)頁。(2) 中文文本預(yù)處理,中文文本降噪、去重和分詞。(3) 8類主題評論文本劃分,通過Word2vec原理,建立8類主題情感字典,基于8類情感字典完成評論文本劃分。(4) 對房源數(shù)據(jù)進行樸素貝葉斯模型情感分析,通過數(shù)據(jù)可視化得出直觀結(jié)果。
針對本文研究,只使用了樸素貝葉斯算法對評論語料進行分類分析,如果可以通過比較更多其他模型算法對其進行分析,可能會有更好的結(jié)論。