涂 晨,李 鑫,葉程軼
(江西理工大學 信息工程學院,江西 贛州 341000)
隨著近年來互聯網和自媒體的繁榮,旅游業不斷發展的同時也面臨著諸多需求,特別是每年的旅游市場現狀及未來規劃因得不到有效游客信息而無法充分分析和改善。由于新冠疫情的原因,在線旅游(Online Travel Agency, OTA)和游客的用戶生成內容(User Generated Content, UGC)數據成為了解旅游市場現狀的重要信息來源。要使用OTA和UGC的數據內容對某一特定旅游目的地進行研究,數據挖掘及分析則成了必要手段。但在研究中發現,OTA和UGC數據極為分散和碎片化,尤其是對于旅游城市來說,OTA和UGC數據包括且不僅限于微信公眾號文旅文章、酒店評論、景區評論以及游記攻略。對于如此碎片化的數據,如何從中提取出旅游產品及其熱度和關聯性,從而進行良好的數據分析,以此根據旅游產品熱度及關聯性對景區酒店等進行一系列分析規劃,成為了“互聯網+旅游”的一大難題。
高新波等人[1]提出的基于社會媒體的旅游數據挖掘與分析方法初步反映了上述問題。目前,不少相關學者對此現象進行了深入研究,提出了多種解決方法。例如,以改進樸素貝葉斯分類[2]、支持向量機[3]、邏輯回歸、LSTM與CNN[4]、改 進 CNN 與 LSTM[5]、ERNIE-CNN[6]、Bootstrapping[7]、FMNN融合多神經網絡[8]、改進TF-IDF和ABLCNN[9]等機器學習模型[10]以及基于向量空間模型[11]來解決文本分類問題;以基于情感詞典、傳統機器學習[12]、深度學習等方法來解決情感分析問題[13];閆婷婷等人[14]開展的中文情感分析研究則在中文信息處理領域綜述了方法及不足;張昊旻等人[15]提出用權值算法來解決中文情感分析問題;唐慧豐等人[16]開展了基于監督學習的中文情感分類技術比較研究等;以基于Apriori算法[17]的關聯規則挖掘技術[18]改進FP-growth算法[19]的模型來解決關聯分析。同時,隨著BERT模型在自然語言處理各領域的廣泛應用,又激起了關于預訓練模型的一系列研究,例如BERT-TECNN文本分類[20]。然而,由于該數據集類別失衡、無標注且質量參差不齊,其在各模型上的表現均得不到很好的效果,具體表現為精度極低、極早過擬合等情況。
為此,針對數據集類別失衡、無標注等根源情況,本文采用無監督學習的LDA主題模型中的主題分布進行文本相似度計算,以此對文本是否屬于同一類別進行區分,便于游客獲得指定分類信息的準確性;在解決提取產品問題中,采用TextRank關鍵詞算法對其進行關鍵詞提取;而在熱度分析問題中,建立以產品評論為基準、文本情感分析為輔的多維度產品熱度分析模型;同時采用關聯分析算法(Apriori)的思想,借由產品在文本間所存在的頻率,根據從指定數據中提取出的相關產品,對在總次數中產品出現次數與出現產品A且可能出現產品B的概率等進行加權求和計算關聯度,說明旅游產品間的關系。
本文主要運用基于LDA的文本分類模型、基于TextRank的關鍵詞提取和中文情感分析的熱度分析以及基于頻率的產品關聯度分析技術,具體思路總結如下。
LDA(Latent Dirichlet Allocation,隱含狄利克雷分布)[21]是一種主題模型,它可以將文檔集中每篇文檔的主題按照概率分布的形式給出[22]。LDA模型算法是一種無監督模型算法,旨在通過無監督的學習發現文檔中隱含的主題信息,通過文檔中詞和詞之間的共有特征來發現文檔的主題結構。同時它也是一種經典的詞袋模型,通過詞袋把文檔看作一個詞頻向量[23],詞和詞之間沒有先后順序之分。其含義通常是指,文檔到主題服從多項式分布,主題到詞服從多項式分布。
假設有D個文檔,其中包含了K個主題,每個文檔的主題分布各不相同,且主題分布是多項分布,滿足Dirichlet分布,參數為α;每個主題的詞分布也各不相同,詞分布也是多項式分布,同樣滿足Dirichlet分布,參數為β。那么在語料庫中,α和β是Dirichlet分布的參數,θ是關于文檔D的主題分布,即一個K維的向量。對于第i篇文檔Di,其主題分布為θi,詞分布為γij。運用Gibbs采樣得到所有詞的主題,通過主題數得到每個主題的γij;再統計D中各個文檔里詞的主題數,從而得出每個文檔的主題分布。
簡化 Dirichlet公式:
計算文檔主題條件分布:
其中:為參數;表示在第d個文檔中第k個主題詞所對應的多項式分布計數。
基于上述內容,聯系實際數據集,本文采用LDA主題模型求解主題分布,再根據主題分布所轉化的向量進行運算,得到主題相似度[24],由所求出的主題相似度進行文本分類。
情感分析(sentiment analysis)是自動判定文本中觀點持有者對某一話題所表現出的態度或情緒傾向性的過程、技術和方法。情感分析全稱為文本情感分析,其主要歸納為3項主要任務:情感信息抽取、情感信息分類以及情感信息的檢索與歸納[25]。
中文情感分析屬于情感信息分類這一模塊,即指在中文數據集上利用模型進行訓練,在廣大數據評論中將其分類并進行標注。常見任務如酒店評論為好評或差評。
在文本情感分析中,常見的情感分析大致有3類方法:基于情感詞典的情感分析、基于傳統機器學習的情感分析和基于深度學習的情感分析[13]。
對于中文情感分析來說,最簡要的模型莫過于基于情感詞典的情感分析。本文采用Cnsenti模塊,導入情感詞典,利用情感分析對產品數據評論進行好評、差評區分。簡要步驟如圖1所示。

