潘祿生
(甘肅畜牧工程職業(yè)技術(shù)學(xué)院,甘肅武威,733006)
關(guān)鍵字:LBS;情感分析模型;協(xié)同過(guò)濾模型;個(gè)性化推薦;旅游線路推薦
本文通過(guò)使用間接方法進(jìn)行分類,首先通過(guò)對(duì)評(píng)論信息在情感分類詞典中查詢,獲取該評(píng)論的人工情感程度分類,然后通過(guò)使用有監(jiān)督的機(jī)器學(xué)習(xí)實(shí)現(xiàn)二次精確分類。為了算法的時(shí)間復(fù)雜度,本文采用了基于AFINN情感詞典的情感分析模型。
AFINN詞典是一個(gè)情感詞匯和短語(yǔ)的評(píng)分列表,通過(guò)對(duì)情感詞匯進(jìn)行分配并進(jìn)行人工自然語(yǔ)言分析得到的精確情感詞匯,該列表將情感類詞語(yǔ)轉(zhuǎn)化為[-10,10]的評(píng)分區(qū)間,是一個(gè)相對(duì)簡(jiǎn)單的情感詞匯評(píng)分工具。在AFINN詞典中,詞匯的情感計(jì)算為:

1.2.1 情感詞匯評(píng)分值計(jì)算
在情感詞匯分析過(guò)程中,語(yǔ)氣副詞對(duì)情感往往有加成效果,因此在AFINN詞典中為每個(gè)情感副詞增加了語(yǔ)氣因子,對(duì)于不同的程度的情感副詞賦予了不同程度的語(yǔ)氣加強(qiáng)因子γ。與此同時(shí),不同的否定副詞會(huì)對(duì)語(yǔ)氣有相反的效果,因此為準(zhǔn)否定副詞和否定負(fù)責(zé)賦予了語(yǔ)氣取反因子?。在對(duì)評(píng)論語(yǔ)句進(jìn)行分詞過(guò)程中,獲取到情感詞匯以及情感副詞,然后通過(guò)查新AFINN詞典,如果該詞匯出現(xiàn)在情感詞典中,可查詢到對(duì)應(yīng)的語(yǔ)境情感評(píng)分,在查詢過(guò)程中,需要注意該情感詞匯是否有相應(yīng)的情感副詞修飾,如果有,需根據(jù)該副詞的語(yǔ)氣狀態(tài)對(duì)情感詞匯加強(qiáng)語(yǔ)氣狀態(tài)或者取反語(yǔ)氣狀態(tài)。經(jīng)過(guò)上述計(jì)算之后保證該詞匯的情感評(píng)分值位于[-10,10]的取值區(qū)間內(nèi)。
在正常的情感評(píng)論中,評(píng)論的情感評(píng)價(jià)值的計(jì)算使用如下的計(jì)算方法:

在上述公式中,basucS 表示情感詞匯在AFINN詞典中詞匯的情感查詢值,wordS 表示該詞匯在該語(yǔ)境中的情感評(píng)分值,λ表示該詞匯在語(yǔ)氣加強(qiáng)程度的語(yǔ)氣加強(qiáng)因子。當(dāng)查詢到的詞匯情感值大于0后,該詞匯的情感值不能大于10,當(dāng)查詢到的詞匯情感值小于0后,該詞匯的情感值不能小于-10,經(jīng)過(guò)上述計(jì)算,wordS 的取值范圍在[-10,10]的一個(gè)閉區(qū)間內(nèi)。
當(dāng)評(píng)論中出現(xiàn)否定情感副詞后,評(píng)論的情感評(píng)價(jià)值的計(jì)算使用如下的計(jì)算方法:

與公式(2)類似,basucS 表示情感詞匯在AFINN詞典中詞匯的情感查詢值,wordS 表示該詞匯在該語(yǔ)境中的情感評(píng)分值,?表示該詞匯在語(yǔ)氣加強(qiáng)程度的語(yǔ)氣加強(qiáng)因子。當(dāng)查詢到的詞匯情感值大于0后,該詞匯的情感值不能大于10,當(dāng)查詢到的詞匯情感值小于0后,該詞匯的情感值不能小于-10,經(jīng)過(guò)上述計(jì)算,wordS 的取值范圍在[-10,10]的一個(gè)閉區(qū)間內(nèi)。
1.2.2 評(píng)論語(yǔ)句的情感評(píng)分值
首先提取出評(píng)論語(yǔ)句中各情感詞匯的語(yǔ)境的情感評(píng)分值,然后計(jì)算出該話題的各維坐標(biāo),然后根據(jù)整個(gè)句子中出現(xiàn)的所有情感詞情感評(píng)分值計(jì)算完畢之后,將所有詞匯情感詞的權(quán)值設(shè)為相同,因此評(píng)論語(yǔ)句的情感評(píng)分值為:

