



摘要:傳統(tǒng)的基于BTM的話題發(fā)現(xiàn)方法未考慮大數(shù)據(jù)條件下,海量短文本中熱點話題發(fā)現(xiàn)存在的時效性限制問題。基于Spark計算框架、BTM模型和K-means算法,提出了并行旅游輿情熱點話題發(fā)現(xiàn)算法,通過對旅游評論、微博短文本集的詞對生成、文檔-話題分布矩陣、文檔相似度計算及聚類過程進行基于Spark框架的并行化,縮短了熱點話題的發(fā)現(xiàn)時間,提高了實時性。實驗結果顯示本算法加速比和擴展性相比單一BTM模型能進一步提升,適用于旅游輿情熱點話題發(fā)現(xiàn)的應用需求。
關鍵詞:并行計算;話題模型;短文本;聚類;NLP
一、前言
近年來,伴隨移動互聯(lián)網(wǎng)的快速發(fā)展,微博、微信、抖音等社交網(wǎng)絡的蓬勃發(fā)展為大眾獲取和發(fā)布信息提供了巨大方便,這些微博、微信、抖音(評論)具有短文本型、及時性和交互性,容易短時間內(nèi)大量轉發(fā)、高度關注形成輿論熱點。旅游管理部門和從業(yè)企業(yè)通過關于旅游服務質(zhì)量、安全、環(huán)境等的文本評論,進行數(shù)據(jù)分析獲得熱點話題,對于掌握輿論導向從而制定相應對策提高服務質(zhì)量具有重要意義[1]。
傳統(tǒng)的輿情熱點話題發(fā)現(xiàn)方式基于網(wǎng)頁、新聞報道等長文本,代表性方法有基于PLSA、LDA等的話題發(fā)現(xiàn)模型[2]。由于短文本中展示的信息量較少、話題較單一、缺少上下文本信息,即出現(xiàn)了所謂的信息稀疏化現(xiàn)象,傳統(tǒng)基于長文本的話題發(fā)現(xiàn)模型不適用于評論文本。面向短文本的熱點話題發(fā)現(xiàn)方法研究是目前NLP領域的一個研究熱點。
Yan[3,4]等提出的詞對話題模型BTM(bitermtopic model)是針對短文本稀疏問題的一種典型的話題發(fā)現(xiàn)模型,一些學者基于BTM模型,提出了面向微博熱點話題發(fā)現(xiàn)的一些改進方法[5,6],改善了熱點話題發(fā)現(xiàn)的質(zhì)量,利用它們有助于對輿情形成較準確的判斷。但這些方法建立在單機環(huán)境,未考慮大數(shù)據(jù)條件下,海量短文本中熱點話題發(fā)現(xiàn)存在的時效性限制為題,而政府12301旅游監(jiān)管平臺、OTA網(wǎng)站旅游評論、專門的旅游監(jiān)測大數(shù)據(jù)平臺等產(chǎn)生的有關旅游推薦、評論或投訴數(shù)據(jù)量是海量的。因此,本文基于Spark大數(shù)據(jù)框架,引入基于BTM模型和K-means聚類方法的熱點話題發(fā)現(xiàn)方法,提出了并行化的短文本熱點話題發(fā)現(xiàn)方法,通過實驗表明該方法的可行性,結果分析驗證了該方法的有效性。
二、相關工作
(一)BTM話題模型
BTM對數(shù)據(jù)集中所有短文本文檔的詞對生成過程建模,詞對是短文本中任意共現(xiàn)的兩個詞。通過學習短文本的話題概率分布和話題-詞概率分布,推理得到每個短文本的文檔-話題概率分布。BTM模型如圖1所示。
這里,是短文本d中b的統(tǒng)計次數(shù);d是文本集D中的一個文本,。
(二)Spark大數(shù)據(jù)框架
Spark是目前主流的大數(shù)據(jù)處理框架[7],具有良好的易用性和擴展性。隨著微信、抖音、微博等社交工具的流行,短文本信息量迅猛增長,需要基于大數(shù)據(jù)平臺進行數(shù)據(jù)處理和分析,發(fā)現(xiàn)其中存在的熱點話題[8]。Spark框架如圖2所示。
Cluster Master表示集群資源管理器;Driver是節(jié)點控制器;Worker Node是集群中的工作節(jié)點;Executor是每個工作節(jié)點上的執(zhí)行進程。
Spark通過彈性分布式數(shù)據(jù)集RDD進行數(shù)據(jù)分片存儲和計算并行化,一個用戶應用程序包含若干RDD運算。DAG是根據(jù)RDD之間的依賴關系形成的有向無環(huán)任務圖,DAGScheduler負責生成一條計算流水線任務集,其中的每一個任務成為一個task,TaskScheduler將task分發(fā)給Executor執(zhí)行。
當集群收到一個Spark應用提交時,Driver創(chuàng)建一個SparkContext,由SparkContext向Cluster Master申請資源、分配任務,Cluster Master為每個Worker Node的Executor分配資源并啟動它,Executor執(zhí)行task。
三、基于Spark的短文本熱點話題發(fā)現(xiàn)模型
本文提出的基于Spark與BTM模型結合的社交短文本熱點話題挖掘模型,工作流程如圖3所示。
(一)數(shù)據(jù)采集
建立大數(shù)據(jù)平臺,基于Kafka 并行采集OTA網(wǎng)站、12301旅游監(jiān)管平臺、旅游網(wǎng)站等的旅游評論數(shù)據(jù)、投訴數(shù)據(jù)等,采用分布式文件系統(tǒng)HDFS存儲采集到的短文本文檔,形成短文本數(shù)據(jù)集。
(二)數(shù)據(jù)預處理
數(shù)據(jù)預處理的目的是對數(shù)據(jù)集清洗,如去停用詞,數(shù)據(jù)去敏,去非中文字符等操作,之后進行分詞。這個操作過程可以分區(qū)并行處理,與RDD的特性吻合?;赟park的數(shù)據(jù)預處理流程如下:
(1)Spark 初始化。
(2)使用Parallel 算子創(chuàng)建分片RDD。
(3)進行Map Partition 分區(qū),啟動Task 運行。
(4)各計算節(jié)點Executor 讀取HDFS 中的分片文本數(shù)據(jù),并行的進行分詞,去敏,去停用詞、英文單詞等操作,生成部分詞集W,詞對集B。
(5)Collect Reduce 將部分結果匯聚到Driver, 生成短文本集的全集詞集W,詞對集B,結果緩存在RDD。
(三)并行BTM文本建模
本文第2節(jié)BTM建模方法可見,Gibbs抽樣是把數(shù)據(jù)集的所有詞、詞對隨機分配到各個話題下,計算每個詞對的概率分布,進而推理計算,,,這些參數(shù)的計算是針對不同詞、詞對和話題的,能夠?qū)崿F(xiàn)并行處理,同時減少運算時間,算法的效率進一步提高。
并行BTM文本建模算法描述如下:
(1)數(shù)據(jù)預處理中RDD中的W,詞對集B作為輸入,運用Gibbs抽樣確定初始話題K,根據(jù)集群計算節(jié)點規(guī)模將詞對進行分片劃分,運用Spark廣播機制,將初始參數(shù)分發(fā)到各計算機節(jié)點。
(2)各計算機節(jié)點將片內(nèi)詞、詞對隨機分配到各話題K下,統(tǒng)計詞對b分配給話題z的次數(shù)nz,短文本d中b的統(tǒng)計次數(shù),片內(nèi)詞w分配給z的次數(shù)。根據(jù)公式(2)計算話題分布,根據(jù)公式(5)計算每個文本中b的分布。
(3)Collect Reduce 將各節(jié)點的nz、及片內(nèi)內(nèi)部分結果匯聚到Driver,求和計算得到全局,根據(jù)公式(3)計算話題-詞分布,根據(jù)公式(6)計算詞對-話題分布,根據(jù)公式(4)計算文檔-話題分布。
(4)是否達到迭代次數(shù)?否則重復步驟2和3;是則生成文檔-話題分布矩陣。
(四)并行文檔相似度計算
通過BTM建模,得到整個短文本數(shù)據(jù)集的話題分布、話題-詞分布及文檔-話題分布,將不含語義信息的文檔詞向量表示轉化為包含語義信息的話題向量表示,向量的每一項都是話題的概率,文檔相似性計算就轉化成2個話題向量之間的相似度計算。本文采用JS距離計算兩個文檔之間的相似度。設di,dj分別是第i和j個文檔,則第i和j個文檔的相似度計算方法如下:
按公式(7)計算第 i和 j個文檔的相似度。
(3) Collect Reduce 生成文本集的所有文檔間的相似度,結果存放于RDD。
(五)基于K-means的并行熱點話題發(fā)現(xiàn)
傳統(tǒng)K-means算法的簇心初值敏感,不同的初值其劃分的結果可能不一樣,且更新時簇心迭代效率慢。本文采用上述基于Spark的算法并行得到了短文本的使用話題表征的向量及話題相似度矩陣后,再根據(jù)話題之間的相似度,采用K-means算法,聚類得到熱點話題,即 K個話題向量。算法描述如下:
(1)隨機選擇 K個文本(話題表征的向量)作為簇心。
(2)以文本之間的相似度作為距離,根據(jù)距離最短原則,各節(jié)點將局部文本集中的每個文本劃分到最近的簇。
(3)各節(jié)點重新計算每個簇的局部簇心。
(4)各節(jié)點比較局部簇中心之間的距離,合并距離較近的簇,并計算合并更新后的簇心。
(5)Collect Reduce收集各節(jié)點的局部簇心,合并局部簇并更新形成新的簇心。
(6)重復步驟2-5,直到簇心不再改變。
四、實驗與分析
(一)實驗環(huán)境
采用4臺主機組建1個主節(jié)點、3個從節(jié)點的計算集群,主機配置: CPU 4核心,主頻2.6G HZ,內(nèi)存8G,硬盤500G。操作系統(tǒng) CentOs7.5 ,Apache Hadoop 2.6,Spark2.4.7,JDK 1.8,算法通過Java編程實現(xiàn)。數(shù)據(jù)集為OTA公司提供的旅游評論、投訴和微博數(shù)據(jù),記錄超過10萬條。
(二)評價指標
本文主要目的是在Spark環(huán)境下,并行化BTM和K-means,主要考察算法加速比和可擴展性,話題發(fā)現(xiàn)的準確度不是考察目的。
加速比
Amadahl定律定義加速比是指同一任務在單節(jié)點串行算法的運行時間與多結點并行算法運行時間的比率。
可擴展性
指隨著集群節(jié)點數(shù)量的增加,算法的運行花費時間的變化情況。該指標反映集群規(guī)模的變化對算法性能的影響。
(三)實驗結果及分析
圖 4" 算法加速比
由圖4可見,隨著節(jié)點數(shù)的增加,加速比呈現(xiàn)增長趨勢,但不是線性增長,說明本算法通過并行化,加速了算法,縮短了熱點話題的發(fā)現(xiàn)時間,提高了實時性。但線性增加計算節(jié)點時,因為通信成本增加,加速比上升速度卻下降了。加速比隨節(jié)點數(shù)增加到2.8后增長速度有所下降,并沒有呈現(xiàn)線性增長,表明算法雖具有一定的可擴展性,但可擴展性還有待提高。
整個算法中,由于采用分布式文件系統(tǒng),話題詞集B的構建階段,通過 Map和Reduce在進行分詞時通信量少,算法加速性能好。同時,一些環(huán)節(jié)如文檔相似度計算,各節(jié)點獨立計算并行度高。但有些環(huán)節(jié),如K-means聚合階段,通信量增加,同步消耗大,加速性能下降。
五、結語
本文基于Spark計算框架,對典型的BTM算法和K-means算法進行研究,提出了并行旅游輿情熱點話題發(fā)現(xiàn)算法,通過對旅游評論、微博短文本集的詞對生成、文檔-話題分布矩陣、文檔相似度計算及聚類過程進行基于Spark框架的并行化,縮短了熱點話題的發(fā)現(xiàn)時間,提高了實時性。實驗結果表明本算法相比傳統(tǒng)BTM模型算法的加速比和擴展性更好,適用于旅游輿情熱點話題發(fā)現(xiàn)的應用需求。
參考文獻
[1]HUANG SQ, YANG YT, LIH K, et al. Topic Detection from Microblog Based on Text Clustering and Topic Model Analysis, 2014 Asia-Pacific Services Computing Conference. IEEE,2014:88-92
[2]李衛(wèi)疆,王真真,余正濤.基于BTM和K-means的微博話題檢測[J].計算機科學,2017,44(2),258-274.
[3]Yan X, Guo J, Lan Y, et al. A biterm topic model for short texts. Proceedings of the 22nd international conference on World Wide Web. International World Wide Web conferences Steering Committee, 2013:1445-1456
[4] Cheng X,Yan X,Lan Y,et al. BTM: Topic modeling over short texts. IEEE Transactions on Knowledge and Data Engineeri ng,2014,26(12):2928-2941.
[5]王亞民,胡悅.基于BTM的微博輿情熱點發(fā)現(xiàn)[J].情報雜志,2016,35(11):119-124.
[6]王舒漫,李愛萍,段利國,等.基于BTM的物聯(lián)網(wǎng)服務發(fā)現(xiàn)方法[J].計算機應用,2020,40(2):459-464.
[7]https://github.com/apache/spark
[8]王全民,胡德程.基于Spark的K-means快速聚類算法的優(yōu)化[J].計算機仿真,2022,39(03):344-349.
(作者單位:三峽大學計算機與信息學院)