王國橋,牛少彰
(北京郵電大學計算機學院,北京 100876)
以微商為首的社交電商,在包括但不限于人、貨、場三個維度上,都有著去中心化的發展趨勢。因此,其呈現出人群碎片化、小品牌空間擴大化、產品類目多元化等特點。在這樣的前提下,對于社交電商平臺,應以精準流量智能推廣為目標導向,對微商進行分析。比如通過建立AI用戶畫像模型的方式,提取微商用戶特征,并對其進行文本特征量化,數字特征量化,類型特征量化等。其中,通過文本特征量化進行微商分類是最重要的環節之一。
本文所述的大數據平臺擁有多年的微商經營數據積累,包括微商交易數據、聊天朋友圈文本信息、通訊錄信息等。這些數據已經過脫敏、清洗、整合處理,符合大數據分析的基本條件。本文從大數據平臺隨機挑選了5,000家微商進行微商分類實驗,分類目標為微商的主要經營分類,比如母嬰用品、數碼3C、食品、美妝個護等。對原始數據的挑選以后,提取出其朋友圈文本信息進行分析,每家微商平均包含50條朋友圈數據。分析微商朋友圈文本數據構成,發現除常見于電商平臺的銷售文案外,還包含較多口語化的宣傳用語,吸引眼球的生活小常識、日常菜譜、本地推廣內容等,有些是不同類型微商千篇一律的話術,有些則對微商分類有較大參考價值。因此,社交電商的朋友圈內容的信息具有一定多樣性和復雜性。
在做研究之前,本文嘗試使用經典特征匹配方案來進行分類。首先,根據經驗以及市場環境,將微商的大分類確定為11類,再以京東、天貓等電商平臺為基礎,為每個分類整理出100個關鍵詞,并根據對微商語言習慣的分析,剔除共性詞、參考價值較低的詞語,并將這些關鍵詞根據微商語言習慣進行篩選和擴充。這個過程是以中文分詞為基礎的,因此需要中文分詞庫工具。Jieba分詞庫是Github上的一個開源項目,提供多種編程語言的支持,可以將中文文本拆分成詞語。對每個微商的全部朋友圈信息進行匯總,并使用Jieba分詞切割、去重,將結果與篩選出的11個分類的關鍵詞分別進行匹配,匹配到關鍵詞的個數計為匹配度。根據不同分類的情況,對部分結果進行人工篩選的方式確定匹配度閾值,再對所有微商根據閾值進行分類。
經典特征匹配方案在優化與驗證后,最終準確率達到40%,對于微商分類任務有一定參考意義。然而,該方案誤判率較高,而匹配邏輯較簡單也決定了它有限的優化空間。同時,在基礎分詞建立階段,人為干預較大,無法動態擬合實際生產中遇到的變化。受限于這些基礎關鍵詞,難以涵蓋微商的方方面面,進而對微商新熱詞的動態變化不敏感。因此,需要一種準確率較高、適應性更為靈活的方法來解決微商分類問題。
自然語言處理是人工智能領域的流行方向,而文本分類作為自然語言處理的關鍵技術已得到專家和學者的廣泛關注。對于短文本分類問題,詞袋模型可以從詞向量中提取詞頻矩陣,刪除停用詞和低頻詞,而在此基礎上,TF-IDF算法可以提取文本特征,得以進行文本分類研究。在優化后,可以對文本信息進行高精度分類[1,9]。
Bag of Words,也稱為詞袋模型。它通常被用來描述一個簡單的文本數學模型,也是一種常用的文本特征提取方法[2]。在信息檢索領域中,詞袋模型僅針對無序文本,忽略其順序和語法,僅僅將其視為文本中幾個單詞的集合。在預料中將每個詞匯都視為不相關,并且每個詞匯的外觀都不依賴于其他詞匯。也就是說,無論文字在何處出現,都不會受到其他因素的影響[3]。
文本分析的主要目標之一是將文本轉換為數字形式,即特征向量化,以便可以使用機器學習算法對其進行訓練。機器學習算法需要以數字形式處理數據,在此基礎上它們可以分析數據,并提取有用的信息。詞袋模型從文檔中的所有詞中提取出特征詞,并使用這些特征項矩陣進行建模。在這個階段后,每個文檔將描述為一個詞袋。值得注意的是,該方法只記錄單詞的數量,語法和單詞順序都將忽略。
文檔的單詞矩陣,是所有單詞出現在文檔中的次數的記錄總和,可以描述為各種單詞權重的組合。通過設置一定限定條件,可以過濾出更有意義的單詞。除此之外,還可以構造出現在文檔中的所有詞語的頻率直方圖,即特征向量,這些特征向量可以用于文本分類[4]。
TF-IDF模型是一類應用廣泛的加權技術,經常被用來進行信息檢索和數據挖掘。TF(Term Frequency)是詞頻的簡稱,可理解為文本內詞匯出現的頻率,逆文本頻率的縮寫為IDF,即一個詞語普遍關鍵性的度量[5]。
該模型的核心思想:如果一個詞匯在文章中多次出現,TF值就較高,而該詞匯又很少出現在其他文章中,則其具有良好的類別判別性能,具有分類泛用性。實際上,TF-IDF是TF × IDF,即他們的乘積。其中,TF表示文檔中條目的頻率。后一個IDF的核心思想:如果包含t項的文檔越少,即n越小,IDF越大,則意味著t項具有出色的分類和區分能力。如果某種類型的文檔C中有m個文檔都包含術語t,并且該文檔中除t之外的文檔總數為k,則顯然n(包含t的所有文檔的數量)是上面的m,k的總和。當m大時,n也大,并且根據IDF公式獲得的IDF的值將小,表明術語t類別辨別能力不強。但是,客觀情況是,如果某個條目經常出現在文檔類別中,則意味著該條目可以很好地反映該類別的文本屬性。對于此類條目,應賦予較高的權重,并且可以用作此類文本的特征詞,用于與其他類型的文檔進行標識[6]。
對于文檔相似度計算問題,盡管TF-IDF模型是相當有效的,但文本分類問題中,單純使用TFIDF來判斷一個特征是否有區分度是不夠的。因為它僅僅綜合考慮了該詞在文檔中的重要程度和文檔區分度,而沒有考慮特征詞在類空間的分布。假使一個特征詞,在各類空間分布較均勻,這樣的詞匯則對分類基本無貢獻,但如果一個特征詞比較集中分布在某類中,而在其他類幾乎不出現,這樣的詞卻能夠很好代表這個類的特征,而TF-IDF無法區分這兩種情況[7,10]。
卡方統計量(Chi-square statistics,CHI)用于衡量特征詞和類別之間的相關聯程度。假設和之間符合具有一階的自由度分布,則與的CHI值定義如式(1)所示[8]。