在公式(4)中,s0表示評(píng)論語(yǔ)句的初始情感評(píng)分,n表示在評(píng)論詞匯在AFINN詞典中詞匯的個(gè)數(shù),sword-i表示語(yǔ)句中每個(gè)情感詞匯的情感評(píng)分值,且該情感評(píng)分值的取值范圍在[-10,10]區(qū)間內(nèi),因此通過(guò)公式(4)計(jì)算結(jié)果的取值區(qū)間為[-10,10]。
由于情感評(píng)分值[-10,10]距離過(guò)大,且數(shù)據(jù)不夠規(guī)整,為了方便做推薦系統(tǒng)做輸入,采用5檔評(píng)分制,將區(qū)間[-10,10]映射到1,2,3,4,5五檔,在本文中,將(np- nN)作為極性分界點(diǎn),映射方法如下:

通過(guò)上述轉(zhuǎn)換,可以直接將評(píng)分值轉(zhuǎn)化為1-5檔之間的一個(gè)值。
基于用戶的協(xié)同過(guò)濾推薦的基本原理是,根據(jù)所有用戶對(duì)物品或者信息的偏好,發(fā)現(xiàn)與當(dāng)前用戶口味和偏好相似的“鄰居”用戶群,在一般的應(yīng)用中是采用計(jì)算“K-鄰居”的算法;然后基于這K個(gè)鄰居的歷史偏好信息,為當(dāng)前用戶進(jìn)行推薦。因此對(duì)于個(gè)性化旅游推薦來(lái)說(shuō),可以通過(guò)推薦相似性較高用戶集合的選擇旅游點(diǎn)會(huì)有不錯(cuò)的效果。
為了實(shí)現(xiàn)基于用戶的協(xié)同過(guò)濾模型,需要經(jīng)過(guò)如下步驟:
(1) 構(gòu)建用戶-景點(diǎn)評(píng)分矩陣
在構(gòu)建用戶-景點(diǎn)評(píng)分矩陣之前,首先需要通過(guò)公式(5)計(jì)算每個(gè)用戶對(duì)景點(diǎn)的評(píng)論信息,設(shè) ,SijUL表示用戶iU對(duì)景點(diǎn)jL的評(píng)分。因此用戶-景點(diǎn)評(píng)分矩陣為:

(2) 構(gòu)建鄰接矩陣
使用鄰接矩陣來(lái)計(jì)算兩個(gè)用戶之間的相似度,在計(jì)算過(guò)程中,本文采用余弦相似度來(lái)判斷兩個(gè)用戶是否屬于相同的類型,計(jì)算用戶μ,ν之間相似度的方法如下:

在公式(7)中,ìU和íU分別表示對(duì)景點(diǎn)集合的評(píng)分,通過(guò)上述計(jì)算,就可以獲得兩個(gè)用戶之間的相似度,由于不同用戶之間對(duì)景點(diǎn)的評(píng)論各不相同,如有些用戶沒(méi)有評(píng)論某些景點(diǎn),可以設(shè)置該景點(diǎn)的評(píng)分為一個(gè)中性值3,結(jié)合實(shí)際情況找出相似度高于預(yù)先設(shè)定的閾值,可以將這些用戶歸為相同的一類。
(3) 預(yù)測(cè)評(píng)分
基于用戶協(xié)同過(guò)濾的思想,通過(guò)計(jì)算用戶的相似近鄰,獲取該用戶對(duì)這些景點(diǎn)的評(píng)分,然后在計(jì)算用戶對(duì)未知景點(diǎn)的評(píng)分過(guò)程中,需要參考相似近鄰對(duì)該景點(diǎn)的評(píng)分,然后通過(guò)計(jì)算該用戶的“相似近鄰”用戶對(duì)該景點(diǎn)的評(píng)分,然后將推薦用戶對(duì)該景點(diǎn)的評(píng)論與其他用戶對(duì)該景點(diǎn)的評(píng)論做余弦相似度計(jì)算,然后計(jì)算兩者之間的偏差值,通過(guò)這個(gè)偏差值來(lái)預(yù)測(cè)用戶與推薦景點(diǎn)的預(yù)測(cè)分?jǐn)?shù)。

