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