圖1 情感詞典情感分析簡要流程
進行情感分析以后,針對所得到的已經貼好標簽的好評和差評數據,則可建立一個由產品評論總數、好評指標和差評指標決定的多維度熱度分析模型,從而進行年份產品熱度計算。
關聯分析(association analysis)是從大量數據中發現頻繁項集間的關聯和相關關系,常用于數據挖掘,從整體數據中挖掘潛在關聯。
關聯分析運用范圍極廣,例如常見的大數據推送、QQ中可能認識的人等,都可利用關聯分析來實現;同理,在處理游記攻略過程中,也可以利用關聯分析對指定城市中景區、酒店、餐飲等旅游相關產品的關聯程度進行分析,進而為城市未來旅游產業提供有效建議。
較為典型的關聯分析算法是Apriori算法。求產品關聯度可以嘗試基于該算法實現。Apriori算法旨在利用項集的支持度,由頻繁項集生成關聯規則,該算法基本步驟如圖2所示。

圖2 Apriori算法簡要步驟
在Apriori算法中,把所有相互之間包含了關聯規則的產品作為集合,然后從最小k項集開始篩選支持度,得到候補頻繁k項集,再將其集合進行合并,再循環,直到得不到集合為止。
在本文中,采用關聯分析算法,利用產品支持度、置信度以及提升度進行加權計算,得到最終關聯度。
通過觀察數據發現,微信公眾號文章數共6 296,且微信公眾號正文與微信公眾號標題分開,秉持數據完整的原則,將正文及其標題合并。文章內容包含奇異字符、電話號碼等噪音數據,且停用詞較多,會對分類模型產生影響。因此需要對所有文章進行去停用詞以及中文分詞處理,隨后統一存放。同時發現景區評論中有少數噪音數據(景區地點未在該旅游城市)。針對此類噪聲數據,應尋找方法將其去除,避免產生影響。采用百度POI對景區地點進行定位,去除噪聲數據。
在進行關聯分析時,所得到的數據過多過雜,有效項集少,候補頻繁項集難以捕獲,需要進行數據篩選。
根據上述所發現的噪聲數據,針對各種不同情況,進行以下處理。
2.2.1 中文分詞
中文分詞是指將一個中文句子視作一個由漢字組成的序列,為方便計算機理解,故而將該序列按一定規則進行重新切分,再重新組成序列的過程。常用的中文分詞工具有jieba、SnowNLP、NLPIR 等。
需要注意的是,如果僅僅是直接進行分詞,則可能導致專有名詞的切分錯誤,例如“放雞島”,則會被分成['放','雞','島']。因此,在分詞時,一定要注意專有名詞的導入,避免專有詞的分詞出錯。
2.2.2 去停用詞
在數據集中,存在大量常用語氣助詞、副詞、介詞等無意義詞匯,為提高關鍵詞密度,應該盡可能將停用詞消去,減少其出現頻率。在本文中,直接采用了幾個常見的停用詞放入列表進行消除,如圖3所示。