其中,m為類別數目。
如前文所述,TF-IDF是一種文本挖掘和信息檢索領域常用的加權技術,用以評估某一字詞對于一個文件集或一個語料庫中文件之一的重要程度。字詞的重要性隨著它在文件中出現的次數成正比增加,但同時,也會隨著它在語料庫中出現頻率成反比下降。
對于微商所發布的朋友圈文本信息,每個微商所發布的信息總和可映射為TF-IDF中的一整個文件集,或者稱為一個文檔,所有微商的文本之和可映射為整個語料庫。而每個微商所出現的topn的詞語,就是該文檔代表性最強的詞,可以作為關鍵字。在此基礎上,再使用樸素貝葉斯算法公式推導,就可以生成類別標簽,進一步得到統計某一文檔屬于某一類的概率。微商分類使用TF-IDF的優勢有四點:(1)映射關系比較清晰;(2)著重關鍵詞的權重,放低非關鍵詞的權重;(3)相比于其他機器學習算法,明顯地減少模型的特征維數,避免維數災難;(4)在提升分類計算效率的同時,保證分類效果具有不錯的查準率、召回率,整個模型架構如圖1所示。
數據準備后,進入文本預處理階段,其中格式處理子階段包括刪除空格、換行符、并合并微商文本。然后對文本進行分詞處理,選用Jieba分詞庫的精簡模式對待處理文本進行分詞。停用詞過濾階段,主要用戶清理分詞結果中的噪聲信息,例如“的”“是”等無意義詞匯以及無意義標點、表情符號等。這些詞匯在多數自然語言處理問題中出現頻繁,但對語義影響不大,甚至會對結果造成干擾。本實驗中,停用詞庫選用表情符號集合以及哈工大中文停用詞庫。
接下來,使用樸素貝葉斯分類算法,按默認參數,從處理好的文本向量得到分類結果。最后,從特征詞維數的選擇、特征權重計算方式、分類器的選擇及參數調整等方面,對模型的準確率做出優化。在該過程中,使用遺傳算法輔助調參,并從多個維度對測試結果進行評價,以優化核心指標為目的進行多輪的優化。

