自然语言处理在电商的技术实践

GitChat 作者:李睿
原文: 自然语言处理在电商的技术实践
关注微信公众号:「GitChat 技术杂谈」 一本正经的讲技术

【不要错过文末彩蛋】

这几年,电子商务发展得非常迅猛,无论是在国内还是国外,都大有赶超实体店的势头。作为一个在美国主要的电商网站之一的eBay混了n年的“数据科学家”,我给大家分享一下自然语言处理Natural Langrage Processing,缩写为NLP)在eBay的技术实践。

eBay用到自然语言处理的领域

在电商这个领域,我们处理的对象不外乎是卖家提供的商品和买家的需求。商品是由文字描述和图片构成的,而需求则通常是用文字表达的(搜索关键字)。eBay每天都有数亿的新商品上架和数亿次的搜索,产生的文字数据是海量的。因此,eBay对自然语言处理(NLP)的需求是不言而喻的。那么NLP都影响到了电商的哪些领域呢/p>

NER实例

这是一个简单的商品标题“New Apple iPhone 6s 16GB AT&T Locked Space Gray Smartphone”。NER会干什么呢它要尽可能地把这个标题上每一个单词都分成某一个类别(或者打上一个标签):New是一种商品的新旧状态(condition);Apple是一个品牌(brand),iPhone 6s是一个型号(model),16GB为一个内存容量(storage capacity),AT&T unlocked为手机供应商(carrier),Space Gray是颜色 (color) ,Smartphone是产品类别(type)

目标明确了,那我们来谈一谈怎么做ER本质上是一个分类问题,是一个从单词到有限类别的分类问题。分类问题首先要提取单词的特征矢量(feature vectors)。传统的NER通常会提取以下的特征:这个词有几个字母,里面含有一些什么样的字母组合,它的前后是否有某些特定的介词,它是否出现在句子的开头或者结尾,等等。而现在新的NER会用开源词向量(比如Google的word2vec),或者用专业语料训练的专业词向量(比如用大量eBay自己的商品标题自行训练的)作为特征矢量。定义好这些特征矢量之后,就可以用训练样本训练一个分类器。那么分类器可以是简单的模型,比如逻辑回归甚至线性回归,也可以是复杂的模型,比如现在很火的神经网络。

NER的最大应用就是帮助机器翻译。当NER对上面这个标题进行了理解之后,会根据一些规则进行翻译,比如品牌“Apple”和型号“iPhone 6s”就不需要翻译,而“Space Gray”这个描述颜色的短语就会被翻译。

NER还能够提高搜索准确度。举个例子,在英国的网站,有人输入搜索关键字“Orange iPhone”,但其实他并不是要搜索一个橘色的iPhone,而是要搜索一个被无线供应商Orange所绑定的iPhone。那么NER就能在这个场合帮助我们正确理解每个单词,从而能够把Orange作为无线供应商来进行匹配,而不是匹配橙色的手机。

为了更好地描述每类产品,我们每个类别下都会有一些辞典,它们定义了这个类别的关键属性。比如手机类别里就有品牌(苹果,三星,华为 等),型号(iPhone7,S8, P10 等),颜色(白,黑,玫瑰金 等),内存容量(16GB, 32GB 等)等。这些词典过去都是人手工编辑的,这是一个效率很低,而且容易出错的方式。那么怎么样能够高效准确地增加词典里面的内容就是NER可以施展拳脚的地方。打个比方,iPhone7去年出了一款红色的。红色原本是不在手机类别的颜色词典中的,而NER却从很多新商品标题中提取了这个颜色。加入它到颜色之后,我们能够给卖红色iPhone的卖家提供红色的选项,从而加快他们打广告的流程。同时我们也能够更加方便买家对产品进行细分,找到自己心仪红色手机。

分类器

正如前面提到的,搜索引擎和机器翻译是被各式分类器支撑的。下面这张图里介绍了一些电商中用到的典型分类器:

CatReco实例