在上公式中λ表示景點(diǎn)的修正參數(shù),Sì,vLp表示對(duì)景點(diǎn)的實(shí)際評(píng)分,表示用戶對(duì)所有景點(diǎn)評(píng)分的平均分?jǐn)?shù),cos( U ,Uí)表示該用戶與其他用戶的相似度,表示用戶對(duì)所有景點(diǎn)的平均評(píng)分。計(jì)算出來(lái)的 P (U ,L),如果改值大于某個(gè)預(yù)定的閾值,就可以認(rèn)為該景點(diǎn)適合推薦給用戶。通過(guò)這種計(jì)算,可以找到所有推薦給該用戶的景點(diǎn)集合。
在上述計(jì)算過(guò)程中很容易出現(xiàn)冷啟動(dòng)和數(shù)據(jù)稀疏性問(wèn)題,這也直接影響了推薦的有效性,針對(duì)此種情況需要將位置信息考慮其中。
將用戶所訪問(wèn)過(guò)的景點(diǎn)都列舉出來(lái),并分別計(jì)算每個(gè)景點(diǎn)與中心點(diǎn)的位置,具體計(jì)算方法就是通過(guò)畫(huà)最小直徑的圓,該圓包括所有景點(diǎn),并保證該圓的直徑盡可能的小,然后將各景點(diǎn)與圓心平均數(shù)座位該用戶的活動(dòng)半徑,如果有一個(gè)景點(diǎn)明顯偏離圓心,需要將該景點(diǎn)刪除之后再計(jì)算圓心的位置。
通過(guò)對(duì)Foursquare數(shù)據(jù)集中所有用戶的活動(dòng)半徑來(lái)分析,用戶喜歡的景點(diǎn)通常具有區(qū)域性,一般來(lái)說(shuō),新景點(diǎn)如果距離用戶當(dāng)前的位置小于活動(dòng)半徑,用戶通常會(huì)選擇該景點(diǎn),因此基于地理位置的推薦模型就是通過(guò)計(jì)算新景點(diǎn)與原來(lái)活動(dòng)中心的距離來(lái)估計(jì)用戶對(duì)該景點(diǎn)的喜好程度,基于地理位置的推薦模型的具體過(guò)程如下:
根據(jù)前文理論,景點(diǎn)位置越遠(yuǎn),用戶的選擇意愿越低,因此有如下擬合函數(shù)公式:

a,b分別表示兩個(gè)常數(shù),x表示推薦景點(diǎn)與用戶活動(dòng)中心點(diǎn)的距離,而y表示用戶的選擇意愿,為了和基于用戶協(xié)同過(guò)濾算法配合,本文也將y的值定為[1,5]的封閉區(qū)間內(nèi)。設(shè)定所有的距離閾值為 [d5, d4, d3, d2],可以將用戶的選擇意愿分為5擋:

通過(guò)公式(10)可以基于地理位置的推薦算法預(yù)測(cè)用戶對(duì)推薦點(diǎn)的評(píng)分。
為了避免基于用戶協(xié)同過(guò)濾模型以及基于地理位置模型的缺點(diǎn),本文將兩種模型想結(jié)合,將兩種模型的預(yù)測(cè)分?jǐn)?shù)進(jìn)行加權(quán):

其中 α +β=1,且兩個(gè)加權(quán)的值會(huì)隨著用戶的喜好而調(diào)整大小,使用混合推薦模型的旅游線路推薦流程如下:
在圖1中,路線規(guī)劃是在找到所有的推薦旅游景點(diǎn)之后,通過(guò)加權(quán)dijkstra算法找到最經(jīng)濟(jì)的路由線路,從而推薦給用戶。
本文針對(duì)當(dāng)前“自由行”比較熱門(mén)的情況,且普通的用戶很容易因?yàn)樾畔⑦^(guò)多而不知道如何選擇合適的旅游線路的問(wèn)題,提出了基于LBS的個(gè)性化旅游線路推薦算法,首先使用情感分析模型對(duì)用戶對(duì)旅游景點(diǎn)的評(píng)論信息進(jìn)行分析,并實(shí)現(xiàn)打分,然后使用基于用戶的協(xié)同過(guò)濾模型和基于地理位置的推薦模型實(shí)現(xiàn)對(duì)合適的旅游景點(diǎn)進(jìn)行篩選,預(yù)測(cè)出用戶對(duì)各個(gè)景點(diǎn)的預(yù)測(cè)評(píng)分,然后選擇合適的旅游景點(diǎn),然后進(jìn)行路線規(guī)劃,推薦給最終用戶。

圖1 推薦過(guò)程流程圖