孫 毅,裘杭萍,王沁雪
(1.中國人民解放軍陸軍工程大學 指揮控制工程學院,江蘇 南京 210000;2.山東省萊蕪市實驗中學,山東 萊蕪 271100)
隨著信息技術和社交媒體的快速發展,世界已經進入了網絡化的大數據時代。面對呈指數級增長的數據,人們需要更加有效的方法對所擁有的數據信息進行快速準確的分類,便捷地提取出實時、精煉、對商業分析有價值的知識,并且做到對網絡和信息的安全管理與控制[1],因此網絡用戶標簽(Network User Hashtag)應運而生。
網絡用戶標簽是用戶網絡資源的描述,一般以詞組、短語或短句子的形式出現。其中被描述的網絡資源對象大致可分為兩種:一是多媒體資源,如文本、視頻、音頻等;二是實體資源,如人物、網絡用戶或網絡購物商品等。通過用戶標簽,可以迅速掌握網絡資源的情況,更方便地檢索出用戶需要的內容。
對網絡用戶標簽的研究一直是近幾年來國內外信息檢索領域的熱點,將網絡用戶標簽化來構建用戶畫像以實現對用戶進行內容推薦及個性化服務就是其中一個重要的課題。隨著用戶自描述標簽的普及,越來越多的學者開始對其進行研究。劉列等人基于約263萬個微博用戶的真實數據,對用戶標簽的分布進行了研究和分析,發現了基于關注關系的標簽預測算法[1];池雪花等人對不同學科領域的用戶標簽標注行為差異進行了研究[2];劉蘇祺提出一種基于社交網絡中用戶自描述標簽的層次分類體系構建方法[3];GONG Y等人提出了用戶標簽和微博文章主題之間的轉換方法來對用戶進行推薦[4];劉慧婷等人通過衡量用戶好友興趣相似度和提取用戶博文主題來構建用戶標簽矩陣對用戶進行標簽的推薦[5]。
目前關于網絡用戶自定義標簽的研究主要集中在基于用戶標簽的抽取和推薦方面,而對用戶自描述標簽本身缺乏內在關系的分析和知識層的挖掘。因此,針對在網絡用戶自定義標簽層次分類過程中低頻標簽利用率低的問題,本文嘗試利用低頻標簽擴展理解的方法,構建網絡用戶自描述標簽的層次分類體系。
近幾年的研究中,多種詞向量方法應用廣泛,目前最常用的模型為Word2Vec模型[7]和Glove模型[8],二者都是基于詞共現假設的無監督學習方法,可以很好地表征詞與詞之間的距離關系。詞向量的出現帶動了句向量和其他粒度層面的文本向量模型的出現,并很好地運用到了文本相似度計算、文本分類和文本情感分類等領域。目前主要的句向量生成方法有4類:簡單向量平均、無監督學習方法、有監督學習方法以及多任務學習方案[9-11]。
目前,基于平滑反頻率的句向量生成方法在文本相似度計算和文本分類任務上的表現已經超過TF-IDF權值平均和有監督的RNN、LSTM、skip-thought方法[12]。平滑反頻率句向量通過權重將詞向量加權為句向量,權重計算公式如下:
(1)
其中a為常量參數,可根據任務進行調節;p(w)為單詞w經過大量領域文本統計后的頻率,即單詞w的權重與其頻率呈反比。由于用戶自描述標簽的短文本特性,本文基于平滑反頻率句向量生成方法,設計了用戶標簽向量的生成方法,生成的標簽的向量用于之后的標簽體系構建。
本節標簽向量的生成框架以及其中包含的組件如圖1所示。首先通過詞頻統計將標簽組集合分為高頻標簽和低頻標簽。高頻標簽直接使用詞向量集中的向量,并將該標簽擴充到分詞器的詞庫中。同時將低頻標簽通過設定的規則轉換為高頻標簽組成的詞組,然后通過向量合成的方法生成標簽向量。

圖1 標簽向量的生成框架
通過爬取新浪微博用戶的信息數據,得到13萬條用戶信息,過濾掉沒有設置用戶標簽的用戶,得到86 517個標簽組。對標簽集進行詞頻統計,得到如圖2和圖3所示的統計結果。可以看出,出現頻率在100次以上的標簽僅占總標簽數量的0.306%,而僅出現1次的標簽占67.700%。由此可見,對于大多數網絡用戶自定義標簽來說,都是“罕見”的,充分反映了用戶自定義標簽的自由性和語義上獨特性。

圖2 標簽頻率分布