eBay美国网站有一万六千多个类别,如果说随机推荐的话,准确度是很低很低的(

那最早的称为Histogram+Na?ve Bayesian的版本是什么原理呢们虽然有一万六千个类别,可是这些类别的分布是非常不均匀的。可能有10%的商品都是手机,但却只有0.01%是邮票。这个算法就是利用了这个不均匀性。当我们根据实际商品分类画出类别柱状图(histogram)之后,每一个类别有会对应一个概率,于是,我们根据这个概率分布随机地把一个新的商品分到这些门类下去。比如,随机给10%的商品推荐手机类别,随机给0.01%的商品推荐邮票类别。这个算法听上去too simple too naive对不对它却上有差不多50%的准确度。

后来大家觉得这个办法实在是太土了,就做了一大步改进,用K近邻法(K Nearest Neighbor,缩写为KNN)。这也是业界很常用的一个算法。它的原理是什么呢你输入卖的产品的标题之后,它就被变成一个搜索关键词,然后利用搜索引擎找到跟你这个产品类似的标题。比如搜索引擎找到了最相似的一百个商品,然后看这些产品分属于哪些类别,占最大商品比例的类别就是推荐结果。这是一个很简单却非常行之有效的办法,它把分类准确度从50%一下提高到了73%。

这个版本的算法用了好多年,直到2015年的时候我们在这个基础上做了一个简单的改进。刚才讲到用KNN找到了一百个相似商品。假设它们分属于10个类别,那么面对这10个类别,我们不再简单地根据哪个类别的商品多就用哪个类别,而是增加了一层逻辑:用原本属于这些类别的大量商品训练出每类的统计语言模型,然后用输入关键字跟这些模型计算相似度,重新对这10个类别重新进行排序,推荐排名最高的类别。这一步简单的做法,就使得准确度从73%提高到了81%。统计语言模型是NLP的一个重要的技术,它能够简单有效地描述词语的上下文关系,时常被用在文字分类的应用中。一会儿我会讲统计语言模型的具体细节。

去年,在神经网络兴起之后,我们也想,要不要试一试神经网络呢是,我们做了一个卷积神经网络的模型,把准确度从81%提高到了90%。卷积这项技术最早是应用于图象的,是用来抽取图象特征的(均值,边缘等)。可同样的思路后来也可以被应用于文字上:Yoon Kim 2014年在EMNLP上发表了一片很好的一篇文章,具体算法大家可以参考这篇文章(见下图)。

Product/AccessoryBundleClassifier

这里有三个商品。如果我们看用长方形标出的文字,我们看到这三个商品都有共同的关键字:奥林巴斯,E-M5(型号),lens(镜头)。可是它们的价格却差很多,有1099块的,有100多块的,还有999块的。为什么呢为第一个是套装:机身加镜头,第二个是镜头本身,第三个仅仅是机身。不难想象,完全不同的东西,价格是一定会有差别的。

那我要怎么去用我们的分类器识别出他们分别是商品本身,套装,还是附件呢在我来给大家具体讲一下细节。

Prod/AccessoryBundleClassifierDetail2

这是一个统计语言模型在文字分类中的典型应用。这时有些同学会问:那为什么不用单词本身建模呢嘛要多此一举因是这样的。不同类别(手机,电脑,照相机,等)都需要这样的模型,它们每个类别的训练样本都不多,训练不出很好的语言模型。而符号化之后,它们的语言结构就变得类似,这样就可以把不同类别的训练样本合在一起训练一个统一的模型,既简单又有效。

总结

刚才我讲到了命名实体识别,各种基于NLP的分类器在eBay的实践,希望能起到一个抛砖引玉的作用。

我相信这些方法不仅可以用在电商领域,也应该可以拓展到其他的领域,比如说在电子支付,银行信贷,保险这些行业。比如反欺诈其实就是一个简单的分类问题,比如某人的用户的行为是正常还是不正常行为。另外还有机器翻译,也是完全可以应用于非电商的领域,比如说前段时间碰到新华社的朋友,我很好奇他为什么对NLP感兴趣,他说新华社需每天要把大量的外文稿件翻译成中文。可见NLP技术已经渗透到很多传统非技术领域了。

但凡有文字处理需要自动化的地方,都需要用到NLP技术,所以掌握了些基本技术,你就可以应用在各行各业里边,解决各种实际问题。


实录:《李睿:自然语言处理在电商的技术实战解析》


【GitChat达人课】

  1. 前端恶棍 · 大漠穷秋 :《Angular 初学者快速上手教程 》
  2. Python 中文社区联合创始人 · Zoom.Quiet :《GitQ: GitHub 入味儿 》
  3. 前端颜值担当 · 余博伦:《如何从零学习 React 技术栈 》
  4. GA 最早期使用者 · GordonChoi:《GA 电商数据分析实践课》

这里写图片描述

来源:软件供应链

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年8月22日
下一篇 2017年8月22日

相关推荐