圖1 模型架構圖
對于準備的5,000家小微商戶的朋友圈文本信息,首先進行數據清洗過程。其中,包括缺失數據清洗、格式內容清洗、非需求數據清洗等,同時對于每條文本數據,對其進行人工標注,包括電子產品、房產、服飾、美容、美妝個護、培訓、汽車、食品、首飾、推廣、醫藥保健11個大分類。經過該預處理過程后,各分類數據規模如表1所示。
總計數據條數為28,273,最終數據集呈現為一個txt文本文件,其中每行為一條數據。每條數據包括分類標記信息、一個制表符以及該朋友圈記錄對應的文本信息,數據中,Emoji表情信息得到保留、連續的空格合并為一個、多行文本合并為一行,部分數據如圖2所示。

圖2 數據示例圖
在數據準備的基礎上,對原始數據進行訓練集、測試集的劃分。劃分過程保證訓練集,測試集約為4:1,且測試集各分類盡可能均衡,以方便后續的驗證過程。同時,在該過程中,還將訓練集和數據集中11個大分類的名稱映射為數字1~11,映射關系如表2所示。
整理后的訓練數據、測試數據規模如表3和表4所示。
訓練集的前三行如圖3所示。
可以看到,訓練集中,樣本數最大的分類“醫藥保健”有3,882條數據,而最小的分類“美容”僅有636條數據,因此訓練集存在一定的類別不平衡問題。

表1 數據規模

表2 映射關系

表3 訓練數據規模

圖3 訓練集前3行
對于每條文本信息,采用Python的Jieba庫進行分詞處理。Jieba是目前最好的Python中文分詞組件之一,可以將整段文本切割為中文詞匯。
同時,在該步驟的處理過程中,還將過濾停用詞。用到的停用詞庫包括兩個:其一為中文常用停用詞庫,包括無意義標點符號、中文詞匯等,共1,894詞匯;其二為鑒于微商文本實際情況所選擇的Emoji表情符號合集,共3,098詞匯。
然后,使用CHI進行特征選擇,使用CHI計算公式來計算所有單詞的CHI值,以此作為特征選擇的依據。選擇出1,000維左右的特征列表后,有了特征之后就是為每個新聞構造VSM模型,即使用TF-IDF方法計算各特征的權重得到表示該文本的特征向量。本文將輸出結果存儲為兩個txt文件,這樣在之后訓練模型是直接讀取數據即可,省去重復的數據處理,處理結果前三行如圖4所示。
將訓練集的特征向量傳入Ntlk庫的NaiveBayesClassifier進行訓練,這是一個基于樸素貝葉斯原理的分類器。按默認參數訓練,測試集表現如表5所示。