圖3 高頻標簽頻率詞云
本文運用Word2Vec模型對維基百科[12]中的30萬篇中文語料進行訓練得到包含104萬個中文詞語的詞向量集合,每個詞向量的維度為200維。將該詞向量集定義為:
WS={W1,W2,…Wi,…Wk}
(2)
式中Wi表示詞集中第i個詞的詞向量。
WVi=|wi,1,…,wi,j,…,wi,200|
(3)
本文將標簽劃分為高頻標簽和低頻標簽。其中高頻標簽表示在用戶標簽中出現頻率較高的,且和由語料庫的詞向量集中的詞所對應的,即語義較為明確的標簽。低頻標簽又分為組合標簽和生僻標簽,組合標簽是由高頻標簽組合而來的標簽,如“游戲動漫”,這一標簽由“游戲”和“動漫”兩個高頻標簽組合而來。生僻標簽指在詞向量集中沒有對應詞的標簽,即語義上難以理解,一般來說多為網絡俚語,或者針對性較強、受眾較少的詞語,這類詞在語料庫極少出現甚至不存在,因此得不到很好的訓練。
本文給定3類標簽的劃分依據如下:
依據一:標簽tagi在詞集中存在對應的詞Wi的為高頻標簽。高頻標簽集定義為TS_HF={tag1,…,tagk}。
依據二:標簽tagi通過分詞器進行拆分后的詞中存在高頻標簽的為組合標簽。組合標簽定義為TS_CB={tagk+1,…,tagl}。
依據三:標簽在詞集中沒有對應的詞且拆分的詞中不存在高頻標簽的為生僻標簽。生僻標簽定義為TS_UC={tagl+1,…,tagm}。
本文的中文分詞器采用國內開源的“結巴”中文分詞工具對組合詞進行分詞[11],分詞后詞語都帶有詞性標記。對組合詞進行分詞處理后去除非高頻詞,再去除停用詞,得到由高頻詞組成的標簽組group(tagi)={tag1,…,tagp}。
將低頻標簽詞tagi提交到搜索引擎中,對搜索結果的文本內容進行關鍵詞抽取,抽取算法采用TF-IDF算法。剔除抽取返回的關鍵詞中不存在于詞集WS中的詞和其本身,取前5個作為該詞的擴展詞組extended(tagi)={tag1,…,tag5}。
將組合標簽的組合詞組和生僻標簽的擴展詞組組合成詞組向量,用于詞組標簽和高頻標簽之間距離的計算和標簽體系的生成。由于用戶自定義標簽相對較短,絕大數情況下一個標簽中的子標簽僅會出現一次,因此很難用單個標簽中各個子標簽的頻率來衡量其對父標簽的重要程度。本文基于平滑反頻率句向量的權重計算思想定義標簽向量組合規則如下:
(1)組合標簽向量TV_CB
(4)
(5)
(2)生僻標簽向量TV_UC
(6)
(7)
其中f(tagi)表示標簽在整個數據集中出現的頻率;f_e是通過TF-IDF算法得到的關鍵詞的權重,此處對權重進行歸一化處理。
參數a根據論文[12]的經驗設為10-3。
標簽體系的建立過程包括標簽之間上下位關系的確定和標簽樹的最終生成。
一般意義上詞與詞的上下位關系是指詞與詞之間在語義上的從屬關系[13]。即詞A和詞B在語義上滿足“B是一種/類/個A”,則稱A與B之間有上下位關系,其中A是B的上位觀念(hypernym),B是A的下位概念(hyponym),B是A的類別,A是B的實例,“是一種/類/個”等表述方式成為上下位關系的模式。上下位關系抽取是關系抽取的一種,單獨抽取上下位關系是一個二分類問題,判斷上下位關系關鍵在于特征的選取。關系抽取的方法主要出發點有2個:一是基于詞語間的共現性,另一個是基于詞語間的模式。
由于詞語間的關系較為復雜,兩個詞共同出現的原因可能有很多,單純基于共現關系和距離去判斷詞語的上下位關系效果并不好。因此,本文通過提取關系模式的方法來進行上下位關系分類。首先,人工選取數量相同的具有上下位關系的(正例)和不具有上下位關系的(反例)標簽對,將這些標簽對作為關鍵詞提交搜索引擎來獲得包含標簽對的語料。然后通過均方差選擇的方法提取上下位關系的關鍵模式。通過將帶有上下位關系標記和特征向量的標簽對交由分類器訓練出分類模型。
2.1.1特征向量選取
對于任意標簽對TPij={ti,tj},本文選取的特征向量TP_Feature包含3類特征:標簽對向量距離、標簽對出現的前后位置關系、標簽對模式出現頻率。TP_Feature=[TP_Dist, TP_Adj, TP_Sep, TP_Mod]
(8)
(1)標簽對距離TP_Dis(ti,tj)通過計算標簽向量間的余弦距離得到,
TP_Dist(ti,tj)=cos(ti,tj)
(9)
(2)標簽對ti和tj出現的前后位置關系包括2種情況:一是兩者相連組成詞語titj或tjti的情況;二是兩者之間存在某類模式組成句式ti…tj或tj…ti的情況。分別定義兩種情況下的特征變量
(10)
(11)
其中分子均表示ti在tj前的頻率,分母表示tj在ti前的情況,比值用反正切函數歸一化。
(6)標簽對模式TP_Mod(ti,tj)是由上下位關系中關鍵模式出現的頻率組成的向量,
TP_Mod(ti,tj)={Mod1,…,Modk}
(12)
2.1.2基于均方差選擇的模式排序方法
在模式篩選的過程中存在大量的噪聲,通過方差選擇的方法對這些模式進行排序以提高分類的效果,其方法如下。
對于模式Modi,其出現在正例和反例中的概率分別為P(Modi|Pos)和P(Modi|Neg),則其模式概率均方差為:
(13)
其中X1=P(Modi|Pos),X2=P(Modi|Neg)。
根據均方差的大小對模式進行排序,方差越大的模式對于上下位分類的貢獻越大,本文選取前5種模式作為特征向量中的關鍵模式。
標簽樹的生成過程中,將標簽頻率作為標簽節點的權重,通過自頂向下、由重到輕的方法將節點插入到樹中。
算法1標簽樹構建
輸入:T={tag1,…,tagk},F={f(tag1),…,f(tagk)},TV={tv1,…, tvk},Classifier
輸出:Tag_Tree
1:funcion TRAVEL(node,tag)
2: if Classifier(node,tag)=Truethen
3: Flag1←False
4: for child in node.children
5: if Classifier(child,tag)= True then
6: Flag1←True
7: break
8: end if
9: if Classifier(tag,child)= True then
10: add child to tag.children
11: del child from node.children
12: return
13: end if
14: if Flag1=True then travel(child,tag)
15: else add tag to node.children
16: end if
17: else
18: Flag2←False
19: for child in node.children
20: if Classifier(child,tag)= True then
21: Flag2←True
22: travel(child,tag)
23: break
24: end if
25: end for
26: if Flag2=false then
27: node←the nearest node in node.children
28: travle(node,tag)
29: end if
30: end if
31:end function
32:
33:function BUILDTREE(T,F,TV,Classifier)
34: Tag_Tree←?;
35: sortTasFand reverse=True;
//將T按照頻率逆序排序
36: whileT≠?
37: tag←T.pop();
38: node←Tag_Tree.root;
39: TRAVEL(node,tag)
40: end while
41:end function
算法1中T表示標簽集,F表示標簽頻率集,Classifier(tag1,tag2)為標簽上下位關系分類器,當tag1為tag2的上位標簽時返回True,否則返回False,TV表示標簽向量集,Tag_Tree表示標簽樹。
TRAVEL(node,tag)為標簽樹的遍歷和節點插入的遞歸函數,BUILDTREE(T,F,TV,Classifier)為構造樹的主函數。
該算法首先將標簽集按照標簽頻率從大到小排序,然后每次取出頻率最大的標簽tag,從標簽樹的根節點Tag_Tree.root開始遍歷(第34~40行),在遍歷過程中存在4種情況,情況一如圖2(a)所示(圖中箭頭由下位標簽指向上位標簽),在標簽“喜劇”的插入過程中,標簽“藝術”為標簽“喜劇”的上位標簽,且“藝術”的子節點中無“喜劇”的上位標簽或下位標簽,將“喜劇”加入到“藝術”的子節點中(第15行);情況二如圖2(b)所示,在標簽“電影”的插入過程中,“藝術”是電影的上位標簽,而“喜劇”是“電影”的下位標簽,將“電影”插入到“藝術”和“喜劇”之間(第9~13行);情況三如圖2(c)所示,在節標簽“搖滾”的插入過程中,“藝術”是“搖滾”的上位標簽,同時“藝術”的子標簽中的“音樂”也同樣是“搖滾”的上位標簽,算法將遞歸地遍歷節點“音樂”(第3~7,14行);由于標簽上下位傳遞關系不夠強,并且分類器在上下位關系識別時可能會出現錯誤,將無法找節點到上下位關系的情況歸為情況四,此時將會繼續遍歷子節點中與該節點距離最近的一個(第26~28行)。

