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

深圳湾 2018-02-27


本文由 【FMI飞马网】原创,原文链接:dwz.cn/7vaHuI

由飞马网主办的“FMI人工智能&大数据高峰论坛”,大会上各位专家带给我们的关于人工智能的深深的思考都还在继续......

在大会上,来自eBay的李睿老师为我们详细介绍了NLP(自然语言处理)在eBay的具体应用及其运用场景。

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

李睿

李睿,eBay Inc. Tech Lead数据科学家,项目负责人,负责研究与开发电子商务平台上用到的分类识别算法。熟悉文字、图像处理、分类的各种经典算法。

NLP——搜索的支撑

在演讲中,李睿给我们介绍到,作为电商企业,搜索功能是其重中之重。但是搜索由什么支撑呢?

答案就是自然语言处理。除此之外,还有一些其他的东西在支撑,可以保证eBay在世界20多个国家都能够有网页,能够说不同语言的人买东西,使得我在美国卖,在俄国的买家能够用俄语看到我们的商品,能够用俄语进行搜索,这背后就是机器翻译在支持。

那么问题来了:怎样使语音结构化,来提高搜索准确率?

李睿老师给我们举了个例子:由于不同地区的文化差异,有些搜索关键词在不同的地方含义不同。比如在欧洲有人输入Iphone orange,他不是要搜索一个橘色的Iphone,他是要搜索叫orange的供应商所绑定的Iphone。这里面需要通过质问识别,来识别出用户在这个场合,这个词到底是什么意思?只有正确的进行了这样的理解之后,才能够准确的进行搜索,准确的找到用户想要的东西。

搜索跟分类器

用户在eBay上,是想要买新的还是旧的?搜索的出来的卖家产品是新的还是旧的,怎样做正确匹配?怎样针对不同的用户群去做个性化推荐?这些都是分类器帮助个性化搜索。

分类器很大程度上能够帮到机器翻译,就像上文提到的orange,要不要翻呢?要不要从英语翻到德语呢,是需要分场合的。如果它被识别成颜色,那就应该翻译;如果识别成一个手机供应商,那就不需要翻译。同样的也是,如果识别出来这个词是表示一个品牌,它也不需要翻译。所以分类器背后,NER是一个很重要的组成部分。

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

NER的作用与目的

说到这里,相信会有人问:NER的作用是什么呢?目的是什么呢?在演讲中,李睿老师为我们做了很好的解释。比如你在eBay上要找一个关键词,它要把这个标题上每一个单词,尽可能的把每一个单词,都分成某一个列别,打成一个标签。你比如说New,他需要把它标成一个Condition,Apple是一个品牌,iPhone6s,它希望能够把它识别成model为,16GB,能够识成容量,ATT,Locked,绑定的就是手机供应商,SPACE GRAY是颜色,Smartphone是类别。

传统的NER的做法很简单,每一个词就是一个对象,这个词有多长,里面含有一些什么样的字母的组合,以及他这个前后文,它出现在句子的开头或者结尾,它里面是几个词,有了这些特征之后,就可以训练一个Classifiers。

后来,神经网络兴起之后,大家就用词向量,使得这些矢量可以代表他的语意,而且矢量还可以重新加减,后来就用词向量,发现效果得到了非常大的提升。当然,这是用谷歌自己的词向量,而对于电商,因为它是用谷歌的New训练出来自己的词向量,不一定适用于电商,后来我们就把自己的商品作为训练数据,训练出了自己的词向量,性能得到了进一步的提升。这几年,大家都做神经网络,神经网络的perform会更好,我们训练出了自己的神经网络,perform得到了进一步的提升。这些NER能够在各个领域对用户体验进行帮助。

eBay的类别推荐系统演进

据李睿老师介绍,eBay在美国的网站上有一万六千个分类,所以对于C2C的用户来说,有时候自己的商品会放在错误的分类里面,影响买卖。而通过类别推荐,可以将用户的商品放在正确的门类中。

尽管有类别推荐,但还是会有一些偷懒点错或者故意点错的现象出现。还有一些商品的评价,有一些是真正的评价,有一些是一些无关的脏话或者其他等等,对于这些的情况都是需要系统自动分类出来。

李睿老师给我们举了eBay的例子,eBay最早的推荐版本,Histogram版本非常简单。因为虽然eBay有1万6千个类别,大家类别的分布是非常不均匀的,10%的商品都是手机,手机事实上是eBay卖的最好的一个类别。可能有0.0001%是卖一些纪念品或者什么样的,分布非常的不均匀。当你画出柱状图之后,每一个类别有一个概率,他根据这个概率把一个新的商品分到这个门类下去。实际上有50%的准确度。

后来大家发现这个办法实际是太土了,就做了一步改进,这也是用的很多的算法,这也是NLP里面用的很多的一个算法,他的原理是当你进行一个,你输入卖的产品的标题之后,它把标题做一个搜索关键词,利用搜索引擎找到跟你这个产品类似的标题,比如找到一百个产品或者五百个产品,他就看这些产品分属于哪些类别,从50%提高到73%的准确度。但因为我们的类别会经常改,每个季度都会有一些增加或者删减,他会自适应的适应类别的改变。但是它的坏处也是,刚才那些放错了类别的商品,会使得准确度下降。

