摘 ?要:針對采用貝葉斯分類器算法進行商品描述分類時,出現(xiàn)大量混淆性詞匯從而無法保證特征間獨立的問題,提出了采用停用詞優(yōu)化的貝葉斯分類器算法,通過詞頻統(tǒng)計和詞性篩選的方式,過濾掉大部分混淆性詞匯,從而保證特征獨立。針對相似類別無法準(zhǔn)確區(qū)分的問題,提出了子模型訓(xùn)練的解決方案,對易混淆類別單獨進行訓(xùn)練并記錄訓(xùn)練過程,在測試階段根據(jù)結(jié)果判斷并使用子模型,從而實現(xiàn)細化區(qū)分。實驗表明,優(yōu)化方案確實可行,可以獲得97.80%的準(zhǔn)確率。
關(guān)鍵詞:樸素貝葉斯分類器;停用詞;子模型訓(xùn)練;商品分類
中圖分類號:TP311 ? ? 文獻標(biāo)識碼:A
Research on Application of Improved Bayesian Algorithm in Commodity Classification
SHAO Xinxin
(Department of Software Engineering, Dalian Neusoft University of Information, Dalian 116023, China)
Shaoxinxin@neusoft.edu.cn
Abstract: A large number of confusing words appear when Naive Bayes classifier is used to classify commodity description. This makes it difficult to ensure independence between features. This paper proposes a Bayesian classifier algorithm optimized by stop words. Most confusing words can be filtered out by using word frequency statistics word part-of-speech screening. Aiming at the problem that similar categories cannot be distinguished, confusing categories are trained separately and the training process is recorded. In test phase, sub-models are judged and then used according to the results, so to realize detailed distinction. Experiments show that the optimized solution is indeed feasible, and can reach an accuracy of 97.80%.
Keywords: Naive Bayes classifier; stop words; sub-model training; commodity classification
1 ? 引言(Introduction)
電子商務(wù)的興起吸引了大量賣家入駐電商平臺,此時,傳統(tǒng)的商品分類系統(tǒng)就捉襟見肘了。傳統(tǒng)分類系統(tǒng)一般依賴于關(guān)鍵字,工作人員根據(jù)商品描述為其打上對應(yīng)的標(biāo)簽,既費時又費力;賣家在提供商品描述時也經(jīng)常帶有主觀性,且經(jīng)常帶有新詞匯或迷惑性詞語,這就導(dǎo)致標(biāo)簽不好給出,并導(dǎo)致推薦算法準(zhǔn)確率下降,從而影響下單率。因此,電商平臺想要提高下單率、口碑和用戶黏性,提供準(zhǔn)確的商品分類算法是首要考慮的問題。
國外的文本分類已經(jīng)到了實用化階段,并廣泛應(yīng)用于電子郵件分類、垃圾信息攔截、情感分析等方面,其中比較有名的例子是卡內(nèi)基集團為路透社開發(fā)的Construe系統(tǒng),以及麻省理工大學(xué)為美國白宮開發(fā)的郵件分類系統(tǒng)。國內(nèi)對文本分類的研究起步較晚,由于中文無法通過空格對文本進行分詞處理,因此,即使是最基本的詞頻統(tǒng)計算法,也有較高的實現(xiàn)難度,加之很長一段時間內(nèi)國內(nèi)都沒有一套公開的中文數(shù)據(jù)集,導(dǎo)致文本分類算法難以實現(xiàn)。經(jīng)過一段時間的研究,一些機構(gòu)如清華大學(xué)、北京大學(xué)都推出了自主建立的漢語語料庫,有了這些基礎(chǔ)數(shù)據(jù),中科院計算所的李曉黎、史忠植等人應(yīng)用概念推理網(wǎng)進行文本分類,召回率達到94.2%。中國科技大學(xué)的范眾等人在KNN、貝葉斯和文檔相似性研究的基礎(chǔ)上提出了一個超文本協(xié)調(diào)分類器,正確率接近80%,特點是適當(dāng)考慮了HTML文本中結(jié)構(gòu)化信息。復(fù)旦大學(xué)和富士通研究中心的黃萱菁、吳立德等人研究了獨立語種的文本分類,并以詞匯和類別的互信息量為評分函數(shù),考慮了單分類和多分類,最好的召回率為88.87%。
目前,一些比較成熟的分類算法已經(jīng)被廣泛用在了文本分類中,主要包括貝葉斯分類、決策樹方法、向量機分類、KNN算法[1]等。其中,樸素貝葉斯是一種簡單的線性分類器,由于其簡單易用的特性和理論基礎(chǔ)的支持,在文本分類中得到了廣泛的應(yīng)用。但該算法不足之處在于其假定全部特征之間彼此獨立,而商品詳情往往會出現(xiàn)不同品類間的類似情況,這一特性導(dǎo)致直接套用該算法并不能生成理想的可用模型。針對上述問題,本文提出了采用停用詞和子模型訓(xùn)練的方法對貝葉斯分類算法進行改進,并經(jīng)實驗驗證,在商品分類中具有較好的效果。
2 ? 算法描述(Algorithm description)
2.1 ? 樸素貝葉斯分類器算法
樸素貝葉斯分類器算法依賴于條件概率定理,也就是貝葉斯定理,該定理表示如下:
其中,是指在事件B發(fā)生的情況下,A發(fā)生的概率。由于已知B發(fā)生后A的條件概率,其得自B的取值,因此也稱其為A的后驗概率。同理,稱為B的后驗概率,也稱作似然性?;蛴捎诓恍枰紤]另一條件的關(guān)系,因此稱作A或B的先驗概率[2]。
假設(shè)某個個體有項特征(Feature),分別為;其有種類別(Category),分別為。貝葉斯分類器的目標(biāo)是計算出概率最大的那個類別,即:
這個算式的最大值。
由于在同一組數(shù)據(jù)下,對所有類別來說,均相同,可以省略,故問題變?yōu)榍笤摴降淖畲笾担?/p>
樸素貝葉斯假設(shè)特征之間彼此獨立,在這種情況下:
等式右側(cè)的每一項均為特征下,類別為的可能性,可以通過數(shù)據(jù)統(tǒng)計直接從數(shù)據(jù)中獲得,故可以根據(jù)此方法找出概率最大的那個類別[3]。
經(jīng)過測試發(fā)現(xiàn),商品的描述往往存在干擾特征,比如數(shù)值數(shù)據(jù)、商品的壽命、商品的價格等,在不使用停用詞的情況下,這些數(shù)據(jù)用作特征容易混淆不同類別的商品。
2.2 ? 商品分類停用詞算法設(shè)計
商品分類主要是對文本進行分類,而提高文本分類準(zhǔn)確性的主要途徑是制定合適的停用詞[4]。通過對錯誤率高的商品描述進行分析,發(fā)現(xiàn)影響分類器對商品描述文字信息進行分類的因素主要有以下兩種:
自然語言中存在的大量功能詞,比如的、地、得、或、但等。這類詞匯本身對分類沒有幫助,可能會出現(xiàn)在各種類別的商品中,并引起混淆。
商品描述中普遍存在的通用詞匯,比如最火、網(wǎng)紅、后悔、哭了等。這些詞匯與功能詞產(chǎn)生的影響是相似的。
針對以上兩點,可以大致推理出所需要的停用詞方案:
針對功能詞:由于功能詞比較固定,可以直接選擇一套現(xiàn)有符合需求的功能詞列表,并添加到系統(tǒng)停用詞中。
針對通用詞匯:統(tǒng)計全部品類商品的詞頻,取不同分類中出現(xiàn)最多的相同形容詞、副詞等修飾性詞匯,添加到停用詞列表。
針對商品描述中的通用詞匯:由于該種詞匯具有扎堆出現(xiàn)的特點,因此可以對某段時間內(nèi)出現(xiàn)某種類扎堆出現(xiàn)的新詞匯進行統(tǒng)計。
針對不同子類商品之間存在的混淆詞匯:這種情況并不能簡單地使用制定停用詞列表的方式。
停用詞統(tǒng)計算法流程設(shè)計如下:
Step 1:讀取數(shù)據(jù)。
Step 2:統(tǒng)計商品詳情的詞頻,并按類別分組。
Step 3:統(tǒng)計每組詞匯,找出出現(xiàn)在五個以上組的形容詞、副詞、量詞。
Step 4:統(tǒng)計每組詞匯,找出在一段時間內(nèi)大量出現(xiàn)的相同詞匯。
Step 5:將找到的詞匯添加到停用詞列表。
2.3 ? 商品分類算法設(shè)計
經(jīng)過多組實驗,最終得出商品分類算法的全貌。
其中,訓(xùn)練流程為:
Step 1:讀取數(shù)據(jù),將類別編號,并與商品描述綁定。
Step 2:通過貝葉斯分詞器將商品描述進行分詞。
Step 3:統(tǒng)計每組詞匯,找出出現(xiàn)在五個以上組的修飾性詞匯加入停用詞列表。
Step 4:統(tǒng)計每組詞匯,找出在一段時間內(nèi)大量出現(xiàn)的相同詞匯,加入停用詞列表。
Step 5:進行一次標(biāo)準(zhǔn)訓(xùn)練。
Step 6:驗證準(zhǔn)確性,找出帶有易混淆的子分類的主分類。
Step 7:過濾訓(xùn)練數(shù)據(jù),收集上一步所找到數(shù)據(jù)的原始數(shù)據(jù),分組進行各一次標(biāo)準(zhǔn)訓(xùn)練。
Step 8:匯總?cè)磕P汀?/p>
Step 9:保存模型和訓(xùn)練記錄。
其中,一次標(biāo)準(zhǔn)訓(xùn)練流程為:
Step 1:過濾分詞結(jié)果中的停用詞。
Step 2:將分詞結(jié)果利用Tokenizer數(shù)值化。
Step 3:使用HashingTF轉(zhuǎn)換器將商品描述的分詞結(jié)果轉(zhuǎn)換為特征向量。
Step 4:將特征向量轉(zhuǎn)換為樸素貝葉斯分類器算法需要的格式。
Step 5:代入樸素貝葉斯分類器算法進行訓(xùn)練。
3 ? 算法實施(Algorithm implementation)
3.1 ? 實驗環(huán)境
本文實現(xiàn)算法的實驗環(huán)境是Mac OS系統(tǒng)下搭建的Spark環(huán)境。Spark版本為2.4.0,Hadoop版本為3.0.3,JDK版本為1.8,Scala版本為2.12.8。
3.2 ? 數(shù)據(jù)說明
本實驗采用的數(shù)據(jù)為某平臺的商品描述數(shù)據(jù),包含30萬條訓(xùn)練數(shù)據(jù)以及370萬條測試數(shù)據(jù),格式為tsv形式。訓(xùn)練數(shù)據(jù)每行為商品描述、商品類型,測試數(shù)據(jù)每行為商品描述[5-6]。部分訓(xùn)練數(shù)據(jù)如表1所示。
可以發(fā)現(xiàn),商品類別雖然只有一列,但其實分為三層,且逐層詳細:本地充值—游戲充值—QQ充值,依次對應(yīng):主分類—子分類—詳細分類。
3.3 ? 算法訓(xùn)練
為適當(dāng)控制訓(xùn)練時間,以下測試將從訓(xùn)練數(shù)據(jù)中抽取30 萬條,從測試數(shù)據(jù)中抽取20萬條進行,精確到子分類。
標(biāo)準(zhǔn)樸素貝葉斯分類器模型訓(xùn)練:為保證訓(xùn)練結(jié)果的有效性,在該組訓(xùn)練開始前,先進行一次去掉上文中提到的易混淆數(shù)據(jù)的標(biāo)準(zhǔn)訓(xùn)練,同時下文所涉及的訓(xùn)練數(shù)據(jù)均為去掉易混淆主分類的數(shù)據(jù)[7-8]。
分析測試結(jié)果發(fā)現(xiàn),在眾多商品類型中,女鞋/女裝、維修保養(yǎng)/汽車裝飾這兩組預(yù)測的準(zhǔn)確率最低,且這兩組均為各自同一主分類下的子分類,存在較多重復(fù)描述性詞匯,還有其他類別也出現(xiàn)了匹配失敗的情況,匹配失敗結(jié)果統(tǒng)計如圖1所示。
針對同一主分類中不同子分類間存在重復(fù)性詞匯的問題,采用子模型訓(xùn)練的方法來解決。
子模型的訓(xùn)練:以服飾鞋帽—女鞋/女裝為例,對該組數(shù)據(jù)進行一次模型訓(xùn)練。分析結(jié)果為針對兩種子類別進行訓(xùn)練的準(zhǔn)確率遠高于對全品類進行分類時的準(zhǔn)確率。當(dāng)訓(xùn)練數(shù)據(jù)只包含子品類時,樸素貝葉斯分類器能夠更好地分析出兩者的不同。由此可初步認為,對子分類單獨成組進行訓(xùn)練以區(qū)分易混淆的商品類別是可行的。該子模型將會保存并在稍后使用。
項目選用以下兩種標(biāo)準(zhǔn)停用詞列表進行測試:
(1)使用哈爾濱工業(yè)大學(xué)提供的漢語語言停用詞列表對商品詳情的分詞結(jié)果進行過濾。
(2)使用百度提供的百度搜索停用詞列表對商品詳情的分詞結(jié)果進行過濾。
百度搜索停用詞表是針對搜索引擎定制的停用詞表,由于商品分類的目標(biāo)是實現(xiàn)商品搜索功能,故選用該停用詞表進行測試[9]。
根據(jù)實驗結(jié)果,發(fā)現(xiàn)除上文中所提到的易混淆子分類外,其他分類的錯誤率有一定程度的下降,但同樣未達到預(yù)期效果。經(jīng)過以上兩次測試,可以初步得出結(jié)論:漢語語言停用詞列表并不是通用的,停用詞列表跨領(lǐng)域使用效果并不理想,只是使用通用的解決方案并不能很好地過濾商品分類中的無用詞匯。
由于使用通用的停用詞解決方案無法滿足需求,因此將對整個商品分類數(shù)據(jù)構(gòu)建自己的停用詞。收集兩類詞語作為本系統(tǒng)的停用詞列表,一是同一段時間扎堆出現(xiàn)的新詞匯;二是不同分類中出現(xiàn)最多的相同形容詞、副詞等修飾性詞匯。收集到的停用詞如下:最新、熱銷、熱門、活動等。
從數(shù)據(jù)集中隨機抽取30萬條,70%作為訓(xùn)練集,30%作為測試集,進行實驗,采用多種方法進行分類,各個方法的準(zhǔn)確率和用時情況如表2所示。
分析實驗結(jié)果,發(fā)現(xiàn)準(zhǔn)確率已經(jīng)達到預(yù)期,不過由于進行了數(shù)次子訓(xùn)練,導(dǎo)致時間較長。實際上在應(yīng)用時會直接使用訓(xùn)練完畢的模型,從模型的加載到數(shù)據(jù)的處理總共只需要消耗不到一分鐘,所以只要訓(xùn)練出準(zhǔn)確的模型,就達到了商品分類的目的。
4 ? 結(jié)論(Conclusion)
本文通過分析商品分類的本質(zhì),選擇了合適的大數(shù)據(jù)算法——樸素貝葉斯分類器算法,并在測試中發(fā)現(xiàn)該算法存在實際數(shù)據(jù)無法做到算法所要求的特征之間相互獨立的不足。為此,項目設(shè)計了基于頻率的停用詞篩選算法,并最終成功應(yīng)用于商品分類中,提高了分類的準(zhǔn)確性。從實驗結(jié)果可以看出,對商品分類的優(yōu)化需從其本質(zhì)文本分類入手,停用詞需針對不同的領(lǐng)域進行設(shè)計,且一味地去掉修飾性詞匯是沒有意義的,子模型訓(xùn)練可以簡單直接地處理混淆分類,更適于易互相混淆的兩種商品類別。
參考文獻(References)
[1] GAO H Y, ZENG X. Application of improved distributed Naive Bayesian algorithms in text classification[J]. The Journal of Supercomputing, 2019, 75(09):5831-5847.
[2] 張晨躍,劉黎志,鄧開巍,等.基于MapReduce的樸素貝葉斯算法文本分類方法[J].武漢工程大學(xué)學(xué)報,2021,43(01):102-105.
[3] 孫含笑.基于貝葉斯分類算法的用戶評論數(shù)據(jù)挖掘系統(tǒng)設(shè)計[J].現(xiàn)代計算機,2021(04):56-59.
[4] 劉愛琴,馬小寧.基于概率主題模型的短文本自動分類系統(tǒng)構(gòu)建[J].國家圖書館學(xué)刊,2020,29(06):102-112.
[5] 鄭開雨,竹翠.基于上下文語義的樸素貝葉斯文本分類算法[J].計算機與現(xiàn)代化,2018(06):1-6.
[6] 錢曉東.數(shù)據(jù)挖掘中分類方法綜述[J].圖書館情報工作,2017,?51(3):68-71.
[7] 陶愷,陶煌.一種基于深度學(xué)習(xí)的文本分類模型[J].太原師范學(xué)院學(xué)報(自然科學(xué)版),2020,19(04):45-51.
[8] 邵欣欣.基于Canopy和共享最近鄰的服務(wù)推薦算法[J].計算機科學(xué),2020,47(S2):479-481,503.
[9] 陳國松,黃大榮.基于信息熵的TFIDF文本分類特征選擇算法研究[J].湖北民族學(xué)院學(xué)報(自然科學(xué)版),2008,26(04):401-404,409.
作者簡介:
邵欣欣(1980-),女,碩士,副教授.研究領(lǐng)域:軟件工程,大數(shù)據(jù)分析.