圖4 標簽樹節點插入過程
本文的實驗數據抽取自網易微博[13],共有標簽67 074 個,由于標簽對的個數是標簽個數的平方,有數十億個,但在這些標簽對中,是上下位關系的標簽只占極少一部分,存在嚴重的類別不平衡問題,因此本文只選出了出現頻率較高的200個標簽,組成了700個標簽對,通過人工標準的方法得到正例165個,反例535個,運用所選標簽對進行模式提取。
3.2.1上下位關系特征選擇
通過模式提取得到關鍵模式Key_Model={“的”,“是”,“是一”,“稱為”,“是什么”}。
標簽對的特征向量為TP_Feature = [TP_Dist,TP_Adj,TP_Sep,Mod1,Mod2,Mod3,Mod4,Mod5],共8項,例如TP_Feature(繪畫,藝術) = [0.166,0.999,0.999, 0.169,0.128,0.032,0.010,0.013],TP_Feature(聽歌,看書) = [0.204,0.787,0.729,0.010,0.039,0,0,0]。
3.2.2實驗設置
本文分別采用支持向量機(SVM)、決策樹、隨機森林(Random Forest)、極端隨機樹(Extremely Randomized Trees)和BP神經網絡5種方法對標簽進行上下位關系的分類。除了BP神經網絡采用TensorFlow框架,其余算法均采用Python中的sklearn開發包。
極端隨機樹、隨機森林和決策樹均采用回歸模型。極端隨機樹和隨機森林參數設置大致相同,最大迭代次數為10,特征的評價標準為均方差MSE,劃分時最大特征數為8,不限制最大決策深度,內部節點再劃分最小樣本數 2,葉節點最小樣本數為1,判斷閾值設為0.6。決策樹的特征的評價標準為均方差MSE,節點分類策略為最好分類,內部節點再劃分最小樣本數 2,葉節點最小樣本數為1,判斷閾值設為0.6。
支持向量機采用高斯核函數,核函數系數為6,SVC的懲罰值為1,停止訓練誤差為10-3,無最大迭代次數限制,決策函數為OVR。
BP神經網絡采用全連接的四層結構,2個隱藏層節點均為20個,采用雙曲正切函數作為激活函數,學習率為0.1,損失函數為均方誤差,輸出閾值為0.7。
3.2.3結果分析
實驗通過循環Hold-Out檢驗的方法,每次將數據集隨機分為訓練集和測試集兩部分,分別為70%和30%,共循環100次,統計5種分類器的精確度ACU、查準率Precision、查全率Recall和F1值的平均值,結果如表1所示。其中精確度如圖5所示,其他三項指標如圖6所示。

