BERT模型在京東零售的應用實踐
京東零售是全球最大零售商之一,涵蓋線上、線下的實體、虛擬等多元化交易場景。目前每日有效商品數量約30億,產生相關日誌和內容已經達到PB級。在這些海量資料中,有諸多涉及自然語言處理和計算機視覺的應用場合,通過演算法和資料的驅動,給多場景的使用者體驗和交易提升帶來巨大改善,由於BERT在文字處理任務上的優異表現,我們也將BERT模型在電商文字分類、商品標題的序列標註等任務進行探索,並將相關實踐經驗進行總結。
BERT模型簡介
BERT[1] (Bidirectional Encoder Representation from Transformers) 是Google在2018年10月底公佈的基於變換器(Transformer)[2]的深度雙向編碼文字表示模型,通過模型預訓練+任務微調整的方式,在11項NLP基礎任務中展現出了卓越的效能,故成為NLP領域大火、整個ML界略有耳聞的模型。BERT的出現,徹底改變了預訓練詞向量模型框架和下游具體NLP任務的關係,將下游NLP任務重心轉移到上游的文字動態表示,通過進一步增加詞向量模型泛化能力和動態表達能力,以達到充分描述字元級、詞級、句子級甚至句間關係特徵的目的。
BERT的整體框架如圖1所示:模型架構基於多層雙向變換器編碼而非Bi-LSTM ,這樣可使得模型擁有更深的層數、具有更好並行性。在預訓練方法上,選擇了Masked LM和Next Sentence Prediction兩種損失函式分別捕捉詞語和句子級別的語義和句法等特徵。
BERT的輸入部分是一個線性序列(如圖2所示),兩個句子之間通過分隔符(SEP)分割,最前面和最後增加兩個識別符號(CLS)。每個詞語有三個Embedding:
① 詞語Embedding:詞語本身的Embedding;
② 句子Embedding: 由於訓練資料都是由句子構成的,那麼每個句子對應的句子Embedding給到該句中每個詞;
③ 位置Embedding:每個詞在該篇語料中對應的位置資訊。
將語料中對應的上述三種Embedding疊加,即形成了BERT的輸入。
圖 2 BERT的輸入序列
BERT相較於之前相關模型,其創新之處在於採取了新的預訓練的目標函式和增加句子級別的任務。前者中,利用隨機遮蔽輸入中的一些tokens,然後在預訓練中通過對它們進行預測,可以讓模型融合前後兩個方向上的上下文來輸出特徵,在ELMO[3]的基礎上,解決了由於模型層數的加深帶來的“目標洩露”,或者叫 “自己預測自己”(“see itself”)的問題;後者中,由於句子與句子之間本不是孤立存在的,以及現存QA和NLI任務都需要對兩個句子之間關係進行理解,這種理解方式超越了傳統的語言模型。為了理解句子關係,通過預訓練了一個“下一句預測”(“Next Sentence Prediction”)任務,也即隨機替換一些句子,然後利用上一句進行IsNext/NotNext的預測以達到提取該類句子關係特徵。
--BERT預訓練模型準備--
在應用BERT模型之前,首先需要下載Google釋出的現有的模型(如圖3),下載連結:https://github.com/google-research/bert,如果是英文資料,建議使用第一個BERT-Base, Uncased模型,多語言資料可使用第5個BERT-Base, Multilingual Cased (New, recommended)模型,中文資料可使用最後一個BERT-Base, Chinese模型。
圖 3 Google已釋出的BERT模型
--電商違禁文字檢測--
垃圾文字檢測也稱Spam檢測。在電商領域,商品的評論是電商平臺的最重要的資料之一,它是使用者選購商品的重要參考物件。京東零售下的“評論”、“問答社群”、“京麥”、“京東便利店”等幾大業務線每天都會產生大量的垃圾文字,它們嚴重影響了消費者的購物體驗。對站內的垃圾文字型別進行梳理,發現瞭如下幾類垃圾文字型別:
- 違禁型別:涉黃、辱罵、廣告等違禁型別的文字:
- 無意義湊字數型別:
- 古詩詞:
- 故事段子、流行語:
我們將上述垃圾文字識別當成一個文字分類任務來進行處理,通過訓練得到的文字分類模型來實現每天的垃圾文字的檢測、攔截!
在相同的資料集的條件下,基於BERT微調整訓練的模型與基於FastText訓練得到的模型相比:在2類(垃圾文字)識別上,在不犧牲精確率(precision =92%)的前提下召回率得到很大提升(recall:84%—>94%)。所以相應的,在1類(正常文字)識別上,在犧牲少量召回率的條件下,精確率率也得到提升91%—>97%。所以,基於BERT預訓練、微調訓練的方式,在資料量一定的條件下,可以將BERT訓練模型已經學習到的有用的資訊遷移到我們的任務中並且取得不錯的效果。
基於FastText的檢測模型效果(分詞、去停用詞等資料預處理):
Tab1. FastText的違禁文字檢測
Precision | Recall | F1 | |
---|---|---|---|
1(正常文字) | 0.91 | 0.97 | 0.94 |
2(垃圾文字) | 0.92 | 0.84 | 0.88 |
基於BERT檢測模型效果(預訓練、微調整):
Tab2. 基於BERT的違禁文字檢測
Precision | Recall | F1 | |
---|---|---|---|
1(正常文字) | 0.97 | 0.96 | 0.97 |
2(垃圾文字) | 0.92 | 0.94 | 0.93 |
--使用者社群情感分析建模--
情感分類可以簡單地理解為對文字表達的使用者潛在情感傾向進行分類[3]。對文字情感的最簡單劃分方法是,將文字分為正向、負向和中性三類[4]。但是,為了進一步提升對使用者情感的感知,我們常常會進行更細緻地劃分,比如把正向劃分為一般正向和極正,負向分為一般負向和極負向,即為5級情感分類。除了對情感做簡單的極性(Polarity)劃分,還可以引入更細緻的情感狀態,比如“憤怒”,“悲傷”,“幸福”等[4]。
使用者評論(Customer Review)是使用者對所購買商品或服務的使用體驗的表述,是電商平臺上一種重要的使用者反饋形式[5]。對評論進行情感分類,能夠幫助我們理解使用者的使用體驗,及時進行使用者反饋,監控商品質量,輔助使用者進行下單、購買和消費決策,最終改善使用者體驗和京東零售生態。因此,我們構建了評論的5級情感分類模型,將使用者評論分為5類:極正、一般正向、中性、一般負向和極負向。目前的情感分類模型已經覆蓋了零售的主要類目,支援的應用場景包括評價星級劃分、標籤生成、商品印象等(詳見圖8),其中綠色框中的是前臺標籤,藍色框中的是評價星級劃分;紅色框中的是商品印象詞條(未完全覆蓋)。
圖 8 情感分類的應用場景示意圖
我們準備了上萬規模的訓練集、測試集,利用BERT(pre-training + fine-tuning)[1, 6]進行情感分類,最後的模型效果如表3:
Tab3. 評論分類模型效果,BERT (based-chinese) vs fasttext
模型 | F1 |
---|---|
BERT (based-chinese)[6] | 90.7% |
FastText [7] | 89.6% |
通過表3,可以看到BERT模型的測試集f1值比FastText顯著提升1.1%,具有更強的泛化能力。提高不及spam評論檢測的原因是,情感分類資料量較大,基於BERT的遷移學習效果就不再那麼顯著了。
--商品類目錯掛預測--
在京東零售的資料中,商家在上架商品時,需要選定該商品所屬的類目,比如“家用電器”、“手機”等,但是有的商家可能不清楚每件商品所歸屬的具體類目,或者在選擇類目時誤操作等導致商品錯掛在了其他的類目當中,這對使用者選擇商品、搜尋、營銷推廣都造成了不好的影響,因此,能夠根據商品標題進行類目的預測至關重要。
根據商品標題進行類目預測本質上是一個文字分類問題,根據商家填充的商品標題自動進行類目預測,可以在商家上架商品時進行類目推薦,也可以在存量資料中進行類目錯掛的識別和整治。但是,有的類目之間區別區分度較差,比如“廚衛大電”和“廚房小電”之間並沒有嚴格的界限,且類目繁多,因此,傳統的文字分類演算法效果不是很好。另外,商品標題大多較短,需要短文字建模知識,這也對文字分類造成了很大的難度。BERT模型在進行文字分類方面效果優異,操作簡單,優勢明顯。
實驗基於京東零售若干類目共計上萬條左右的商品標題資料,進行類目預測分類,最後的模型效果如表4:
Tab4. 類目預測分類模型效果,BERT (based-chinese) vs xgboost
模型 | F1 |
---|---|
BERT (based-chinese) | 99.7% |
XGBoost | 96.8% |
從資料表現結果來看,在同樣的情況下使用BERT-Base, Chinese模型比Xgboost精度提升3個點。除了模型差異外,也可能與抽取資料型別、資料樣本大小也有關係。
--商品長標題序列標註--
在電商領域,商家為了提高銷量、增大搜尋命中率,常常會在一個商品標題中堆砌多個相關產品詞或者偷換產品詞。產品詞堆砌一方面會對搜尋準確性、場景化推薦等任務產生負面影響,進而影響使用者體驗。另一方面會在構建基礎資料 (如商品知識圖譜)時產生負例知識,故需要根據商品標題識別出核心產品詞。舉例如下:
對於該商品標題而言,核心產品詞任務目標是需要將標題 “美佰(MEIBAI)手機鍵盤OPPOr15是用於安卓手機vivox20手機殼華為滑鼠鍵盤保護套 粉紅色+有線滑鼠”中的手機鍵盤進行特殊標記。
基於部分類目的數十萬資料集,我們劃分成訓練集和驗證集、測試集命名為train.csv, dev.csv, test.csv。資料實驗結果如表5:
Tab5. 核心詞抽取模型效果,BERT (based-chinese)
Precision | Recall | F1 | Support | |
---|---|---|---|---|
POW | 0.9462 | 0.9542 | 0.9502 | 3319 |
Avg | 0.9462 | 0.9542 | 0.9502 | 3319 |
在部分類目上的實驗表明,基於BERT預訓練模型+微調的方法確實表現出了良好的效果。
總結及展望
本文將基於BERT的預訓練模型應用於京東零售若干文字處理任務,如序列標註、分類排序等,通過資料測試實驗驗證了該演算法線上上資料的良好效果。但是應用的領域不僅僅侷限於上述說到的幾個場景,後續本組在文字分類方面涉及的商品推薦文章分類以及序列標註方面的促銷類違規檢測、商品屬性校驗上也將陸續得以應用。同時也會嘗試擴充到智慧寫作、自動摘要、自動問答和會話系統等其他重要領域。
另一方面,對於本組處理的實際問題而言,更大量更準確的資料集會更好的覆蓋資料多樣性以支援模型的訓練,對模型預測的泛化能力和識別準確率會有進一步提升。
最後,該模型根據不同的應用背景引數調整的自適應化是一個潛在可能的研究方向,合理的引數配置在既定資料和模型基礎上會得到更好的實驗效果。
參考文獻
[1] Jacob Devlin, Ming-Wei Chang, Kenton Lee and Kristina Toutanova. 2018. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. arXiv:1810.04805[cs.CL]
[2] Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N Gomez, Lukasz Kaiser, and Illia Polosukhin. 2017. Attention is all you need. In Advances in Neural Information Processing Systems, pages 6000–6010.
[3] 宗成慶, 統計自然語言處理,第二版,2017
[4] 維基百科wiki,情感分析(sentiment analysis),https://en.wikipedia.org/wiki/Sentiment_analysis
[5] 維基百科wiki,使用者評論(Customer review),https://en.wikipedia.org/wiki/Customer_review
[6] BERT原始碼,https://github.com/google-research/bert
[7] Joulin et.al. Bag of Tricks for Efficient Text Classification, Association for Computational Linguistics, 2017