王國橋,牛少彰
(北京郵電大學(xué)計算機(jī)學(xué)院,北京 100876)
以微商為首的社交電商,在包括但不限于人、貨、場三個維度上,都有著去中心化的發(fā)展趨勢。因此,其呈現(xiàn)出人群碎片化、小品牌空間擴(kuò)大化、產(chǎn)品類目多元化等特點(diǎn)。在這樣的前提下,對于社交電商平臺,應(yīng)以精準(zhǔn)流量智能推廣為目標(biāo)導(dǎo)向,對微商進(jìn)行分析。比如通過建立AI用戶畫像模型的方式,提取微商用戶特征,并對其進(jìn)行文本特征量化,數(shù)字特征量化,類型特征量化等。其中,通過文本特征量化進(jìn)行微商分類是最重要的環(huán)節(jié)之一。
本文所述的大數(shù)據(jù)平臺擁有多年的微商經(jīng)營數(shù)據(jù)積累,包括微商交易數(shù)據(jù)、聊天朋友圈文本信息、通訊錄信息等。這些數(shù)據(jù)已經(jīng)過脫敏、清洗、整合處理,符合大數(shù)據(jù)分析的基本條件。本文從大數(shù)據(jù)平臺隨機(jī)挑選了5,000家微商進(jìn)行微商分類實驗,分類目標(biāo)為微商的主要經(jīng)營分類,比如母嬰用品、數(shù)碼3C、食品、美妝個護(hù)等。對原始數(shù)據(jù)的挑選以后,提取出其朋友圈文本信息進(jìn)行分析,每家微商平均包含50條朋友圈數(shù)據(jù)。分析微商朋友圈文本數(shù)據(jù)構(gòu)成,發(fā)現(xiàn)除常見于電商平臺的銷售文案外,還包含較多口語化的宣傳用語,吸引眼球的生活小常識、日常菜譜、本地推廣內(nèi)容等,有些是不同類型微商千篇一律的話術(shù),有些則對微商分類有較大參考價值。因此,社交電商的朋友圈內(nèi)容的信息具有一定多樣性和復(fù)雜性。
在做研究之前,本文嘗試使用經(jīng)典特征匹配方案來進(jìn)行分類。首先,根據(jù)經(jīng)驗以及市場環(huán)境,將微商的大分類確定為11類,再以京東、天貓等電商平臺為基礎(chǔ),為每個分類整理出100個關(guān)鍵詞,并根據(jù)對微商語言習(xí)慣的分析,剔除共性詞、參考價值較低的詞語,并將這些關(guān)鍵詞根據(jù)微商語言習(xí)慣進(jìn)行篩選和擴(kuò)充。這個過程是以中文分詞為基礎(chǔ)的,因此需要中文分詞庫工具。Jieba分詞庫是Github上的一個開源項目,提供多種編程語言的支持,可以將中文文本拆分成詞語。對每個微商的全部朋友圈信息進(jìn)行匯總,并使用Jieba分詞切割、去重,將結(jié)果與篩選出的11個分類的關(guān)鍵詞分別進(jìn)行匹配,匹配到關(guān)鍵詞的個數(shù)計為匹配度。根據(jù)不同分類的情況,對部分結(jié)果進(jìn)行人工篩選的方式確定匹配度閾值,再對所有微商根據(jù)閾值進(jìn)行分類。
經(jīng)典特征匹配方案在優(yōu)化與驗證后,最終準(zhǔn)確率達(dá)到40%,對于微商分類任務(wù)有一定參考意義。然而,該方案誤判率較高,而匹配邏輯較簡單也決定了它有限的優(yōu)化空間。同時,在基礎(chǔ)分詞建立階段,人為干預(yù)較大,無法動態(tài)擬合實際生產(chǎn)中遇到的變化。受限于這些基礎(chǔ)關(guān)鍵詞,難以涵蓋微商的方方面面,進(jìn)而對微商新熱詞的動態(tài)變化不敏感。因此,需要一種準(zhǔn)確率較高、適應(yīng)性更為靈活的方法來解決微商分類問題。
自然語言處理是人工智能領(lǐng)域的流行方向,而文本分類作為自然語言處理的關(guān)鍵技術(shù)已得到專家和學(xué)者的廣泛關(guān)注。對于短文本分類問題,詞袋模型可以從詞向量中提取詞頻矩陣,刪除停用詞和低頻詞,而在此基礎(chǔ)上,TF-IDF算法可以提取文本特征,得以進(jìn)行文本分類研究。在優(yōu)化后,可以對文本信息進(jìn)行高精度分類[1,9]。
Bag of Words,也稱為詞袋模型。它通常被用來描述一個簡單的文本數(shù)學(xué)模型,也是一種常用的文本特征提取方法[2]。在信息檢索領(lǐng)域中,詞袋模型僅針對無序文本,忽略其順序和語法,僅僅將其視為文本中幾個單詞的集合。在預(yù)料中將每個詞匯都視為不相關(guān),并且每個詞匯的外觀都不依賴于其他詞匯。也就是說,無論文字在何處出現(xiàn),都不會受到其他因素的影響[3]。
文本分析的主要目標(biāo)之一是將文本轉(zhuǎn)換為數(shù)字形式,即特征向量化,以便可以使用機(jī)器學(xué)習(xí)算法對其進(jìn)行訓(xùn)練。機(jī)器學(xué)習(xí)算法需要以數(shù)字形式處理數(shù)據(jù),在此基礎(chǔ)上它們可以分析數(shù)據(jù),并提取有用的信息。詞袋模型從文檔中的所有詞中提取出特征詞,并使用這些特征項矩陣進(jìn)行建模。在這個階段后,每個文檔將描述為一個詞袋。值得注意的是,該方法只記錄單詞的數(shù)量,語法和單詞順序都將忽略。
文檔的單詞矩陣,是所有單詞出現(xiàn)在文檔中的次數(shù)的記錄總和,可以描述為各種單詞權(quán)重的組合。通過設(shè)置一定限定條件,可以過濾出更有意義的單詞。除此之外,還可以構(gòu)造出現(xiàn)在文檔中的所有詞語的頻率直方圖,即特征向量,這些特征向量可以用于文本分類[4]。
TF-IDF模型是一類應(yīng)用廣泛的加權(quán)技術(shù),經(jīng)常被用來進(jìn)行信息檢索和數(shù)據(jù)挖掘。TF(Term Frequency)是詞頻的簡稱,可理解為文本內(nèi)詞匯出現(xiàn)的頻率,逆文本頻率的縮寫為IDF,即一個詞語普遍關(guān)鍵性的度量[5]。
該模型的核心思想:如果一個詞匯在文章中多次出現(xiàn),TF值就較高,而該詞匯又很少出現(xiàn)在其他文章中,則其具有良好的類別判別性能,具有分類泛用性。實際上,TF-IDF是TF × IDF,即他們的乘積。其中,TF表示文檔中條目的頻率。后一個IDF的核心思想:如果包含t項的文檔越少,即n越小,IDF越大,則意味著t項具有出色的分類和區(qū)分能力。如果某種類型的文檔C中有m個文檔都包含術(shù)語t,并且該文檔中除t之外的文檔總數(shù)為k,則顯然n(包含t的所有文檔的數(shù)量)是上面的m,k的總和。當(dāng)m大時,n也大,并且根據(jù)IDF公式獲得的IDF的值將小,表明術(shù)語t類別辨別能力不強(qiáng)。但是,客觀情況是,如果某個條目經(jīng)常出現(xiàn)在文檔類別中,則意味著該條目可以很好地反映該類別的文本屬性。對于此類條目,應(yīng)賦予較高的權(quán)重,并且可以用作此類文本的特征詞,用于與其他類型的文檔進(jìn)行標(biāo)識[6]。
對于文檔相似度計算問題,盡管TF-IDF模型是相當(dāng)有效的,但文本分類問題中,單純使用TFIDF來判斷一個特征是否有區(qū)分度是不夠的。因為它僅僅綜合考慮了該詞在文檔中的重要程度和文檔區(qū)分度,而沒有考慮特征詞在類空間的分布。假使一個特征詞,在各類空間分布較均勻,這樣的詞匯則對分類基本無貢獻(xiàn),但如果一個特征詞比較集中分布在某類中,而在其他類幾乎不出現(xiàn),這樣的詞卻能夠很好代表這個類的特征,而TF-IDF無法區(qū)分這兩種情況[7,10]。
卡方統(tǒng)計量(Chi-square statistics,CHI)用于衡量特征詞和類別之間的相關(guān)聯(lián)程度。假設(shè)和之間符合具有一階的自由度分布,則與的CHI值定義如式(1)所示[8]。
其中,m為類別數(shù)目。
如前文所述,TF-IDF是一種文本挖掘和信息檢索領(lǐng)域常用的加權(quán)技術(shù),用以評估某一字詞對于一個文件集或一個語料庫中文件之一的重要程度。字詞的重要性隨著它在文件中出現(xiàn)的次數(shù)成正比增加,但同時,也會隨著它在語料庫中出現(xiàn)頻率成反比下降。
對于微商所發(fā)布的朋友圈文本信息,每個微商所發(fā)布的信息總和可映射為TF-IDF中的一整個文件集,或者稱為一個文檔,所有微商的文本之和可映射為整個語料庫。而每個微商所出現(xiàn)的topn的詞語,就是該文檔代表性最強(qiáng)的詞,可以作為關(guān)鍵字。在此基礎(chǔ)上,再使用樸素貝葉斯算法公式推導(dǎo),就可以生成類別標(biāo)簽,進(jìn)一步得到統(tǒng)計某一文檔屬于某一類的概率。微商分類使用TF-IDF的優(yōu)勢有四點(diǎn):(1)映射關(guān)系比較清晰;(2)著重關(guān)鍵詞的權(quán)重,放低非關(guān)鍵詞的權(quán)重;(3)相比于其他機(jī)器學(xué)習(xí)算法,明顯地減少模型的特征維數(shù),避免維數(shù)災(zāi)難;(4)在提升分類計算效率的同時,保證分類效果具有不錯的查準(zhǔn)率、召回率,整個模型架構(gòu)如圖1所示。
數(shù)據(jù)準(zhǔn)備后,進(jìn)入文本預(yù)處理階段,其中格式處理子階段包括刪除空格、換行符、并合并微商文本。然后對文本進(jìn)行分詞處理,選用Jieba分詞庫的精簡模式對待處理文本進(jìn)行分詞。停用詞過濾階段,主要用戶清理分詞結(jié)果中的噪聲信息,例如“的”“是”等無意義詞匯以及無意義標(biāo)點(diǎn)、表情符號等。這些詞匯在多數(shù)自然語言處理問題中出現(xiàn)頻繁,但對語義影響不大,甚至?xí)Y(jié)果造成干擾。本實驗中,停用詞庫選用表情符號集合以及哈工大中文停用詞庫。
接下來,使用樸素貝葉斯分類算法,按默認(rèn)參數(shù),從處理好的文本向量得到分類結(jié)果。最后,從特征詞維數(shù)的選擇、特征權(quán)重計算方式、分類器的選擇及參數(shù)調(diào)整等方面,對模型的準(zhǔn)確率做出優(yōu)化。在該過程中,使用遺傳算法輔助調(diào)參,并從多個維度對測試結(jié)果進(jìn)行評價,以優(yōu)化核心指標(biāo)為目的進(jìn)行多輪的優(yōu)化。
圖1 模型架構(gòu)圖
對于準(zhǔn)備的5,000家小微商戶的朋友圈文本信息,首先進(jìn)行數(shù)據(jù)清洗過程。其中,包括缺失數(shù)據(jù)清洗、格式內(nèi)容清洗、非需求數(shù)據(jù)清洗等,同時對于每條文本數(shù)據(jù),對其進(jìn)行人工標(biāo)注,包括電子產(chǎn)品、房產(chǎn)、服飾、美容、美妝個護(hù)、培訓(xùn)、汽車、食品、首飾、推廣、醫(yī)藥保健11個大分類。經(jīng)過該預(yù)處理過程后,各分類數(shù)據(jù)規(guī)模如表1所示。
總計數(shù)據(jù)條數(shù)為28,273,最終數(shù)據(jù)集呈現(xiàn)為一個txt文本文件,其中每行為一條數(shù)據(jù)。每條數(shù)據(jù)包括分類標(biāo)記信息、一個制表符以及該朋友圈記錄對應(yīng)的文本信息,數(shù)據(jù)中,Emoji表情信息得到保留、連續(xù)的空格合并為一個、多行文本合并為一行,部分?jǐn)?shù)據(jù)如圖2所示。
圖2 數(shù)據(jù)示例圖
在數(shù)據(jù)準(zhǔn)備的基礎(chǔ)上,對原始數(shù)據(jù)進(jìn)行訓(xùn)練集、測試集的劃分。劃分過程保證訓(xùn)練集,測試集約為4:1,且測試集各分類盡可能均衡,以方便后續(xù)的驗證過程。同時,在該過程中,還將訓(xùn)練集和數(shù)據(jù)集中11個大分類的名稱映射為數(shù)字1~11,映射關(guān)系如表2所示。
整理后的訓(xùn)練數(shù)據(jù)、測試數(shù)據(jù)規(guī)模如表3和表4所示。
訓(xùn)練集的前三行如圖3所示。
可以看到,訓(xùn)練集中,樣本數(shù)最大的分類“醫(yī)藥保健”有3,882條數(shù)據(jù),而最小的分類“美容”僅有636條數(shù)據(jù),因此訓(xùn)練集存在一定的類別不平衡問題。
表1 數(shù)據(jù)規(guī)模
表2 映射關(guān)系
表3 訓(xùn)練數(shù)據(jù)規(guī)模
圖3 訓(xùn)練集前3行
對于每條文本信息,采用Python的Jieba庫進(jìn)行分詞處理。Jieba是目前最好的Python中文分詞組件之一,可以將整段文本切割為中文詞匯。
同時,在該步驟的處理過程中,還將過濾停用詞。用到的停用詞庫包括兩個:其一為中文常用停用詞庫,包括無意義標(biāo)點(diǎn)符號、中文詞匯等,共1,894詞匯;其二為鑒于微商文本實際情況所選擇的Emoji表情符號合集,共3,098詞匯。
然后,使用CHI進(jìn)行特征選擇,使用CHI計算公式來計算所有單詞的CHI值,以此作為特征選擇的依據(jù)。選擇出1,000維左右的特征列表后,有了特征之后就是為每個新聞構(gòu)造VSM模型,即使用TF-IDF方法計算各特征的權(quán)重得到表示該文本的特征向量。本文將輸出結(jié)果存儲為兩個txt文件,這樣在之后訓(xùn)練模型是直接讀取數(shù)據(jù)即可,省去重復(fù)的數(shù)據(jù)處理,處理結(jié)果前三行如圖4所示。
將訓(xùn)練集的特征向量傳入Ntlk庫的NaiveBayesClassifier進(jìn)行訓(xùn)練,這是一個基于樸素貝葉斯原理的分類器。按默認(rèn)參數(shù)訓(xùn)練,測試集表現(xiàn)如表5所示。
表5 模型第一輪表現(xiàn)
由于測試數(shù)據(jù)集中,各分類數(shù)據(jù)量均為500條,因此精確度、召回率、準(zhǔn)確率三個值是相等的,而F1值為精確度和召回率的調(diào)和值,也同樣相等。
各個分類的準(zhǔn)確率表現(xiàn)如表6所示。
接下來以準(zhǔn)確率為判斷基準(zhǔn),對模型進(jìn)行調(diào)優(yōu)。
5.5.1分類器選擇
首先,對于模型訓(xùn)練階段,將貝葉斯分類器替換為其他分類器進(jìn)行測試,實驗結(jié)果如表7所示。
從測試結(jié)果可以看出,決策樹和SVC的分類效果不如樸素貝葉斯,且訓(xùn)練過程較慢。因此,有穩(wěn)定分類效率,且常用于文本分類的貝葉斯分類器仍是首選。
5.5.2 特征權(quán)重計算方式
在計算每一篇文檔的特征向量權(quán)重過程,即將文檔從分詞列表轉(zhuǎn)化為分類器可以識別的特征向量輸入過程中,特征權(quán)重可以選擇不同的計算方式。原統(tǒng)計方式為使用TF-IDF值進(jìn)行累計。使用新的計算方式重試,測試結(jié)果如表8所示,原方式仍是最合適的統(tǒng)計方式。
圖4 預(yù)處理后數(shù)據(jù)
表6 各分類準(zhǔn)確率表現(xiàn)
表7 其余模型準(zhǔn)確率測試結(jié)果
表8 其余特征權(quán)重計算測試結(jié)果
5.5.3 特征詞維度選擇
合理的特征選擇,可以降低文本特征維度、降低分類時間復(fù)雜度或者提高分類效果。本文使用CHI方法進(jìn)行特征選擇,其中特征維度數(shù)原定為100,先測試特征維度數(shù)的選擇多少為最優(yōu)。為防止過擬合的情況出現(xiàn),將原訓(xùn)練集劃分為新訓(xùn)練集和新測試集,用于該參數(shù)的調(diào)優(yōu)過程依據(jù);將原測試集作為驗證集,用于驗證該步驟調(diào)優(yōu)效果。新的訓(xùn)練集、測試集、驗證機(jī)劃分如圖5所示。
圖5 模型架構(gòu)圖
將特征維度選擇數(shù)逐漸增加,進(jìn)行訓(xùn)練與驗證。其中,訓(xùn)練集:測試集均按3:1的比例劃分,且每輪測驗均做5折交叉驗證。選擇數(shù)從5開始逐漸增加,260及之前以5為步進(jìn)。隨著特征維度數(shù)的增加,訓(xùn)練速度大幅降低,因此260維度之后步進(jìn)逐步擴(kuò)大,尋找準(zhǔn)確率拐點(diǎn)。訓(xùn)練過程繪制折線圖如圖6所示。
測試結(jié)果顯示,當(dāng)特征選擇數(shù)達(dá)到300時,達(dá)到94.939%準(zhǔn)確率,而后圖像趨于平緩。選擇數(shù)達(dá)到600左右時,準(zhǔn)確率達(dá)到95.649%,而后幾乎不變。綜合考慮訓(xùn)練時間,選擇數(shù)使用600較為合適。經(jīng)驗證,在訓(xùn)練集+測試集上進(jìn)行訓(xùn)練,再使用驗證集進(jìn)行測試,準(zhǔn)確率為95.145%。
圖6 測試集上表現(xiàn)
在該實驗中,調(diào)參優(yōu)化后模型的準(zhǔn)確率有一定提升,對于小微商戶分類問題有一定參考價值。相比于BERT等準(zhǔn)確率更高的NLP模型,對系統(tǒng)資源的開銷小了多個數(shù)量級,并且在準(zhǔn)確率有一定保證的前提下,訓(xùn)練快速,更適合投入線上的實時系統(tǒng)生產(chǎn)環(huán)境。實驗證明了使用詞袋模型、TF-IDF、再使用樸素貝葉斯方法進(jìn)行文本分類是可行的,可以極大地簡化人力勞動,對小微商戶微商分類、廣告精準(zhǔn)化推薦、用戶精準(zhǔn)畫像等提供了較為可靠的數(shù)據(jù)和方法支持。
下一步工作將著重尋找更優(yōu)的方法,進(jìn)一步提升模型準(zhǔn)確率,目前提升的瓶頸有三:(1)基于TF-IDF的模型輸入僅為直接分詞后的結(jié)果,而丟失了包括前后文的語義信息、語料的重復(fù)出現(xiàn)頻度等在一般的自然語言處理模型中是較為重要的信息;(2)微商分類問題復(fù)雜,該模型沒有分析詞匯直接的關(guān)聯(lián)關(guān)系,本質(zhì)上仍是詞頻統(tǒng)計的升級版,導(dǎo)致精度達(dá)到一定值后難以繼續(xù)提升;(3)模型的優(yōu)化僅進(jìn)行了調(diào)參,沒有從方法上進(jìn)行升級。
因此,后續(xù)擬用TF-IDF的算法改進(jìn):TF-IWF算法。該算法在TF-IDF算法基礎(chǔ)上,提出新的基于詞頻統(tǒng)計的關(guān)鍵詞提取方法。利用段落標(biāo)注技術(shù),對處于不同位置的詞語給予不同的位置權(quán)重,對分詞結(jié)果中詞頻較高的同詞性詞語進(jìn)行詞語相似度計算,合并相似度較高的詞語,通過詞語逆頻率TF-IWF算法,按權(quán)值排序得到關(guān)鍵詞。這種改進(jìn)算法解決了傳統(tǒng)中文關(guān)鍵詞提取方法中對相似度高的詞的不重視而導(dǎo)致關(guān)鍵詞提取精度不高的問題。此外,在訓(xùn)練時間與資源允許的前提下,使用Google的預(yù)處理模型BERT對原始語料進(jìn)行分析。BERT預(yù)先學(xué)習(xí)了大量中文語料庫,且使用雙向訓(xùn)練的語言模型,對語境理解更為深刻,可以更好地完成小微商戶分類任務(wù)。