表1 標簽上下位關系檢測算法效果

圖5 標簽上下位關系檢測算法精確度

圖6 標簽上下位關系檢測算法3項指標
圖5和圖6中ET、RF、DT、SVM、BP分別表示極端隨機樹、隨機森林、決策樹、支持向量機、BP神經網絡。
從結果不難看出,5種分類器的分類效果均令人滿意,其中極端隨機樹和隨機森林在4項指標中都有較好的表現,上下位關系檢測的查準率較文獻[3]中的算法提高了近20%,說明本文所采用的特征提取方法較考慮標簽共現的方法有明顯的優勢。同時,BP神經網絡在5種方法中效果最差,且在實驗過程中,結果隨參數調整波動較大,說明BP神經網絡在處理小規模確定特征的分類問題上并不占優勢。
本文利用隨機森林模型中8項特征對預測函數的貢獻率來考察8項特征的重要程度,得到如表2所示的特征貢獻率。可以看出模式3(“是一”)和模式5(“是什么”)的貢獻率最高,分別為69.49%和10.09%,其他均在10%以下。同時可以看到,標簽向量距離對決策函數貢獻并不大,再次說明基于詞語共現的方法來判斷上下位關系效果并不會太好。由于實驗受限于數據規模和特征選取的個數,特征項的貢獻率只能一定程度上反映各特征的重要程度。

表2 特征貢獻率
本文提出了一種網絡用戶自描述標簽層次體系構建的方法。其中著重描述了標簽向量的生成方法和標簽層次體系的構建方法,主要意義有以下兩個方面:
(1)通過將用戶自描述標簽向量化,可以將網絡用戶抽象為由多個標簽向量構成的標簽矩陣,可以形象地將標簽向量作為“點”,將網絡用戶定義為由標簽組成的“點集”,進而對于用戶的相似度計算或聚類等分析過程變為對“點集”的操作,可以高效地計算用戶間距離,實現標簽推薦等任務。
(2)通過標簽層次體系的構建,在用戶標簽推薦過程中,可以根據標簽體系進行推薦,例如對于擁有標簽“足球”的用戶,可以優先向該用戶推薦與“足球”同一分支下的“籃球”等兄弟標簽,可以提高推薦的效率和準確性。