盛成成, 朱 勇, 劉 濤
(南京工程學(xué)院 計算機工程學(xué)院,南京 211167)
近年互聯(lián)網(wǎng)的不斷發(fā)展,網(wǎng)絡(luò)已經(jīng)成為人們生活中不可或缺的一部分,而社交網(wǎng)絡(luò)、移動互聯(lián)網(wǎng)技術(shù)和智能手機的迅猛發(fā)展又為網(wǎng)民提供了快捷、迅速、有影響力的發(fā)聲渠道。網(wǎng)民通過社交平臺對于社會熱點事件發(fā)表自己的觀點情緒已成為主要現(xiàn)象,社交網(wǎng)絡(luò)平臺上網(wǎng)民的情感趨向產(chǎn)生了重大的社會影響。而隨著大學(xué)生等低收入高消費群體的增長,以及大學(xué)生缺乏風(fēng)險意識等原因,網(wǎng)絡(luò)貸款引發(fā)的悲劇也屢見不鮮。對此,本文提出了一種基于社交網(wǎng)絡(luò)的輿情分析方法,采用網(wǎng)絡(luò)爬蟲獲取數(shù)據(jù),使用Word2Vec建立詞向量并采用機器學(xué)習(xí)中的半監(jiān)督學(xué)習(xí)訓(xùn)練模型進行文本分類處理,最后采用數(shù)據(jù)可視化呈現(xiàn)網(wǎng)民的情感傾向、影響熱度等,直觀展現(xiàn)網(wǎng)貸行為的情況。
本文進行社交網(wǎng)絡(luò)網(wǎng)貸輿情分析的過程,主要包括數(shù)據(jù)挖掘、文本分類、情感分析、數(shù)據(jù)可視化4個步驟。數(shù)據(jù)挖掘采用網(wǎng)絡(luò)爬蟲實現(xiàn),文本分類采用有監(jiān)督的多層次二分類方法、基于標簽傳播算法的MAD吸附算法,情感分析利用文本分類中使用的有監(jiān)督方法結(jié)合集成式學(xué)習(xí)提高準確度,最后利用ECharts進行數(shù)據(jù)可視化。技術(shù)路線如圖1所示。
數(shù)據(jù)獲取主要包括2部分,分別是:信息爬取和分詞。
(1)通過網(wǎng)絡(luò)爬蟲實現(xiàn)對微博的抓取。網(wǎng)絡(luò)爬蟲是一個自動提取網(wǎng)頁的程序,為搜索引擎從萬維網(wǎng)上下載網(wǎng)頁,是搜索引擎的重要組成[1]。由于微博等社交網(wǎng)絡(luò)平臺采用反爬蟲機制,對訪問IP限制甚至直接封禁,為了自動化爬取足夠數(shù)量的數(shù)據(jù),在網(wǎng)絡(luò)上眾多代理網(wǎng)站上爬取大量免費代理IP,并對其進行測試,高質(zhì)量的存入數(shù)據(jù)庫中,構(gòu)建自己的代理池,通過代理池使用多個不同的IP訪問微博API,以此來消除訪問IP限制對爬蟲的干擾,繞過反爬蟲機制進行數(shù)據(jù)獲取。主要爬取的數(shù)據(jù)內(nèi)容為:
① 短文本數(shù)據(jù)(描述性內(nèi)容、評論等)。
② 發(fā)布消息的用戶數(shù)據(jù)(昵稱、年齡、地理位置、粉絲數(shù)等)。
③ 用戶之間的聯(lián)系數(shù)據(jù)(文本的轉(zhuǎn)發(fā)關(guān)系、轉(zhuǎn)發(fā)時間、用戶粉絲的個人id等)。
④ 熱度數(shù)據(jù)(發(fā)帖時間、發(fā)帖數(shù)、評論數(shù)、微博的轉(zhuǎn)發(fā)數(shù)等)。
圖1 技術(shù)路線
(2) 對抓取的輿情信息進行分詞。分詞按文本內(nèi)容分為中文分詞和英文分詞。英文分詞一般通過空格分開,易于實現(xiàn)。中文分詞情況下詞與詞之間沒有明顯分隔表示,業(yè)界使用的主要方法有基于詞表的分詞方法、基于n元語法的分詞方法、N-最短路徑法等。本文采取了基于概率語言模型分詞的jieba分詞器中的全分詞模式進行分詞。jieba自帶了一個叫做dict.txt的詞典, 里面有2萬多條詞, 包含了詞條出現(xiàn)的次數(shù)和詞性。在分詞過程中,基于Trie樹結(jié)構(gòu)實現(xiàn)高效的詞圖掃描,生成句子中漢字所有可能成詞情況所構(gòu)成的有向無環(huán)圖(DAG),然后采用動態(tài)規(guī)劃查找最大概率路徑, 找出基于詞頻的最大切分組合。對于未登錄詞,采用基于漢字成詞能力的HMM模型進行識別并重新計算最佳切分路徑,輸出分詞結(jié)果。
獲取的數(shù)據(jù)當中存在多種類型的文本,包括客觀新聞、網(wǎng)友的評論、參與者的發(fā)言等,不同文本反映不同的信息,所以需將其分類。采用多層次二分類方法,先將文本分成2類,再將分好的文本繼續(xù)細化分類直至達到需求。
(1)首先對部分短文本進行手動標注來區(qū)分新聞報道、官方通告、網(wǎng)友發(fā)表的觀點等。
(2)建立詞向量,將文本進行數(shù)學(xué)化表達,作為訓(xùn)練模型的輸入。這里使用了搜狐的互聯(lián)網(wǎng)語料庫進行jieba分詞后,利用Word2Vec中的CBOW訓(xùn)練詞嵌入(word embedding),將自然語言中的字詞轉(zhuǎn)為計算機可以理解的稠密向量,核心思路即“用詞附近的詞來表示該詞”。在Word2Vec出現(xiàn)之前,自然語言處理經(jīng)常把字詞轉(zhuǎn)為離散的單獨的符號,也就是One-Hot Encoder Word,每個詞用長向量表示,向量維度是詞表大小。向量中只有一個值為1,其余都為0。這種方法存在以下問題。一方面,單詞編碼是隨機的,向量之間相互獨立,看不出各個單詞之間可能存在的關(guān)聯(lián)關(guān)系。其次,向量維度的大小取決于語料庫中字詞的多少。如果將所有單詞對應(yīng)的向量合為一個矩陣的話,矩陣過于稀疏,會造成維度災(zāi)難(一個大的語料庫維度超過幾十萬)。而Word2Vec將一個詞所在的上下文中的詞作為輸入,而那個詞本身作為輸出。通過對一個大的語料庫訓(xùn)練,得到一個從輸入層到隱含層的權(quán)重模型。訓(xùn)練完成后,就得到了每個詞到隱含層的每個維度的權(quán)重,就是每個詞的向量表示(維度一般在50~100)。對于句子“My major is computer science.”“my”與其它單詞之間距離見表1。其可視化表示如圖2所示。
表1 詞向量示意
(3)最后使用機器學(xué)習(xí)的有監(jiān)督學(xué)習(xí)方法。有監(jiān)督學(xué)習(xí)方法在訓(xùn)練過程中不僅輸入訓(xùn)練數(shù)據(jù),還輸入分類的結(jié)果(數(shù)據(jù)具有的標簽),模型經(jīng)過訓(xùn)練后再輸入未知特性的新數(shù)據(jù)也能計算出該數(shù)據(jù)導(dǎo)致各種結(jié)果的概率,輸出一個最接近正確的結(jié)果。由于模型在訓(xùn)練的過程中不僅訓(xùn)練數(shù)據(jù),而且訓(xùn)練結(jié)果(標簽),因此訓(xùn)練的效果通常不錯。將通過標注好的文本分詞獲得詞列表并以此作為輸入,采用集成方法隨機森林進行訓(xùn)練。隨機森林是Bagging方法的變體,Bagging方法是對輸入集進行有放回的隨機采樣獲得m個樣本集利用不同的基學(xué)習(xí)器訓(xùn)練,然后將結(jié)果用投票法等策略組合。例如,若3個學(xué)習(xí)器結(jié)果為1 1 0,那么最終結(jié)果就置為1。對于質(zhì)量高的文本,分類準確率在85%以上。最后將數(shù)據(jù)輸入訓(xùn)練好的模型中,獲得全部文本的分類數(shù)據(jù)。分類流程如圖3所示。
圖2 詞向量可視化表示
圖3 文本分類流程
(1)半監(jiān)督學(xué)習(xí)
半監(jiān)督學(xué)習(xí)(Semi-supervised learning)發(fā)揮作用的場合是:數(shù)據(jù)集中僅有部分數(shù)據(jù)存在label。通常情況下數(shù)據(jù)集中大部分數(shù)據(jù)沒有l(wèi)abel,即整個數(shù)據(jù)集只有少許幾個label。半監(jiān)督學(xué)習(xí)算法會充分地利用unlabeled數(shù)據(jù)來捕捉整個數(shù)據(jù)集的潛在分布。其基于3大假設(shè):
① Smoothness平滑假設(shè):相似的數(shù)據(jù)具有相同的label。
② Cluster聚類假設(shè):處于同一聚類下的數(shù)據(jù)具有相同label。
③ Manifold流形假設(shè):處于同一流形結(jié)構(gòu)下的數(shù)據(jù)具有相同label。
(2) LP標簽傳播算法
標簽傳播算法(label propagation)的核心思想即相似的數(shù)據(jù)應(yīng)該具有相同的label。
構(gòu)建節(jié)點相關(guān)系數(shù)的算法為:
(3)MAD算法
吸附算法是一個用于傳感器學(xué)習(xí)的通用算法框架, 在這個框架中,學(xué)習(xí)者通常會得到一小套標記的示例和一組非常大的未標記示例。目標是標記所有未標記的示例, 并可能在標簽噪聲的假設(shè)下, 也重新標記已標記的示例。
與許多相關(guān)算法一樣, “吸附”假定學(xué)習(xí)問題是以圖形形式給出的, 其中示例或?qū)嵗硎緸楣?jié)點或頂點, 并且邊緣代碼在示例之間相似。某些節(jié)點與預(yù)先指定的標簽相關(guān)聯(lián), 該標簽在無噪聲情況下是正確的, 或者可能受到標簽噪聲的影響。其它信息可以以標簽權(quán)重的形式提供。吸附通過邊緣將標簽信息從標記的示例傳播到整個頂點集。標簽使用每個標簽的非負分數(shù)表示, 某些標簽的高分值表示高關(guān)聯(lián)。
在情感分析的技術(shù)實現(xiàn)上,先對短文本標注情感極性—消極或積極。利用Word2Vec計算詞向量,然后使用支持向量機,貝葉斯等進行訓(xùn)練,準確度在70%左右。了解集成學(xué)習(xí)后,利用了隨機森林、XGBoost模型,XGBoost是一種集成學(xué)習(xí)boost方法,模型輸出百分比,即對正負文本的相似度,本文直接采用為情感二極性。由于模型訓(xùn)練所耗費時間較多,無法進行增量的實時訓(xùn)練等問題,所以使用SnownNLP進行新的情感分析訓(xùn)練,以達到實時訓(xùn)練、實時預(yù)測的目的。
在對以微博為代表的社交網(wǎng)絡(luò)“網(wǎng)貸”相關(guān)字眼數(shù)據(jù)進行爬蟲獲取,使用Word2Vec結(jié)合隨機森林、XGBoost等方法進行文本分類、情感分析后,實現(xiàn)了一種基于社交網(wǎng)絡(luò)的輿情分析方法。實際測試表明該分析方法及結(jié)果已達到預(yù)期效果,結(jié)合數(shù)據(jù)可視化后可直觀展現(xiàn)“網(wǎng)貸”在社交網(wǎng)絡(luò)平臺實時的輿論影響。該方法適用性強,可用于社交網(wǎng)絡(luò)環(huán)境下其它多種詞條輿論傳播情況分析,直觀展現(xiàn)詞條輿論情況,便于決策者及時做出反應(yīng)和調(diào)整。