于偉杰,楊文忠,任秋如
(新疆大學信息科學與工程學院,新疆 烏魯木齊 830046)
近年來中國互聯網高速發展,APP和網站數量都有了前所未有的提升,智能手機的快速普及使得普通人都可以通過手機在網絡上表達自己的思想,讓生產內容從原先的陽春白雪走向了下里巴人,每個人都是內容的生產者,因此生產了大量數據,信息爆炸的時代就此來臨.但是從海量的爆炸信息中挖掘數據之間隱藏的關系,是許多科研人員密切關心的問題,探索過程中誕生了許多知名技術,用戶畫像便是其中的佼佼者.交互設計之父曾經說過:“用戶畫像是真實用戶的虛擬表示,是基于用戶的真實數據挖掘和構建的目標用戶模型.”[1]根據目標用戶畫像,企業能夠精準營銷、精準投放;設計師能夠設計和優化產品;分析師能夠豐富和充實行業報告.[2-3]
構建用戶畫像模型的方法中,目前主流的方法是給用戶貼標簽,用具體的屬性詞來描述用戶屬性和興趣愛好,這時的關鍵詞可以采用多種方式來生成,可以是機器學習模型、神經網絡模型和規則分析.例如,Cha等[4]在計算影響力的方式上進行了改進,改進的具體內容是將更多的內容加入到影響力因素上,比如推特用戶的用戶關注數、被轉發和點贊的次數,從而分析用戶的行為,得出用戶的屬性和興趣愛好.經過對比實驗證明,與單純使用行為特征的單一特征算法相比,引入更多特征Cha的實驗結果更好.但是由于用戶行為的復雜性和多樣性,再加上推特中含有大量的雜質信息,因此模型效果還有改進的空間.費鵬等[5]在之前研究的基礎上,融合多視角,提出了新的建??蚣?,該框架使用兩種方式對用戶進行建模,從而構建了多源特征,在將數據維度提高后,為了避免“維度詛咒”問題,引入了雙層Xgboost(Extremegradientboosting)的多視角模型,從而較好地解決了問題.由于數據的不連貫性,盡管該方法從多角度構建了多元特征,但是沒有使用數據中的深層語義信息.神經網絡的大熱,使得NLP相關人員也開始使用神經網絡提取數據中的深層語義信息.Collobert等[6-7]是最早開始研究將CNN引入到NLP任務中的,經過測試,實驗結果有了明顯提升,許多學者接連在文檔分類任務中使用CNN[8-10].例如李恒超等[11]就在建模過程中引入了CNN的算法,從而提出新的框架.框架分為二級:在第一級框架中,引入淺層神經網絡模型與機器學習算法對文本數據進行處理;在第二級框架中,對于多個Xgboost模型引入Stacking進行融合.實驗結果數據顯示,該框架的實驗結果相較對比實驗有明顯地提升,但是缺點也很明顯,就是文章使用的是淺層神經網絡,無法獲取文本的深層語義信息,對于具有強語義關聯的文本實驗結果較差.對此,陳巧紅等[12]在分析了缺點之后,提出了一種基于集成學習框架的用戶畫像方法.該方法開始探索對不同長度的用戶文本采用機器學習和深度學習的算法,取得了良好的效果;但是語義編碼模塊使用的是基礎的BERT方法,文字按照字劃分,失去中文獨特的詞語特性.
本文對文獻[12]提出的集成學習框架進行改善和優化,提出了一種基于全詞BERT的集成用戶畫像方法,提升其泛化和分類能力.對不同特征采用不同分類器進行處理,用改進的集成算法決定集成的權重參數,取得最終的輸出結果.
本文提出了一種基于全詞BERT的集成用戶畫像方法來給用戶“貼標簽”.如圖1所示,將用戶的不同形式文本輸入模型后,多個分類器會對文本進行分類,使用改進后的集成算法確定各分類器的權重,最后投票確定結果.具體流程如下:

圖1 集成算法結構圖
步驟1 輸入不同形式的文本數據集并進行預處理.
步驟2 對預處理后的數據集,一方面采用TF-IDF提取用戶用詞習慣特征,將特征分別輸入LR模型、SVM模型;另一方面,使用全詞BERT模型挖掘文本的深層語義信息.
步驟3 根據各個分類器的預測結果輸入到改進的集成學習加權投票分類器中,得出最終分類結果.
TFIDF[13]作為文本特征提取方法,核心是評估數據集中每個字詞的重要性.該方法認為字詞的重要性與文檔中出現的次數和語料庫中出現的頻率有關,具體來說,跟前者成正比,而跟后者成反比.[14]
TFIDF=TF×IDF#.
(1)
TF是單詞termfrequency的縮寫,單詞的漢語解釋是詞頻,具體來說就是詞匯在文檔出現的次數,IDF是單詞inversedocumentfrequency的縮寫,漢語解釋的意思是逆文檔頻率,主要作用是進行文檔的區分,計算流程是統計具有詞匯t的文檔數量,數量與IDF的值成反比,而IDF的值代表了辨識性和類別區分能力.
TFIDF的計算公式為
(2)
其中:TF(w,d)代表詞匯w在文檔d中出現的次數,N代表數據集中的文檔個數,DF(W)代表整個數據集中包含詞匯w的文檔個數.
本文集成學習模塊使用了兩種分類算法,兩種分類算法的原理及缺點見表1.

