張家城 朱艷輝
摘要:隨著網(wǎng)購平臺(tái)快速崛起,如何快速準(zhǔn)確地在海量的消費(fèi)者評(píng)價(jià)文本當(dāng)中提取消費(fèi)者對(duì)商品評(píng)論的主觀傾向成為近年來的研究熱點(diǎn)。本文以商品評(píng)論文本傾向識(shí)別為研究對(duì)象,使用SVM算法,實(shí)現(xiàn)了基于SVM的商品評(píng)分系統(tǒng),并實(shí)現(xiàn)了客戶端和訓(xùn)練端的分離,方便訓(xùn)練端實(shí)現(xiàn)分布式架構(gòu)。
關(guān)鍵詞: 文本分類;傾向識(shí)別;支持向量機(jī);SVM算法;商品評(píng)分;
中圖分類號(hào):TP311.1 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)30-0223-03
Abstract: With the rapid rise of online shopping platform, how to quickly and accurately extract the subjective tendency of consumers to product reviews in the mass of consumer evaluation text has become a research hotspot in recent years. In this thesis, the tendency of commodity comment text recognition is considered as the research object. Using SVM algorithm, the SVM-based commodity scoring system is implemented, and the client and training end are separated, which facilitates the training end to realize the distributed architecture.
Key words: Text Categorization; Emotion recognition; Support Vector Machine; SVM; Product rating
1 引言
20世紀(jì)90年代,計(jì)算機(jī)技術(shù)的迅猛發(fā)展,催生了屬于21世紀(jì)的新一代商品交易形式——電子商務(wù),為我們打開了商品交易的一扇新的大門,網(wǎng)絡(luò)使得人們可以足不出戶,便可盡覽天下商品,即使身處異地,也可以互通有無。隨著網(wǎng)絡(luò)和計(jì)算機(jī)硬件的不斷升級(jí),各種形式的電子商務(wù)平臺(tái)正在取代傳統(tǒng)的市集,成為我們商品交易的新選擇。這種扎根于互聯(lián)網(wǎng)的新興經(jīng)濟(jì)活動(dòng),一經(jīng)出現(xiàn)便迅速發(fā)展壯大。自2003年淘寶網(wǎng)成立以來,中國(guó)的網(wǎng)絡(luò)購物行業(yè)迅猛發(fā)展,時(shí)至今日,中國(guó)互聯(lián)網(wǎng)內(nèi)已催生出以淘寶、京東、蘇寧等巨頭為首的近百家中大型互聯(lián)網(wǎng)購物平臺(tái)。但由于網(wǎng)絡(luò)交流天然的地域隔離性,消費(fèi)者往往面臨著信息不對(duì)稱的尷尬境地,難以有效地了解商品的質(zhì)量、服務(wù)等有效信息,急需一套商品評(píng)價(jià)系統(tǒng)來幫助用戶做出正確的消費(fèi)決策。
2 基于SVM的商品評(píng)分預(yù)測(cè)
2.1 特征詞選取
原始文本存在大量的詞,使得計(jì)算的維度非常高,我們需要在文本中選取能夠代表文本屬性的特征詞作為權(quán)重計(jì)算的詞,從而降低計(jì)算的復(fù)雜度。
如果詞語有很好的區(qū)分能力,很少的詞語就能起到區(qū)分文本的作用[1]。這些具有高區(qū)分度的詞語就叫作特征詞。目前計(jì)算特征詞的算法主要有以下幾種:文檔頻率(DF,Document Frequency)、信息增益(IG,Information Gain)、卡方校驗(yàn)(CHI,Chi-square Test)。
卡方校驗(yàn)是通過觀察實(shí)際值與理論值的偏差來確定理論是否正確。本文將采用計(jì)算效率高、算法實(shí)現(xiàn)簡(jiǎn)單的卡方校驗(yàn)法作為征值選取算法。
2.2 特征詞權(quán)重
在文本情感傾向識(shí)別算法中,我們常用的特征向量值是詞頻-逆文本頻率,即TF-IDF(Term Frequency-Inverse Document Frequency)算法。TF-IDF是一種用于文本處理的權(quán)重計(jì)算算法,如果一個(gè)詞在一篇文章中出現(xiàn)的頻率高,并且在其他文章中出現(xiàn)的頻率小,則認(rèn)為這個(gè)詞對(duì)文本具有很好的區(qū)分能力。為了方便特征詞TD-IDF值參與SVM的計(jì)算,我們使用自然數(shù)對(duì)特征詞進(jìn)行標(biāo)號(hào),然后使用已經(jīng)標(biāo)號(hào)的特征詞對(duì)語料文本中的每一條文本計(jì)算其中包含的特征詞的TD-IDF值,這樣就能得到適用于SVM算法計(jì)算的特征詞向量集。
2.3 SVM算法
支持向量機(jī)(Support Vector Machine, SVM)以其出色的性能和精準(zhǔn)性,在文本挖掘、手寫識(shí)別等多個(gè)領(lǐng)域得到了成功的應(yīng)用。SVM的特點(diǎn)可以簡(jiǎn)單概括為以下兩點(diǎn):
1) SVM算法是在樣本線性可分的情況下進(jìn)行計(jì)算的,對(duì)于線性不可分的樣本,SVM算法采用核函數(shù)方法,把樣本點(diǎn)映射到高維空間中,使其在高維空間中線性可分,這種轉(zhuǎn)化使得SVM算法可以對(duì)絕大多數(shù)線性不可分的樣本進(jìn)行分類計(jì)算。
2) SVM算法基于結(jié)構(gòu)風(fēng)險(xiǎn)最小化理論在特征空間中構(gòu)建最優(yōu)的超平面,使得算法的計(jì)算獲得全局最優(yōu)化[2]。
2.4 實(shí)驗(yàn)結(jié)果與分析
2.4.1 實(shí)驗(yàn)工具與語料數(shù)據(jù)集
本次實(shí)驗(yàn)使用的語料集采用的是來自自然語言處理與信息檢索共享平臺(tái)的譚松波先生分享出來的中文情感挖掘語料[3]。包括攜程酒店評(píng)論、當(dāng)當(dāng)書籍評(píng)論和京東電腦評(píng)論三個(gè)領(lǐng)域,每個(gè)領(lǐng)域正負(fù)面評(píng)價(jià)各2000條,從每個(gè)評(píng)論的正負(fù)面評(píng)論中隨機(jī)抽取200條,共1200條評(píng)論語料作為測(cè)試集。
實(shí)驗(yàn)使用Java編程語言,實(shí)驗(yàn)過程中使用到的主要算法實(shí)現(xiàn)工具為L(zhǎng)ibsvm和HanLp分詞工具包。將訓(xùn)練模型對(duì)測(cè)試集預(yù)測(cè)的準(zhǔn)確率高低作為本次實(shí)驗(yàn)的評(píng)判標(biāo)準(zhǔn)。
2.4.2 實(shí)驗(yàn)結(jié)果
本小節(jié)針對(duì)SVM算法中的各個(gè)參數(shù)選擇進(jìn)行實(shí)驗(yàn)。svm的核函數(shù)包括線性核函數(shù)、RBF核函數(shù)、多項(xiàng)式核函數(shù)和Sigmoid核函數(shù),由于線性核函數(shù)無參數(shù)選擇,實(shí)驗(yàn)將分別對(duì)后三個(gè)核函數(shù)進(jìn)行實(shí)驗(yàn),其中多項(xiàng)式核函數(shù)存在多個(gè)參數(shù),實(shí)驗(yàn)過程中非因變量的參數(shù)將使用Libsvm默認(rèn)的參數(shù)值。RBF核函數(shù)、多項(xiàng)式核函數(shù)和Sigmoid核函數(shù)實(shí)驗(yàn)結(jié)果分別如圖1至圖3所示。
2.4.3 結(jié)果分析
通過2.4.2小節(jié)的實(shí)驗(yàn)結(jié)果可以看出,在進(jìn)行參數(shù)優(yōu)化后,RBF核函數(shù)在大部分的參數(shù)選擇情況下,準(zhǔn)確率都維持在較高的水平,說明在文本傾向識(shí)別這個(gè)部分,RBF核函數(shù)具有更好的適應(yīng)性,本文評(píng)分系統(tǒng)的實(shí)現(xiàn)也將采用RBF核函數(shù)作為評(píng)分系統(tǒng)中使用的SVM算法的核函數(shù)。
3 系統(tǒng)整體設(shè)計(jì)
評(píng)分系統(tǒng)采用客戶端與訓(xùn)練端分離的設(shè)計(jì)方式,由于訓(xùn)練端占用計(jì)算機(jī)資源較大,讓訓(xùn)練端單獨(dú)運(yùn)行在獨(dú)立的服務(wù)器上。系統(tǒng)整體設(shè)計(jì)如圖5所示。
4 系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)
4.1 客戶端
4.1.1 客戶端算法設(shè)計(jì)
客戶端是評(píng)分系統(tǒng)提供給用戶使用的Web操作界面,用戶可以在Web界面完成SVM項(xiàng)目的訓(xùn)練、評(píng)論文本上傳、查看API調(diào)用情況等功能??蛻舳怂惴鞒虉D如圖6所示。
4.1.2 API接口設(shè)計(jì)
面向用戶的交互API接口是評(píng)分系統(tǒng)提供給用戶與評(píng)分系統(tǒng)進(jìn)行交互的核心方式,解耦了評(píng)分系統(tǒng)的服務(wù)和用戶自己的電商平臺(tái),根據(jù)API接口返回的結(jié)果,用戶可以輕易地對(duì)結(jié)果進(jìn)行二次處理??蛻舳薃PI交互接口如下:
1) 訓(xùn)練文件上傳
該API接口綁定的路由為“/svm/upload”,該接口僅接受POST的調(diào)用方式,用戶可以通過此接口上傳指定的訓(xùn)練文件。
2) 單條評(píng)論文本預(yù)測(cè)
該API接口綁定的路由為“/svm/predict”,該接口接受GET和POST的方式調(diào)用,用于在商品評(píng)論產(chǎn)生的時(shí)候即時(shí)預(yù)測(cè)并更新商品評(píng)分。
3) 批量評(píng)論文本預(yù)測(cè)
該API接口綁定的路由為“/svm/predictFiles”,該接口僅接受POST的調(diào)用方式,用于在指定的時(shí)間點(diǎn)統(tǒng)一處理商品評(píng)論并更新評(píng)分。
4) 商品評(píng)分查詢
該API接口綁定的路由為“/svm/query”,該接口接受GET和POST的方式調(diào)用,用戶可以通過此接口即時(shí)查詢指定商品的評(píng)分信息。
4.2 訓(xùn)練端
4.2.1 訓(xùn)練端算法設(shè)計(jì)
訓(xùn)練端獨(dú)立負(fù)責(zé)SVM項(xiàng)目的訓(xùn)練和預(yù)測(cè),僅通過訓(xùn)練端向客戶端提供的API接口進(jìn)行交互。訓(xùn)練端算法流程圖如圖7所示:
4.2.2 SVM 評(píng)分模塊設(shè)計(jì)
訓(xùn)練端的核心模塊為SVM模型訓(xùn)練和SVM預(yù)測(cè)兩大模塊,代碼實(shí)現(xiàn)的過程中注重內(nèi)部功能模塊之間的解耦,盡可能達(dá)到一處代碼,多處復(fù)用的目標(biāo)。
1) SVM模型訓(xùn)練
首先對(duì)帶標(biāo)注的訓(xùn)練源文本進(jìn)行預(yù)處理,使其滿足Libsvm的訓(xùn)練文本格式,然后調(diào)用Libsvm對(duì)預(yù)處理結(jié)果進(jìn)行SVM訓(xùn)練,最后得到訓(xùn)練模型。訓(xùn)練端對(duì)訓(xùn)練源文本的預(yù)處理流程如圖8所示。
考慮到系統(tǒng)功能的后期升級(jí),對(duì)于文本預(yù)處理階段的分詞及去停用詞、情感詞過濾、特征詞篩選和特征詞權(quán)值計(jì)算均采用Java接口進(jìn)行設(shè)計(jì),盡可能解耦各個(gè)處理過程,讓系統(tǒng)保持較高的可拓展性。
2) SVM模型預(yù)測(cè)
SVM模型預(yù)測(cè)與訓(xùn)練的流程大致相同,需要對(duì)文本進(jìn)行預(yù)處理,然后把處理結(jié)果交給Libsvm進(jìn)行預(yù)測(cè),所以預(yù)測(cè)的文本預(yù)處理部分可全部復(fù)用訓(xùn)練階段所使用的接口實(shí)現(xiàn),SVM模型預(yù)測(cè)流程圖如圖9所示:
4.2.3 線程池設(shè)計(jì)
考慮到SVM模型的預(yù)處理、訓(xùn)練和預(yù)測(cè)均為非常耗時(shí)的操作,所以在訓(xùn)練端服務(wù)器對(duì)以上三種操作使用多線程的方式進(jìn)行處理,以便訓(xùn)練端可以接受多個(gè)SVM項(xiàng)目同時(shí)進(jìn)行,增加訓(xùn)練端的并發(fā)性。訓(xùn)練端線程池的流程如圖10所示。
4.2.4 API接口設(shè)計(jì)
訓(xùn)練端API是客戶端與訓(xùn)練端交互的核心API,訓(xùn)練端提供API供客戶端發(fā)送SVM項(xiàng)目訓(xùn)練請(qǐng)求和SVM項(xiàng)目訓(xùn)練文件,發(fā)送SVM項(xiàng)目預(yù)測(cè)請(qǐng)求和獲取預(yù)測(cè)得分。訓(xùn)練端交互接口如下:
1) 接收訓(xùn)練文件
該API接口綁定的路由為“/api/ /upload”,該接口僅接受POST的調(diào)用方式,用于客戶端向訓(xùn)練端發(fā)送訓(xùn)練文件,訓(xùn)練端接收到文件后創(chuàng)建訓(xùn)練項(xiàng)目并立即開始訓(xùn)練。
2) 接收預(yù)測(cè)文本
該API接口綁定的路由為“/api/ /predict”,該接口僅接受POST的調(diào)用方式,用于客戶端向訓(xùn)練端發(fā)起預(yù)測(cè)請(qǐng)求,返回的結(jié)果是一個(gè)JSON字符串,包含預(yù)測(cè)得到的評(píng)分結(jié)果以及相關(guān)信息。
5 結(jié)論
本文實(shí)現(xiàn)的基于SVM算法的商品評(píng)分系統(tǒng)具有以下優(yōu)點(diǎn):
1) 客戶端與訓(xùn)練端分離
將占用計(jì)算機(jī)資源較大的SVM訓(xùn)練、預(yù)測(cè)獨(dú)立出來,可以進(jìn)行獨(dú)立部署或分布式多訓(xùn)練端部署,從而不影響客戶端穩(wěn)定運(yùn)行,提高SVM訓(xùn)練、預(yù)測(cè)性能。
2) 基于線程池的SVM訓(xùn)練、預(yù)測(cè)方案
把SVM訓(xùn)練任務(wù)和預(yù)測(cè)任務(wù)分離到不同的線程池中運(yùn)行,適應(yīng)了實(shí)際生產(chǎn)環(huán)境中預(yù)測(cè)任務(wù)的數(shù)量遠(yuǎn)遠(yuǎn)大于訓(xùn)練任務(wù)的情況,提高訓(xùn)練端訓(xùn)練、預(yù)測(cè)的效率和響應(yīng)速度。
3) 使用Restful API提供主要功能
由于系統(tǒng)面向的客戶群體是電商網(wǎng)購平臺(tái)的運(yùn)營(yíng)者,基于API的設(shè)計(jì)可以使客戶的平臺(tái)簡(jiǎn)單快速地接入評(píng)分系統(tǒng)的服務(wù),降低了適配的難度,提高了易用性。
參考文獻(xiàn):
[1] 吳衛(wèi)華, 袁寧, 周勁,等. 基于文本集密度的特征詞選擇與權(quán)重計(jì)算方法[J]. 計(jì)算機(jī)與數(shù)字工程, 2005, 33(3):11-13.
[2] 黃志勇. 基于SVM和深度學(xué)習(xí)的情感分類算法研究[D]. 重慶郵電大學(xué), 2016.
[3] 譚松波.譚松波語料集[EB]. https://github.com/hankcs/HanLP/wiki/文本分類與情感分析.
【通聯(lián)編輯:梁書】