摘要:社交網(wǎng)絡(luò)用戶言論及關(guān)聯(lián)性問題一直是輿情監(jiān)控的一個(gè)重要工作和難點(diǎn)問題,針對用戶不當(dāng)言論及同一言論下不同用戶之間的關(guān)聯(lián)關(guān)系,文中通過爬蟲和深度學(xué)習(xí)方法,以及大數(shù)據(jù)分析平臺實(shí)現(xiàn)了針對用戶不當(dāng)評論信息來進(jìn)行關(guān)聯(lián)挖掘,通過爬取微博社交平臺數(shù)據(jù)驗(yàn)證了論文提出的系統(tǒng)架構(gòu)和方法,并取得了不錯(cuò)的效果。
關(guān)鍵詞:爬蟲;輿情;用戶追蹤
中圖分類號:TP393? ? ? 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2022)01-0026-03
1 背景
隨著互聯(lián)網(wǎng)的迅速發(fā)展,網(wǎng)絡(luò)社交平臺[1]不斷涌現(xiàn),大家可以隨時(shí)隨地在社交平臺上發(fā)表自己對熱點(diǎn)事件的觀點(diǎn)和想法。由于社交平臺的開放性和普及性,部分用戶利用平臺發(fā)表一些不當(dāng)言論,如發(fā)布虛假消息、反動(dòng)言論等。傳統(tǒng)方式下,只能完全依賴人工去發(fā)現(xiàn)和評審這些言論,雖然準(zhǔn)確率有一定的保證,但是時(shí)間成本和人力成本則不可估量。在這樣的情況下需要借助機(jī)器來進(jìn)行追蹤,以便大大節(jié)省時(shí)間和人力成本。需求分析如下:
1)借助機(jī)器來對這些相關(guān)言論進(jìn)行評審,并加以人工作為輔助決策。
2)借助機(jī)器對不當(dāng)言論的用戶進(jìn)行平臺信息追蹤,并可潛在挖掘其他可能存在不當(dāng)言論的用戶。
3)基于機(jī)器獲取到的大數(shù)據(jù)信息,構(gòu)建專用知識圖譜進(jìn)行數(shù)據(jù)處理。
2 基于爬蟲的社交平臺輿情用戶追蹤系統(tǒng)設(shè)計(jì)
2.1 系統(tǒng)設(shè)計(jì)步驟
基于需求分析,系統(tǒng)設(shè)計(jì)分三步進(jìn)行。
首先基于深度學(xué)習(xí)[2]實(shí)現(xiàn)機(jī)器評審,將機(jī)器評審問題定義為分類問題,從而基于深度學(xué)習(xí)來構(gòu)建分類模型。首先通過語料庫和分詞構(gòu)建大型中文字典,使用字典映射將文本轉(zhuǎn)換為數(shù)值型向量,然后基于Embedding和LSTM構(gòu)建神經(jīng)網(wǎng)絡(luò)架構(gòu),最后人工標(biāo)注訓(xùn)練集進(jìn)行多輪迭代學(xué)習(xí)。
然后基于Python爬蟲[3]實(shí)現(xiàn)用戶信息追蹤,針對某一特定社交平臺,設(shè)計(jì)爬蟲方案,使用爬蟲來自動(dòng)獲取某話題下的評論信息、用戶個(gè)人信息、用戶關(guān)注的人的信息、用戶粉絲信息和用戶所發(fā)博文信息。
最后是基于知識圖譜的數(shù)據(jù)處理,將大數(shù)據(jù)[4]信息解析為三元組數(shù)據(jù),從而構(gòu)建專用的知識圖譜,并可基于該圖譜實(shí)現(xiàn)各類應(yīng)用,如預(yù)測、搜索等。
2.2 系統(tǒng)流程
根據(jù)以上分析,基于爬蟲的社交平臺輿情[5]用戶追蹤系統(tǒng)流程如圖1所示。
1)利用爬蟲技術(shù)爬取微博平臺和外網(wǎng)平臺(如Facebook、推特等)的敏感話題評論,并且人工進(jìn)行標(biāo)注生成訓(xùn)練集,其中不當(dāng)言論標(biāo)記為1,不當(dāng)言論標(biāo)記為0。然后基于深度學(xué)習(xí)技術(shù)在訓(xùn)練集上生成二分類模型。
2)批量爬取微博平臺的評論,將評論集作為算法的輸入,基于已生成的模型對評論進(jìn)行預(yù)測,如果預(yù)測為負(fù)面的評論,則將該評論人加入用戶隊(duì)列,等待被追蹤,反之,則不處理。
3)實(shí)時(shí)監(jiān)聽用戶隊(duì)列并不斷從中取出用戶進(jìn)行追蹤,利用爬蟲技術(shù)爬取用戶資料并進(jìn)行收集,包括用戶個(gè)人信息、關(guān)注的人、粉絲和博文。
4)根據(jù)人際關(guān)系和文本信息分別設(shè)計(jì)打分函數(shù),將已收集的用戶資料輸入至打分函數(shù),計(jì)算得出用戶嫌疑值。
5)設(shè)定閾值將用戶傳入不同的名單,如果用戶被加入嫌疑榜單,則將該用戶的粉絲加入用戶隊(duì)列,等待被追蹤。
2.3 系統(tǒng)模塊
2.3.1 神經(jīng)網(wǎng)絡(luò)模型生成模塊
神經(jīng)網(wǎng)絡(luò)模型生成模塊使用機(jī)器算法實(shí)現(xiàn)社交平臺中言論的情感識別,代替人工識別言論是否為不當(dāng)言論,從而大幅節(jié)省人力和時(shí)間成本。基于深度學(xué)習(xí)技術(shù)構(gòu)建神經(jīng)網(wǎng)絡(luò)模型,該模型在人工標(biāo)注的訓(xùn)練集上進(jìn)行迭代訓(xùn)練,從而生成二分類模型。
RNN神經(jīng)網(wǎng)絡(luò)在處理文本類數(shù)據(jù)有很好的表現(xiàn),但是考慮到RNN難以記憶長期的文本信息,所以采用LSTM作為架構(gòu)的核心組件。對于文本的編碼,不采用高維稀疏的one-hot編碼,而是基于任務(wù)訓(xùn)練的過程中自訓(xùn)練Embedding層來對文本進(jìn)行編碼,基于RNN神經(jīng)網(wǎng)絡(luò)文本數(shù)據(jù)處理流程如圖2所示,通過輸入序列檢測目標(biāo)文本,在Embedding層分詞后生成對應(yīng)的向量矩陣,在LSTM層矩陣進(jìn)入長期記憶神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,全連接神經(jīng)網(wǎng)絡(luò)層激活函數(shù),最后自定義判別閾值,以二分類形式進(jìn)行輸出。
考慮到模型任務(wù)的特殊性,構(gòu)建專有的語料庫并基于該語料庫構(gòu)建映射字典。所有文本經(jīng)過字典映射為數(shù)值索引。
從微博平臺和外網(wǎng)平臺采集相關(guān)的正負(fù)例數(shù)據(jù)并人工進(jìn)行標(biāo)注作為模型的訓(xùn)練集,其中留出部分訓(xùn)練數(shù)據(jù)作為驗(yàn)證集來驗(yàn)證模型在訓(xùn)練過程中每輪的損失值和精度,通過觀察每輪的參數(shù)來判斷模型訓(xùn)練多少輪,這樣可以防止模型過擬合。將訓(xùn)練好的模型保存為HDF5格式,其中包含架構(gòu)中每個(gè)層的權(quán)重和參數(shù)。當(dāng)使用模型進(jìn)行預(yù)測未知文本時(shí),即加載HDF5文件并重新構(gòu)建出模型。
2.3.2 追蹤模塊
基于模型預(yù)測將篩選的可疑用戶加入待追蹤隊(duì)列,追蹤模塊將使用爬蟲技術(shù)對這些用戶資料進(jìn)行收集。包括用戶個(gè)人信息、關(guān)注的人、粉絲和博文。
針對微博平臺的評論信息和用戶主頁信息,設(shè)計(jì)兩種不同的爬蟲方案。
1)話題下的評論信息爬取,微博平臺實(shí)施了各種反爬措施,如對訪問頻率的監(jiān)控、頁面所有數(shù)據(jù)使用異步加載和使用JS封裝數(shù)據(jù)請求接口等。對這三種反爬措施采用如下解決方案。
①訪問頻率的監(jiān)控:由于評論信息爬取需要首先進(jìn)行登錄驗(yàn)證,所以微博平臺會對該用戶和IP進(jìn)行訪問監(jiān)控,若頻率大于一定人工使用頻率,則IP甚至用戶的賬號會被封。出于該問題的考慮,我們使用瀏覽器提前進(jìn)行登錄,獲取到瀏覽器中的cookie信息并封裝到請求頭中。以及使用代理IP的方式進(jìn)行動(dòng)態(tài)更換請求的IP地址。另一方面,通過sleep函數(shù)使程序更像人工訪問頻率。
②數(shù)據(jù)使用異步加載:微博平臺的評論信息全部使用ajax異步加載,這樣導(dǎo)致通過requests發(fā)起的請求獲取到的頁面數(shù)據(jù)是靜態(tài)的,并非包含我們所需的數(shù)據(jù)。我們采取selenium的方式進(jìn)行自動(dòng)模擬人工打開瀏覽器進(jìn)行訪問。
③JS封裝數(shù)據(jù)請求接口:微博頁面中數(shù)據(jù)請求接口的url都封裝到JS函數(shù)中,通過獲取到該頁面的html代碼是無法取到該url。我們使用瀏覽器網(wǎng)絡(luò)狀態(tài)進(jìn)行人工實(shí)時(shí)追蹤這些請求url。
2)用戶主頁信息爬取,微博平臺的官網(wǎng)網(wǎng)址根據(jù)智能終端的不同分為三種,即智能手機(jī)端、電腦端、非智能手機(jī)端。三端的數(shù)據(jù)是互通的,并且反爬強(qiáng)度順序?yàn)殡娔X端〉智能手機(jī)端〉非智能手機(jī)端。為了用戶主頁信息爬取的穩(wěn)定性,使用https://weibo.cn/網(wǎng)址進(jìn)行爬取。針對登錄驗(yàn)證和數(shù)據(jù)解析,采取如下設(shè)計(jì)方案。
①登錄驗(yàn)證:采取cookie內(nèi)嵌到請求頭信息中的方式來完成登錄驗(yàn)證,為了防止cookie的失效或者賬戶被封,我們自定義了cookie池,當(dāng)某一個(gè)cookie無法驗(yàn)證成功時(shí),請求頭會自動(dòng)從cookie池中獲取cookie進(jìn)行替換。
②數(shù)據(jù)解析:驗(yàn)證成功后,使用requests庫獲取包含用戶數(shù)據(jù)的html代碼,采用xpath來解析代碼,精準(zhǔn)獲取到包含數(shù)據(jù)的標(biāo)簽,對于具有分頁的數(shù)據(jù),通過解析和拼接url進(jìn)行多次請求獲取。
2.3.3 用戶嫌疑值計(jì)算和判定模塊
將追蹤模塊收集的用戶資料分為人際關(guān)系和文本信息兩個(gè)方面,設(shè)計(jì)不同的打分函數(shù)量化用戶在該方面的嫌疑值,并且為每個(gè)方面分配權(quán)重,進(jìn)而計(jì)算用戶嫌疑值。設(shè)定閾值,判斷用戶嫌疑值和閾值的大小,如果嫌疑值小于閾值,則將該用戶加入人工判定名單,反之,則加入用戶嫌疑榜單并鏈入知識圖譜。
基于爬蟲的微博嫌疑值評估計(jì)算流程如圖3所示,如果話題下的評論存在不當(dāng)言論,則爬取用戶及粉絲目錄下的所有博文,并把用戶及粉絲加入一級隊(duì)列,如果博文存在負(fù)面影響,則增加嫌疑值,并加入嫌疑人榜單,若嫌疑值大于閾值,需進(jìn)行人工評審。
3 基于爬蟲的社交平臺輿情用戶追蹤系統(tǒng)實(shí)現(xiàn)
1) 建立模型,通過爬蟲隨機(jī)爬取微博8000余條評論作為語料庫,基于該語料庫和Jieba分詞構(gòu)建字典。爬蟲爬取微博敏感主題(如國安法、中印等)下的評論,以及人工采集外網(wǎng)社交平臺(推特、Facebook等)的負(fù)面評論。取其中的1700余條作為訓(xùn)練集并人工進(jìn)行標(biāo)記,正面評論和負(fù)面評論大約各占一半。然后基于Embedding和LSTM深度學(xué)習(xí)技術(shù)來構(gòu)建分類模型。取1/5的訓(xùn)練集作為驗(yàn)證集,模型最佳驗(yàn)證精度達(dá)80%左右。
2) 追蹤爬取,通過爬蟲方式采集微博平臺的評論集,加載已訓(xùn)練好的模型,對評論集進(jìn)行批量預(yù)測,若某條評論的預(yù)測結(jié)果為負(fù)面,則該評論人會以初始嫌疑值k進(jìn)入待追蹤階段。然后爬取該用戶的微博主頁信息,其中包含關(guān)注的人、粉絲、個(gè)人基本信息、所發(fā)的博文以及博文下的評論。爬取效果如圖4所示。
3.3 嫌疑值計(jì)算,根據(jù)人際關(guān)系和文本信息兩個(gè)維度分別進(jìn)行打分
人際關(guān)系打分:若用戶A關(guān)注的人中存在嫌疑用戶B,嫌疑用戶B的嫌疑值越高,那么用戶A存在嫌疑的可能性就越大。若用戶A的粉絲C為嫌疑用戶則無法判定用戶A的嫌疑性?;谶@兩條常識,故人際關(guān)系打分僅考察關(guān)注的人。打分規(guī)則是基于嫌疑用戶榜單,逐一排查用戶A關(guān)注的所有人中是否存在榜單中。每存在一人,則用戶A的嫌疑值加2,無上限。
文本信息打分:對于博文以用戶A所有博文為單位組成一個(gè)批量,加載模型預(yù)測每條博文。對于博文下的評論是將所有評論添加到擴(kuò)充評論集,并寫入文件中,作為后續(xù)算法的輸入。打分規(guī)則是若某條博文被判定為負(fù)面,則用戶A的嫌疑值加5,無上限。
用戶嫌疑值=用戶初始嫌疑值+用戶主頁信息嫌疑值,其中用戶初始嫌疑值從評論集或粉絲中產(chǎn)生,用戶主頁信息嫌疑值=人際關(guān)系分?jǐn)?shù)×權(quán)重 + 文本信息分?jǐn)?shù)×權(quán)重。
3.4 判定階段
1)設(shè)定用戶嫌疑榜單,用于記錄具備一定嫌疑的用戶,榜單存于數(shù)據(jù)庫中。
2)設(shè)定人工評判名單,用于保存那些被算法過濾掉的可能不具備嫌疑的用戶,該名單中的所有用戶將由人工進(jìn)行最終評判。由于機(jī)器算法存在一定錯(cuò)誤率,該名單將有助于容忍這種錯(cuò)誤。
3)設(shè)定嫌疑閾值t,令t=k來保證只要有一定嫌疑可能的用戶就會進(jìn)入到嫌疑榜單和知識圖譜中。
4)當(dāng)用戶A的嫌疑值大于或等于t,則將用戶A加入嫌疑榜單。
5)當(dāng)用戶A的嫌疑值大于或等于t,則將用戶A的相關(guān)信息鏈入知識圖譜。
6)對進(jìn)入嫌疑榜單的用戶A的所有粉絲進(jìn)行逐一排查,若粉絲C已經(jīng)在嫌疑榜單中,則不操作,若不在,則將粉絲C以初始嫌疑值0進(jìn)入待追蹤階段進(jìn)行迭代。
對微博部分?jǐn)?shù)據(jù)進(jìn)行模擬預(yù)測,負(fù)面評論效果如圖5所示。
4 結(jié)束語
通過基于爬蟲的社交平臺輿情用戶追蹤系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn),驗(yàn)證了基于需求點(diǎn)的可行性研究,系統(tǒng)全過程大部分不需要人工參與,多個(gè)目標(biāo)可以同步進(jìn)行檢測,相互不影響。在實(shí)時(shí)熱門的評論下,一旦出現(xiàn)不良言論即可開始追蹤,對其微博博文的搜查提高精度。由此證明,借助機(jī)器在很大程度上可以節(jié)省大量的人力和時(shí)間成本。但由于短時(shí)間和人工標(biāo)注,目前代碼的訓(xùn)練集僅有1700余條(正負(fù)例約各一半),屬于小樣本訓(xùn)練。另外,負(fù)例數(shù)據(jù)難以找尋,導(dǎo)致訓(xùn)練集的數(shù)據(jù)規(guī)模難以短時(shí)間擴(kuò)大,所以模型的泛化能力不強(qiáng)。
參考文獻(xiàn):
[1] 王建慶.基于深度學(xué)習(xí)的社交平臺評論情感分析研究[D].青島:青島科技大學(xué),2020.
[2] 蔣彭.基于深度學(xué)習(xí)的情感分類及其在輿情分析中的應(yīng)用[D].南昌:南昌大學(xué),2020.
[3] 田煜.基于語義情感分析的網(wǎng)絡(luò)熱點(diǎn)爬蟲輿情分析系統(tǒng)[J].軟件,2020,41(8):89-93.
[4] 劉斌.基于大數(shù)據(jù)的網(wǎng)絡(luò)輿情分析方法研究[J].電腦知識與技術(shù),2020,16(30):25-27.
[5] 袁志遠(yuǎn),徐懷超,郭金順,等.基于大數(shù)據(jù)的網(wǎng)絡(luò)輿情分析系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].西藏科技,2020(12):76-80.
【通聯(lián)編輯:謝媛媛】
收稿日期:2021-09-16
作者簡介:陸莉莉(1978—),女,江蘇南京人,副教授,碩士,研究方向?yàn)榇髷?shù)據(jù)爬蟲。
3445500589208