表1 兩種分類算法對比
Transformer[15]是在encoder-decoder框架上做的改進,結構分解后主要包括編碼和解碼兩大部分.編碼部分中編碼器的數量可以根據具體實驗中數據集的大小調整,但是結構必須相同,且不共享參數.解碼部分的解碼器數量也是可以調整的,但必須與編碼器的數量相等.兩者結構比較相似,相同的部分是都有自注意力層和前饋神經網絡層,但是不同之處也有,比如相較于編碼器,解碼器多了一層編碼-解碼注意力層,工作流程是先對輸入序列進行處理,生成向量列表,向量列表中包含位置信息,然后用自注意力層對向量進行處理,處理后每個向量中的每個句子的每個字都包含該句的全部信息,然后向量就可以傳給前饋神經網絡層,一個編碼器的流程就完成了,經過全部編碼器處理完畢后,會將其輸出到解碼器中,解碼階段重復進行處理,直到到達一個特殊的終止符號完成.由于在編碼和解碼的過程中大量使用了self-attention,能夠實現快速并行,相較于原先使用RNN作為特征提取器,訓練速度有了較大提升,并且可以擴展神經網絡的深度,從而充分利用DNN模型的特性,提升模型訓練的準確率.編碼器中的TransformerBlock如圖2所示.

圖2 Transformer編碼單元結構圖
由于中文的一詞多義性,因此目前有大量的多義詞在日常和書寫的中文數據語料中被廣泛使用.如“我今天把黑色墨水用完了,需要買一瓶新的”與“他肚子里有很多墨水,出版了許多優秀為散文和詩詞”.在這兩個句子中,“墨水”一詞雖然都是同一個,但是深層語義卻不同,而且傳統的詞向量方法是無法表示詞的深層語義,也無法表示詞的多義性,因此本文改用的全詞BERT[16]模型,從而能夠較好地解決詞的多義性問題.
BERT模型訓練過程如圖3所示,圖3中Ei是指的單個字或詞,Trm代表上述的Transformer編碼器,Ti指的是最終計算得出的隱藏層.根據之前Transformer的原理簡述,Transformer可以得到輸入的句子序列中的每一個字,并且由于采用了不同的訓練方式,即雙向,因此在訓練出的向量中,任意一個字向量都包含了該句的信息.

圖3 BERT訓練過程圖
不過由于原先發布的BERT-base(Chinese)是由谷歌進行訓練的,因此沒有考慮中文特有的需要,中文不是以詞為粒度,而是以字為粒度進行切分,因此對中文的任務效果還能有進一步的提升.因此在2019年5月31日,針對原先訓練存在的不足,谷歌對BERT進行了改進,發布了BERT的升級版本技術whole word masking(wwm),該技術對訓練樣本的生成方式進行了改動,將字為粒度改成以詞為粒度.在采用wwm技術之后,經實驗證明后,全詞mask比字粒度的BERT在中文任務上有更好的表現[17].
在本文使用的預處理模型是哈爾濱工業大學公布的基于全詞遮罩(whole word masking)技術的中文與訓練模型BERT-wwm-ext[18].
為了發揮使用關鍵詞構建特征的兩種分類方法的和提取語義深層信息的全詞BERT的優勢并進一步提高分類的準確性,通過對分類算法的對比,在得到算法的分類結果后,采用多分類器的集合進行多數表決.投票主要分為硬投票和軟投票,硬投票就是最簡單的少數服從多數在投票算法中的應用.而軟投票,也被稱為加權投票算法,通過輸入權重為不同的分類器設置不同的權重,從而區分不同分類器的重要性.而權重的大小基本取決于每個基分類器的正確率,得到每個類的加權平均值之后,選擇值最大作為分類結果[19].
偽代碼如下:
輸入:訓練集D={(x1,y1),(x2,y2),…,(xm,ym)};

基學習器L1,L2,…,L4;
過程:Step2:for 1,2,…,4 do,
Step3:ht=Lt(x),
Step:end for;
Step6:H(x)=C;

梯度上升算法是一種優化算法,與梯度下降算法相反,該算法優化的目的是求目標最大值,不過與梯度下降的許多流程是相似的,比如說優化的路線仍然是函數的梯度方向,只不過是把更新中的減號變成了加號.軟投票作為一種傳統的加權投票算法,雖然相較硬投票的少數服從多數方法考慮了每個分類器的權重,但是具體權重的計算方法仍有改善空間.因此在本文中,對權重選擇方法進行了改進,使用各基分類器的5次交叉驗證的正確率(ACC)結果組成訓練集,為梯度上升算法的輸入,將步長設置為0.001,可以快速得到各基分類器加權投票的權重.