于是在2015年的时候eBay就做了一些改进,比如说一百个相似产品里面,他分属于10个类别,这10个类别,不能简单的根据哪个类别的商品多就用哪个类别,而是再加了一层逻辑,用原本属于这些类别的商品,就是一些比较大的,比较多的数据量做的一个统计语言模型,这个也是NLP的一个重要的技术,统计语言模型,做了一个model之后,重新对这10个领域进行排序。这一步简单的做法,就使得精确度从73%提高到了81%。这是一个很简单的算法。

同样的,神经网络出来之后,神经网络兴起之后,我们也想,神经网络会不会使得它有更好的性能。我们做了一些卷积神经网络,大家以为,最开始的时候主要是应用于图象的,卷积,对图象上抽取的特征,同样的思路,也可以应用于文字上,做了之后发现效果果然不错,从81%提高到了90%的精确度。但是,这个算法也有问题,有两个问题,第一你需要很大的宣传样本,第二还有一个问题,就像我们刚才提到的,我们的类别,每个季度都在变,他变的不多。

在演讲中,李睿表示,她的理念是,能用简单的就不要用复杂的,尤其在工业界里面越复杂系统越容易出错。

怎么去用我们的分类器在背后能识别出他们分别是商品本身,或者是套装,或者是附件呢?具体的做法是这样的:

比如来了一个标题,我把它符号化,首先这个标题叫做Red leather case for iPhone7。符号化之后,因为是你对一个词典,Red不在我这个词典里面,我就把它标成星号, Leather case我把它标成A,for是相当于一个连接词,就用数字4来替代,Iphone7是一个型号,它也是一个产品,所以用P,produce。有了这个之后,我就把它作为一个统计语言模型,说白了,就是算一个概率,第一个字符是星号的概率,第二个字符是A的概率,第三个字符是4的概率,第四个字符是P的概率,做了语言统计模型之后,大家如果熟悉统计语言模型的同学就应该知道,其实他要考虑上下文,他不能简简单单的只看当前词或者当前符号的概率,他希望能够有前后文。

统计语言模型里面就有所谓的,就是我只关心前一个词,两个词的模型,给定前一个字符是A,下一个字符是4的概率。有人可能觉得这两个词不够,我要三个词,前面是星号A,下一个字是4的概率,这是最简单的模型的概念,有了这个统计模型之后我们就可以训练一个分类器了。

但为什么要做符号化这一步呢,很多统计语言模型都是用词本身,好处是什么?同样的模型,可以用在手机的类别下,可以用在照相机的类别下,可以用在电脑的类别下,它结构比较相似,你符号化之后,它会用同样的模型适用于不同的情况,这就是它的好处。这就是统计语言模型在NLP,它是NLP的技术,这是分类器的应用。

最后,李睿老师表示,技术是共通的,就像NLP、分类器、机器翻译等技术,不只是运用于电商,也能拓展到其他领域。所有语言处理,文字处理背后,其实都是NLP的各种技术在支撑。明白了这个(NLP)自然语言处理的基本技术,你就可以应用在各行各业里边。

最后,附上李睿老师现场演讲的Q&A:

Q:请问符号化的过程是一个虚拟的过程还是说是人工标注的呢?

A:你可以做人工标注,我们最开始是做的人工标注。当然你需要有一个词典,你要知道在手机类别下,我有哪些关键字是能够被标注的,我知道Iphone7在我的字典里面,所以我能把它标注成,有些是我的词典里面没有的,我就不标。所以这个词典的构造是人工构造的,当然你可以想象,用NER的技术也可以做一些标注,可以做绿标注,然后人工的去调整,都是可以的。

Q:请问要快速的对一个物品进行分类的话,如何保障效率呢,是只是离线的吗?

A:没有,这个当然是线上的,神经网络它训练的时候肯定是要变得更长,可能训练好几个礼拜,都有可能。关键是你在运用的时候,你在对新来的商品进行分类的时候,你不需要训练,你只是用这个模型做一个估计。这一步,神经网络时长是很快的,贝叶斯也很快,神经网络运算稍微复杂一点,但是也都是在几十毫秒的量级,不影响实时性的。

Q:你好,我想问一下,刚刚您讲到上下文处理问题,能再讲一下吗?有没有一些办法或者算法?

A:上下文,有几个办法,一个办法就是所谓的,就刚才提到的,因为他用这个条件概率,前面出现一个词,后面出现另外一个词,事先用训练样本把这些概率算出来,之后你来了新的样本的时候,如果发现了同样的前后文组合,就会把这个概率算进去,这是一种做法。

还有一种做法,这就是所谓的统计语言模型,它是一个马尔可夫链的概念,他是以一个词一个词为单位,就看在你的文章中出现这个词的概率有多少,你来的新的样本如果也出现这个词就把这个概率用进去,他把两个词的短语或者三个词的短语做成一个单位,把这个概率也算出来,到时候,当你的新的样本里出现了两个字的短语或者三个字的短语的时候就把这个概率用进去,各种方式都有,看你的训练样本的复杂度来决定。

Q:有了统计语言模型之后,是怎么来计算套装产品这个过程的?

A:有几种做法,统计语言模型做出来之后,条件概率都算好了,你来了之后,当然我们的做法是这样子的,你在训练的时候,你就把它切成各种,你把所有各种各样的组合都挑出来,有一个A4P,这种挑出来之后,你就统计出他的概率,新来的这个样本里边,如果也出现了A4P,你就把这个概率存在里头,你就算出,当然有这个概率,出现其他的概率,还有条件概率的模型,把它存在一块。

相关推荐