鄭少偉 王 昕
(燕山大學 理學院,河北 秦皇島 066004)
2019年12月,新冠肺炎疫情席卷武漢,并改變了全國人民的生活、工作、學習方式。疫情期間,全國人民居家隔離,官方媒體每天在社交網絡平臺上更新病例數據,普通用戶則在微博等社交平臺上發(fā)表關于疫情的心情狀態(tài)以及疫情對自己生活、工作的影響。根據微博的官方數據,自新冠肺炎疫情暴發(fā)以來,微博活躍用戶數量大幅增長,截至2020年3月,微博平臺流量連續(xù)兩個月增長50%以上,平均每天有2億用戶在微博上發(fā)表與疫情相關的博文,互聯(lián)網信息增長的速度遠遠超過人們收集以及利用信息的速度[1]。因此,如何判斷與突發(fā)事件或社會熱點事件有關的博主是否是專家,是一個非常值得研究的熱點話題。這既可以幫助微博用戶節(jié)省瀏覽時間,帶給用戶更好的使用體驗,又可以在一定程度上引領社會輿論導向,維護社會秩序。
目前為止,國外在專家角色識別方面的研究更成熟一些。Graham和Avery等通過將JAVA論壇表示為有向圖的方式,找出論壇中能最恰當解答某一特定問題的專家[2]。Forestier和Stavrianou等人分析了現有的社交網絡中的角色,對多種社交網絡中專家角色的識別方法進行了分析與綜述[3]。Florian和Laura等在研究用戶的連通性和活躍性的基礎上來判斷用戶的影響力,很少考慮有影響力用戶的進一步特征[4]。Ehsan和Jalal使用了術語相關矩陣、向量空間模型和PageRank算法,并提出了一種優(yōu)于傳統(tǒng)方法的新混合模型來向用戶推薦專家進行查詢[5]。Mahmood和Zohreh等人考慮四個特征組,即話題相似度、新興話題、用戶行為和話題轉移,應用學習框架以預測未來成為專家用戶的可能性[6]。
與國外相比,國內社交網絡平臺專家角色識別的研究起步較晚,專家角色識別的研究方法也不夠成熟,但也取得了一些成果。王佳敏和吳鵬等從博主影響力和博主微博活躍度兩個維度出發(fā),結合微博信息的傳播特點,構建識別微博意見領袖指標體系,并且通過改進的層次分析法確定指標權重[7]。彭麗徽和李賀等從博主影響力、博主微博活躍度和其他博主認同度這三個維度出發(fā),構建識別微博意見領袖指標體系,通過改進的模糊層次分析法確定指標要素權重[8]。吳江和趙穎慧等通過融合微博博主的個人屬性、網絡特征、行為特征和文本特征,構建意見領袖識別的綜合指標體系模型[9]。
這些國內外專家識別均只考慮了非文本數據,沒有考慮文本數據,因此專家識別準確率不是特別理想。本文在上述專家識別模型中綜合考慮了文本數據與非文本數據,提高了專家識別的精確度。
基于本課題研究的特點,中等水平的訓練集數據就可以訓練出較好的專家識別模型,因此對數據量的要求不是特別高。本文使用數據采集器在新浪微博爬取了545位有效的、與新冠肺炎疫情相關的博主主頁上的基本數據,包括每位博主的名稱、關注數、粉絲數、微博總數、每條微博平均轉發(fā)數、評論數、點贊數等非文本數據和博主發(fā)表的博文等文本數據。
本文使用專家識別準確率作為衡量模型優(yōu)劣的標準,所以需要事先人為判定所選的545位博主是否是與新冠肺炎疫情相關的專家:若是,標注其為1;若不是,標注其為0。人為判定微博博主是否是與新冠肺炎疫情相關專家的步驟如下:查看該博主的非文本數據,博主的每項非文本數據均要大于10,并且查看調查時間段每名博主發(fā)表的與新冠肺炎疫情有關的博文,若這些博文90%以上與新冠肺炎最新確診病例、正確防疫、抗疫、戰(zhàn)疫知識、疫苗相關,而不是關于疫情期間生活瑣事,就可以判定該博主是專家。
本文鎖定的時間段為2019年12月1日至2021年8月10日。將545位博主不在該時間段發(fā)表的微博刪除,再把在該時間段但是與新冠肺炎疫情無關的微博刪除,根據剩余的有效微博,共標注出262位專家,283位非專家。
決策樹是一種非參數的、有監(jiān)督的學習方法。它能從一系列有特征標簽的數據中總結出分類決策規(guī)則,并以樹狀圖的形式表示這些規(guī)則,以解決數據分類問題[10]。決策樹算法簡單易懂,適用于各種類型的數據,在解決各種分類問題時均表現良好。決策樹算法的本質是一種if-then結構,通過詢問一系列問題就已對數據進行分類。在整個分類過程中,模型一直針對特征變量進行提問,最初被提問的問題稱為根節(jié)點,在得到最終結論前的問題為中間節(jié)點,而最終得到的結論稱為葉子結點。根節(jié)點沒有進邊只有出邊,中間節(jié)點既有進邊又有出邊,進邊只有一條邊,但出邊可以有很多條邊,葉子結點只有進邊沒有出邊[11]。
本文研究的目的是將選定的545位博主通過決策樹模型分為兩類:專家和非專家。為了達到該二分類目的,需要建立一棵決策樹。
打開jupyter lab,導入建立決策樹模型需要使用的算法庫和模塊,加載需要被分類的非文本數據,其中前八列為需要分類的變量,最后一列為博主的標簽,“1”表示該博主為專家,“0”表示該博主為非專家,然后將數據以7∶3的比例分為訓練集和測試集,實例化一棵決策樹,建立決策樹模型,并用訓練集訓練模型,最后用測試集去檢驗模型,得出模型識別專家的準確率為74.54%。
接下來,對該決策樹進行調參以達到更高的專家識別精度。本文采用網格搜索法進行調參,調參后決策樹模型專家角色識別精確度達到了81.37%。
本文的文本數據是指選定的545位博主在2019年12月1日至2021年8月10日發(fā)表的與新冠肺炎疫情相關的博文。文本分析,首先要做的數據預處理就是分詞。分詞是將連續(xù)的語句按照一定的規(guī)律重新組合成系列詞語的過程。分詞之后去除停用詞,停用詞是指在文本分析的過程中為了達到某種目的需要過濾掉的某些字、詞或標點符號[12]。去除停用詞應靈活變通,停用詞詞典內容應具體情況具體分析,例如在進行情感分析時,語氣詞、感嘆號是應該保留的,因為其代表了一些感情傾向。對545位博主的文本數據進行分詞、去停用詞處理后,提取頻數最高的9個關鍵詞組成關鍵詞向量,根據關鍵詞向量計算每位博主與專家文本的相似系數,對相似系數進行降序排列后,得到用戶的專家度,以此來識別專家角色。根據關鍵詞向量計算每位博主與專家文本的相似系數,即為余弦相似度。
余弦相似度也稱為余弦距離,是向量空間中兩個向量之間夾角的余弦。用其來衡量兩個向量之間的差異值,越接近1,就表明兩向量之間的夾角越接近0,也代表兩個向量越相似[13]。若有向量a和向量b,向量a=(x1,x2,…,xn),向量 b=(y1,y2,…,yn),則向量 a 和向量b之間的余弦相似度計算公式為:
基于文本分析的專家角色識別過程如圖1所示。
圖1 文本分析專家角色識別過程
1.文本分析分詞、去停用詞
在做文本分析時,首先要做的數據預處理就是分詞和去停用詞。本文采用python提供的jieba庫對文本數據進行分詞和去停用詞處理。jieba庫對文本數據進行分詞的程序過程為:打開jupyter lab,導入需要使用的算法庫和模塊,加載需要被分詞的TXT文本并進行分詞,TXT文本分好詞后,需要加載停用詞列表,并去除停用詞。以197號博主的第505條文本數據為例,用python提供的jieba庫對文本數據進行分詞、去停用詞處理后,前后對照表如表1所示。
表1 分詞、去停用詞比對
從表1可以看出,一些在原文本中存在的符號經過去停用詞處理后不再出現,原文本經過分詞和去停用詞處理后,可以達到提取關鍵詞的文本要求。
2.提取關鍵詞向量
關鍵詞是對微博文本數據的高度概括,是文本數據內容出現頻數最高的詞匯。本文選定的545位微博博主中有262位被人為判定為專家,將這262位專家的文本數據結合在一起形成一個新的專家文本,使用python對該專家文本做分詞、停用詞處理后出現次數最多的前9個詞及其詞頻如表2所示。
表2 專家文本關鍵詞與頻數
這9個詞在與新冠肺炎疫情相關的博文中出現的頻數最高是符合常理的。表2顯示的詞頻最高的詞匯和其頻數,專家文本關鍵詞向量的權重為:Y=(138922,105020,98028,97672,88603,56680,55876,38607,251 57)。
3.專家相似度排序算法
將545位博主中的每一位博主的文本數據分詞、去停用詞處理后計算“病例”“疫情”“確診”“新冠”“新增”“肺炎”“疫苗”“接種”“冠狀病毒”這9個關鍵詞在文本數據出現的頻數,形成該博主的文本關鍵詞向量權重,記為Xi。若該博主發(fā)表的所有文本數據中都沒有出現某關鍵詞,那么該關鍵詞的頻數就記為0。將545位博主形成的545個關鍵詞向量權重綜合起來,構造文本關鍵詞權重X:
矩陣X共545行9列。其中矩陣第i行表示第i個博主的關鍵詞向量權重,第j列表示9個關鍵詞中第j個關鍵詞的權重,注意X矩陣的列名順序即關鍵詞名的排列順序應同綜合的專家文本關鍵詞向量Y列名排列順序相同。根據關鍵詞權重矩陣X和綜合的專家文本關鍵詞向量Y,計算每位博主的文本數據與專家文本數據的相似系數,將其從大到小降序排序,選取前262位博主為專家,其余為非專家。與人為判定的專家進行比較,得出文本分析識別專家的準確率。
本文使用python實現基于文本數據特征的專家角色識別,按照矩陣X的格式整理好用于計算相似度的數據集,計算每一名微博博主文本關鍵詞向量與專家文本關鍵詞向量的相似度。相似度最高的前4位博主文本關鍵詞向量與專家文本關鍵詞向量的數據如表3所示。
表3 與專家相似度最高的4位博主綜合數據
這4個博主與專家文本相似度最高,因此根據文本數據相似度排序原則,這4個博主均被判定為專家。事實上,這4個博主同樣也被人為判定為專家,因此就這4個博主而言,專家識別的準確率為100%。
相似度最低的7位博主文本關鍵詞向量與專家文本關鍵詞向量的數據如表4所示。
表4 與專家相似度最低的7位博主綜合數據
根據文本數據相似度排序算法,我們可以判定表4中的7個博主均是非專家。事實上,這7個博主同樣也被人為判定為非專家,因此單單就這7個博主而言,專家識別的準確率為100%。
比較這545位博主的文本識別專家的預測結果和人為評定的結果,若兩個結果一致,則Ti為1;若不一致,則Ti為0。對Ti求和再除以博主總數,可得文本數據相似度排序算法識別準確率,如表5所示。
表5 文本分析預測結果
基于文本識別的準確率計算公式為:
本文共選定545位博主,文本分析識別專家角色與人為判定兩種方法判定一致的共有437位,所以基于文本數據專家識別的準確率為80.18%。
隨機森林是一種典型的Bagging集成算法,它的基評估器是決策樹,多棵決策樹組成的森林稱為隨機森林。將每棵樹各自分別對樣本進行分類,產生各自的分類標簽,最后以少數服從多數的方式決定最終的樣本分類標簽[14]。隨機森林模型的分類步驟主要有:
1.原始樣本訓練集中應用bootstrap方法有放回地隨機抽取M個樣本,并由此建立M棵決策樹。
2.假如共有n個特征變量,在每一棵樹的每個節(jié)點處隨機抽取K個特征變量,計算每個特征蘊含的信息量,選擇一個分類能力最強的特征變量進行節(jié)點分裂。
3.將生成的多棵決策樹組成隨機森林模型,應用該模型對新數據進行分類,分類結果按照少數服從多數的原則而定。
其結構流程圖如圖2所示。
圖2 隨機森林分類流程圖
與其他分類模型相比,隨機森林模型的優(yōu)點有:隨機森林模型擁有更高的穩(wěn)定性和更高的精確度。隨機森林模型分類速度快、抗噪聲能力較強,因此能被應用于高維數據分類的情況。隨機森林模型克服了決策樹過擬合的問題。訓練速度很快,能得到變量重要性排序。基于這些優(yōu)點,隨機森林算法的應用很廣,在數據分類過程中隨處可見。
本文使用python實現基于文本數據特征與非文本數據特征融合的隨機森林模型的構建。本文需要分類的數據集如表6所示(只展示部分數據)。
表6 選定博主的綜合數據
基于以上待分類的數據集建立隨機森林模型。打開jupyter lab,導入需要使用的算法庫和模塊,加載本文需要被分類的文本數據與非文本數據。該Excel數據的前9列為用來分類的特征變量,最后1列為人為判定的博主的標簽,“1”表示該博主為專家,“0”表示該博主為非專家,將數據以7∶3的比例分為訓練集和測試集,訓練集用來訓練隨機森林模型,測試集用來檢測所建立模型的優(yōu)劣。運行該模塊所有的python程序,得出隨機森林模型識別專家的準確率為89.63%。
在隨機森林的所有參數中,決策樹的數量這個參數對模型精確度的影響是最大的,且影響效果為單調的,決策樹越多,隨機森林預測的精確性越高。但是隨機森林模型是存在決策邊界的,決策樹的數量達到一定程度后,隨機森林預測的精確性不再上升,而是開始波動,并且決策樹的數量越多,需要的內存與計算量也就越大,模型訓練的時間也就越長,對于這個參數的選擇,需要在訓練難度與模型預測精度間達到平衡。本文對森林中決策樹的數量進行了調整,調整后的結果為在決策樹的數量為53棵時,隨機森林模型專家識別精確度最高,最高精確度為92.07%。具體的調參學習曲線如圖3所示。
圖3 調參學習曲線
從圖3的學習曲線中可以看出,當決策樹的數量達到25棵時,模型識別精度不再上升,而是開始波動,并且當決策樹的數量為53棵時,模型識別的精度最高,所以該隨機森林模型的決策樹數量參數選定為53。
本文建立了三種專家角色識別模型。三種專家角色識別模型識別專家的結果為:基于用戶非文本數據的決策樹模型識別用戶專家的準確率可以達到81.37%;基于用戶文本數據的余弦相似度算法識別用戶專家角色的準確率可以達到80.18%;基于文本數據與非文本數據的隨機森林模型識別用戶專家角色的準確率可以達到92.07%。三種模型的專家角色識別準確率如圖4所示。
圖4 三種模型準確率比較
可以得出,同時考慮文本特征數據與非文本特征數據建立的隨機森林模型專家角色識別準確率最高。決策樹模型只考慮了非文本特征,沒有考慮博主發(fā)表博文的文本內容,文本分析只考慮了博主發(fā)表的博文的內容,沒有考慮到關注數、粉絲數等客觀存在的數據,構建這兩種模型的數據較片面。而隨機森林模型的構建是建立在文本數據和非文本數據綜合考慮之上的,因此該模型的專家識別精確性最高。