圖3 數據處理示例
2.2.3 POI景區定位
采用百度POI地點查詢,利用Selenium模塊的模擬瀏覽器訪問,指定城市;然后進行景區搜索,返回指定地點的具體位置,根據其返回結果即可判定是否在該城市中。
2.2.4 頻繁集項獲取
將所得到的所有產品ID存入一個列表,產品ID與之對應的產品名稱置入另一個列表。
設有文本總數為D,那么當前文本為Di,項集為Z,對其進行遍歷,如果產品存在,則將其產品名稱所對應的索引值在產品ID表中求出,放入新的列表。每遍歷完一個文本Di,就會得到一個項集ZDi,該項集即可作為產品的候補頻繁集。
假設有產品ID[1,2,3,4,5],與之對應的產品名稱為[A,B,C,D,E]。文檔D1=[A,D,G,H],文檔D2=[A,B,C,F]。那么在文檔D1中存在產品ID候補頻繁集ZD1={1,4},文檔D2中存在產品ID候補頻繁集ZD2={1,2,3}。
針對本研究背景,建立以三個分塊模型為核心的研究模型,將所得到的OTA和UGC數據輸入模型后,可根據不同需求,獲取不同輸出。具體模型示意圖如圖4所示。

圖4 研究模型流程
采用LDA主題模型進行文本分類,根據該任務中所涉及到的一些特征詞直接建立LDA模型。該主題模型所涉及公式、詞、文檔以及主題關系為:
在此模塊中,主要模型流程如圖5所示。

圖5 基于LDA主題模型的文本分類簡要流程
先進行數據清洗后,建立主題模型并保存,再對每個文本進行主題分布的計算,將得到的文本主題分布以向量的形式進行內積等計算,得到文本相似度。若相似度大于0,則視作該文本與LDA模型中涉及到的主題相關,最后進行分類。
采用多維度熱度評價模型,針對評論數據進行產品的熱度分析。本文基于TextRank算法提出一種運用Chinese Sentiment模塊進行處理的熱度分析模型。以公式(4)進行計算:
其中:Wi和Wj分別表示評論為好評、壞評時的權值;C為該產品評論數;S為產品評論最大值。也可以根據圖6的流程,將公式轉化為:

圖6 熱度分析模型簡要流程
其中:CG、SG為好評數及其最大值;CB、SB為差評數及其最大值。
由此,本文建立了一個以總評論數、好評、差評為自變量的熱度評價模型。
在建立模型之前,介紹Apriori關聯分析算法中的三個概念如下:
(1)支持度:是指某項集在數據集中出現的概率,以A、B項集為例,支持度表示A和B同時發生的概率,即:
(2)置信度:是指在某前提條件下,用關聯規則推出結果的概率,項集A發生則項集B發生的概率,即:
(3)提升度:表示A、B同時發生的概率與只發生B的概率之比,它表示為關聯規則中A與B的相關性,可表示為:
相關性根據提升度值可分為如下三種情況:正相關,Lift(A,B)>1;不相關(相互獨立),Lift(A,B)=1;負相關,Lift(A,B)<1。因此,本文以下面的公式計算關聯度:
對數據集中的文章采用LDA模型分類后,將計算出的文本相似度轉化為指定標簽,并以“.csv”的格式保存下來,如圖7所示。

圖7 主題分類模型輸出結果
將經過TextRank分詞處理和熱度分析處理后所得到的產品以及該產品在指定年份中的熱度以“.csv”格式保留下來,如圖8所示。

圖8 熱度分析模型輸出結果
將所相關的產品及關聯度保存在csv文件中,根據所得到的csv文件,進行圖譜可視化生成。本文采用networkx進行生成,以產品ID作為兩個點,關聯度作為其權值進行圖譜可視化,得到該圖譜。
根據模型所得到的輸出數據,得到了有效且清晰的文本分類標簽,使其可以根據指定主題來獲取更相關的文本集;對于熱度分析模型所得到的數據,主要依據評論總數以及好差評指標來進行熱度計算并排名,由此則可以依據該模型來獲取產品熱度排行榜,對熱度低的文旅相關產品可以更有效地進行分析和整改;由關聯分析模型可以更好地了解產品間所存在的關聯性以及關聯模式,從而給予更有效的文旅產品關聯推送及市場關聯分析。
本文基于LDA文本分類和熱度分析方法以及產品關聯度分析模型,將目前所遇到的困難拆解為建模和解決兩個部分。在建模階段,選取了最適宜數據集無標注的方法,創新地選用了LDA主題模型進行文本分類模型的構建,極大地避免了數據少、無標注等情況;考慮到需要在所給評論數據基礎上對產品進行多維度的熱度分析,采用了中文情感分析模型進行評論分類,從而作為指標進行評估;在求解關聯度任務中,采用了基于Apriori算法的關聯分析思想,從支持度、置信度、提升度的角度對產品之間的關聯度進行評估。
在未來的工作中,將做出以下改進:
(1)遷移學習:采用遷移學習[26]的思想將所給訓練數據集用相同高頻詞的訓練集替代,使數據集有更好的分布特征,進而可采用自監督學習的神經網絡進行處理。
(2)改進模型:在關聯分析Apriori算法上進一步改進,嘗試劉木林等人[27]提出的基于Hadoop的關聯規則挖掘算法進行關聯分析計算,繼而提升數據分析的效果。