θi的更新公式為
其中α為步長.
梯度上升的偽代碼:
輸入:多分類器輸出結果集D={(x1,y1),(x2,y2),…,(xm,ym)};
過程:step1:初始化所有θ=1,α=0.001,
Step2:for 1,2,…,mdo,
Step6:end for;
輸出:θi.
本文實驗(1)采用的是第七屆CCF大數據與計算智能大賽中有關搜狗用戶畫像比賽的數據,數據主體部分是用戶查詢數據;實驗(2)采用的是2016smp_cup微博用戶畫像大賽提供的數據,數據主體部分是微博內容.由于這兩個數據集的數據較為不平衡,使用爬蟲數據進行補充,同時采用人工對數據進行了干預,讓每個種類的數據的數量為10 000.為了實驗結果具有對比性,采用相同的分類標簽,即用戶的性別、年齡.實驗數據舉例見表2.

表2 實驗數據舉例
在本文的實驗數據中采用性別、年齡這兩個標簽來進行結果驗證,性別對應的分類是二分類,而年齡對應的分類是六分類.其中對年齡標簽采取數據分享技術[20],含義是將年齡分段,以段作為年齡分類的類別.最后用準確率對結果好壞進行判斷,準確率來源于混淆矩陣,見表3.

表3 分類結果混淆矩陣
準確率表示預測該類別正確的數量占總樣本數目的比例,公式為
(4)
為了驗證所提出方法的有效性,本文采用消融實驗進行驗證,即分別使用了邏輯回歸、支持向量機、全詞BERT模型和本文方法進行對比實驗.
在實驗過程中,為了選擇最佳參數,使用控制變量法進行參數選擇,控制變量法的做法是在選擇最優參數的過程中,控制其他所有參數保持不變.傳統機器學習方法采取5次交叉驗證來保持結果的準確性.具體參數選擇見表4.

表4 兩上實驗最佳參數
通過修改后的集成算法對算法LR、SVM和全詞BERT集成,權重參數分別為0.184,0.070和0.746.
模型參數取不同的值會得到不同的實驗結果,在實驗的過程中,均選取最佳參數進行實驗,實驗(1)結果如表5所示,實驗(2)結果如表6所示.

表5 實驗(1)結果 %

表6 實驗(2)結果 %
表5顯示的是在以用戶查詢詞為主要文本的數據集上,本文方法和其他分類方法的比較.分析實驗結果,可以得出當數據集的主要內容是用戶查詢詞時,本文方法與其他分類方法的準確率差距不是很大,對此重新分析數據集,推測可能是數據集中文本的內容是沒有關聯的查詢詞,查詢詞是沒有規律的順序,并且詞語前后語義關聯性很小,因此神經網絡挖掘與分析文本內部的深層語義信息的優點無法發揮,不僅不會獲取到更多有用的語義信息,甚至會因為其自身深層的網絡結構讓過擬合現象更容易發生.
表6顯示了在以微博用戶文本數據為主要文本的數據集上本文方法和其他分類方法的比較.從實驗結果的對比中可以得出,當數據集的主要內容是具有上下文聯系和一定語義邏輯的文本時,全詞BERT模型的效果更好,對數據分析之后,推測是由于數據集中的微博文本相對于用戶查詢詞的數據集,微博文本作為連續的語義文本,語句之間有明顯的連貫性并且詞語的多義性開始影響對句子的理解,而本文其他機器學習分類方法使用的用戶用詞特征,明顯對時序性和深層語義的學習有限.但是在引入全詞BERT模型后,實驗的分類準確率確實有了較大提升,說明全詞BERT模型引入是有效果的,全詞BERT模型確實能夠充分挖掘文本的時序性和深層語義關聯性.
本文從查詢詞和微博文本兩個數據集出發,經實驗發現通過改進的集成學習投票機制能夠結合不同算法的優點,提高了泛用性,能夠適應不同形式的文本.表5和6的數據證明了本文方法確實效果好于單一的方法.
綜上可知,本文提出的基于全詞BERT的集成用戶畫像方法較好地解決了本文提出的問題,且效果較好.
將論文公開代碼中的數據集統一換成本文實驗的數據集,參數選擇默認參數,各種方法對比結果見表7和8.結果顯示,本文方法在準確率上有較大提升.綜上所述,本文方法在用戶畫像的分類上優于文獻[11-12]的方法.表7為使用實驗(1)的數據結果,表8為使用實驗(2)的數據結果.

表7 在用戶查詢詞的對比實驗 %

表8 在微博文本的對比實驗 %
本文提出了一個基于全詞BERT的集成用戶畫像方法.該方法采用不同的分類器處理不同的特征,使用梯度上升決定軟投票的權重,從而提升了泛化力和準確率.
本文雖然使用多用特征和分類器對用戶畫像建模,但是現在的主流數據已經是多模態數據,特別是短視頻的流行,對用戶畫像建模產生了較大沖擊,因此模型下一步的改進就是引入多模態數據,讓用戶畫像的屬性更加全面和準確.