表5 模型第一輪表現
由于測試數據集中,各分類數據量均為500條,因此精確度、召回率、準確率三個值是相等的,而F1值為精確度和召回率的調和值,也同樣相等。
各個分類的準確率表現如表6所示。
接下來以準確率為判斷基準,對模型進行調優。
5.5.1分類器選擇
首先,對于模型訓練階段,將貝葉斯分類器替換為其他分類器進行測試,實驗結果如表7所示。
從測試結果可以看出,決策樹和SVC的分類效果不如樸素貝葉斯,且訓練過程較慢。因此,有穩定分類效率,且常用于文本分類的貝葉斯分類器仍是首選。
5.5.2 特征權重計算方式
在計算每一篇文檔的特征向量權重過程,即將文檔從分詞列表轉化為分類器可以識別的特征向量輸入過程中,特征權重可以選擇不同的計算方式。原統計方式為使用TF-IDF值進行累計。使用新的計算方式重試,測試結果如表8所示,原方式仍是最合適的統計方式。

圖4 預處理后數據

表6 各分類準確率表現

表7 其余模型準確率測試結果

表8 其余特征權重計算測試結果
5.5.3 特征詞維度選擇
合理的特征選擇,可以降低文本特征維度、降低分類時間復雜度或者提高分類效果。本文使用CHI方法進行特征選擇,其中特征維度數原定為100,先測試特征維度數的選擇多少為最優。為防止過擬合的情況出現,將原訓練集劃分為新訓練集和新測試集,用于該參數的調優過程依據;將原測試集作為驗證集,用于驗證該步驟調優效果。新的訓練集、測試集、驗證機劃分如圖5所示。

圖5 模型架構圖
將特征維度選擇數逐漸增加,進行訓練與驗證。其中,訓練集:測試集均按3:1的比例劃分,且每輪測驗均做5折交叉驗證。選擇數從5開始逐漸增加,260及之前以5為步進。隨著特征維度數的增加,訓練速度大幅降低,因此260維度之后步進逐步擴大,尋找準確率拐點。訓練過程繪制折線圖如圖6所示。
測試結果顯示,當特征選擇數達到300時,達到94.939%準確率,而后圖像趨于平緩。選擇數達到600左右時,準確率達到95.649%,而后幾乎不變。綜合考慮訓練時間,選擇數使用600較為合適。經驗證,在訓練集+測試集上進行訓練,再使用驗證集進行測試,準確率為95.145%。

圖6 測試集上表現
在該實驗中,調參優化后模型的準確率有一定提升,對于小微商戶分類問題有一定參考價值。相比于BERT等準確率更高的NLP模型,對系統資源的開銷小了多個數量級,并且在準確率有一定保證的前提下,訓練快速,更適合投入線上的實時系統生產環境。實驗證明了使用詞袋模型、TF-IDF、再使用樸素貝葉斯方法進行文本分類是可行的,可以極大地簡化人力勞動,對小微商戶微商分類、廣告精準化推薦、用戶精準畫像等提供了較為可靠的數據和方法支持。
下一步工作將著重尋找更優的方法,進一步提升模型準確率,目前提升的瓶頸有三:(1)基于TF-IDF的模型輸入僅為直接分詞后的結果,而丟失了包括前后文的語義信息、語料的重復出現頻度等在一般的自然語言處理模型中是較為重要的信息;(2)微商分類問題復雜,該模型沒有分析詞匯直接的關聯關系,本質上仍是詞頻統計的升級版,導致精度達到一定值后難以繼續提升;(3)模型的優化僅進行了調參,沒有從方法上進行升級。
因此,后續擬用TF-IDF的算法改進:TF-IWF算法。該算法在TF-IDF算法基礎上,提出新的基于詞頻統計的關鍵詞提取方法。利用段落標注技術,對處于不同位置的詞語給予不同的位置權重,對分詞結果中詞頻較高的同詞性詞語進行詞語相似度計算,合并相似度較高的詞語,通過詞語逆頻率TF-IWF算法,按權值排序得到關鍵詞。這種改進算法解決了傳統中文關鍵詞提取方法中對相似度高的詞的不重視而導致關鍵詞提取精度不高的問題。此外,在訓練時間與資源允許的前提下,使用Google的預處理模型BERT對原始語料進行分析。BERT預先學習了大量中文語料庫,且使用雙向訓練的語言模型,對語境理解更為深刻,可以更好地完成小微商戶分類任務。