Press "Enter" to skip to content

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检测。在电商领域,商品的评论是电商平台的最重要的数据之一,它是用户选购商品的重要参考对象。京东零售下的“评论”、“问答社区”、“京麦”、“京东便利店”等几大业务线每天都会产生大量的垃圾文本,它们严重影响了消费者的购物体验。对站内的垃圾文本类型进行梳理,发现了如下几类垃圾文本类型:

 

 

    1. 违禁类型:涉黄、辱骂、广告等违禁类型的文本:

 

 

 

 

图 4 垃圾文本–违禁类型

 

 

    1. 无意义凑字数类型:

 

 

 

图 5 垃圾文本-无意义凑字数型

 

 

    1. 古诗词:

 

 

 

图 6 垃圾文本-古诗词

 

 

    1. 故事段子、流行语:

 

 

 

图 7 垃圾文本-段子类型

 

我们将上述垃圾文本识别当成一个文本分类任务来进行处理,通过训练得到的文本分类模型来实现每天的垃圾文本的检测、拦截!

 

在相同的数据集的条件下,基于BERT微调整训练的模型与基于FastText训练得到的模型相比:在 2类(垃圾文本)识别上,在不牺牲精确率(precision =92%)的前提下召回率得到很大提升(recall:84%—>94% )。所以相应的,在1类(正常文本)识别上,在牺牲少量召回率的条件下,精确率率也得到提升91%—>97%。所以, 基于BERT预训练、微调训练的方式,在数据量一定的条件下,可以将BERT训练模型已经学习到的有用的信息迁移到我们的任务中并且取得不错的效果。

 

基于 FastText的 检测模型效果(分词、去停用词等数据预处理):

 

Tab1. FastText的违禁文本检测

 

 

PrecisionRecallF1
1(正常文本)0.910.970.94
2(垃圾文本)0.920.840.88

 

基于BERT检测模型 效果(预训练、微调整):

 

Tab2. 基于BERT的违禁文本检测

 

 

PrecisionRecallF1
1(正常文本)0.970.960.97
2(垃圾文本)0.920.940.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%
Xgboost96.8%

 

从数据表现结果来看,在同样的情况下使用BERT-Base, Chinese模型比Xgboost精度提升3个点。除了模型差异外,也可能与抽取数据类型、数据样本大小也有关系。

 

— 商品长标题序列标注–

 

在电商领域,商家为了提高销量、增大搜索命中率,常常会在一个商品标题中堆砌多个相关产品词或者偷换产品词。产品词堆砌一方面会对搜索准确性、场景化推荐等任务产生负面影响,进而影响用户体验。另一方面会在构建基础数据 (如商品知识图谱)时产生负例知识,故需要根据商品标题识别出核心产品词。举例如下:

 

对于该商品标题而言,核心产品词任务目标是需要将标题 “美佰(MEIBAI)手机键盘OPPOr15是用于安卓手机vivox20手机壳华为鼠标键盘保护套 粉红色+有线鼠标”中的手机键盘进行特殊标记。

 

基于部分类目的数十万数据集,我们划分成训练集和验证集、测试集命名为train.csv, dev.csv, test.csv。数据实验结果如表5:

 

Tab5.核心词抽取模型效果,BERT (based-chinese)

 

 

PrecisionRecallF1Suport
POW0.94620.95420.95023319
Avg0.94620.95420.95023319

 

在部分类目上的实验表明,基于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

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注