针对NLP技术,大神们刚刚展开过比较激烈的讨论——Yann Lecun论战Yova Goldberg,导火索是是一篇“对抗式生成自然语言的论文”。
NLP大神Yova Goldberg认为该论文所生成的“自然语言”和真实语言相差太远,充满语法错误,随后他直接把战斗升级成语言学家大战计算机科学家:“摆脱你们这帮搞深度学习的人,别再抓着语言不放,并宣称自己已经解决好语言的问题了。”“语言对我来说很神圣。”
对此,深度学习大神Yann Lecun自是有所不满:“这话竟然是出自Yova之口?他自己都在拿深度学习来做NLP研究!”其实,深度学习已在很多领域都有应用,迟早会渗透到NLP的。
这里我们不深究大神们谁对谁错,但从他们的争论中,我们至少能得出两点:首先是深度学习在很多方面得到了应用,事实上在NLP的各个领域,深度学习都有应用,其中比较成功的就有机器翻译。反过来,Yova Goldberg的表述,在我们看来也是有道理的,现在就认定深度学习能解决各种各样的问题确实说得太满了,有一些自认为是人工智能专家的人,其实还远远达不到这一水准。
我今天的主题是围绕NLP来展开的,其实它跟图像、语音这类智能感知领域不太一样,难点非常多,也是人类几千年的一些智慧或者文化的沉淀。
我的分享分为三个部分,主要是想介绍:
NLP在美团有哪一些应用场景
NLP在美团点评应用了哪一些技术
重点是NLP在美团点评的一些案例
我会选取几个比较有典型的案例给大家详细介绍一下,最后就是简单的总结。
NLP在美团点评的应用场景
第一个场景,其实是在美团点评的APP上面,每天都有非常大量的用户词。这个里面有一个文本,我们可以理解成是用户的一些需求,从中可以做块状分析,统一性分析等等。这对我们的搜索系统性能的提升有很大的帮助。
还有一部分文本,是商家的标题及详情页里面很多东西:比如地址、菜品等等。这也是我们比较关心的文本方面的一些东西,我们可以对它的品类做一些很好的识别。
第二个场景,大家应该看得出来,美团点评有着非常巨大的UGC数据,就是用户对商家的评论。这个数据能带来什么?比如说我们可以索取Tag,在用户做决策的时候提供信息帮助。还可以对评论做一些分类,大家现在看到的是比较优质的一些评论分类,事实上我们在后面做的时候,需要对分类做大量的工作,比如垃圾、黄反、优质等的识别。
除此之外,还要对评论做一些情感分析,比如说评价是正向、负向还是中性的等等。
另外,还有一部分是美团点评APP的一些新闻,比如标题的宣传、内容的理解、信息的抽取、POI的识别,等等。还有很多工作,比如整篇文章的分类,是分成美食还是影视等类别,其实也要用到NLP技术。
这几大类是大家能直观感受到的,其实还有非常多大家感受不到的,例如客服规划的内容,其实也是NLP需要考虑的。还有就是Crash日志,以及后台商家需要用到NLP的技术。
NLP在美团点评的应用技术
回头来看,刚才提到了NLP的一些使用场景,那NLP具体研究的是什么呢?
“NLP(自然语言处理)可以定义为研究在人与人交际中以及在人与机器交际中的语言问题的一门学科。”
人和机器交互比较好理解,比如说百度搜索、美团APP搜索,这就是人和机器通过搜索关键词进行交互,比如说对话系统,做一些问答或聊天,这个也指人与机器在语音上的交互。
人和人交际可能不那么好理解,就是借助于机器设备人和人的交际。我说几个例子:比如说输入法,用户通过输入法输入想要的东西,然后再反过来用输入法去做,这里面要用到非常多的NLP技术;还有你去国外旅游,可以用APP实时翻译语音,然后跟外地人进行一次很好的沟通,这也是人和人之间的交流,会借助于设备,这就要用到很多NLP技术,这里可能比较抽象。
下面我就列一下,我所接触到的NLP研究内容,其实还有很多我没接触到的。
具体来说,是词法短语方面的分词、词性标注、命名实体识别、组块分析等,还有句法语义、篇章理解、系统应用等,这些都属于NLP研究的一些点。
NLP有一个特点,就是很多技术不容易成为技术或产品,比如知识图谱或信息检索。还有像对话、机器翻译这些,其实都是独立的NLP应用场景与系统。另外,在语音识别合成、OCR图片方面也会用到NLP。
在感知方面,语音图像要更深层的理解它里面的内容,其实都离不开语言的表述。所以,未来的趋势就是NLP会和这些语境作越来越多的融合,也就是说它的应用场景会非常多。这些只是一些关键词,在美团,可能不需要把所有这些东西都研究一遍。
接着,说一下我们在美团所做的事情,主要是分三块来做NLP的一些研究工作:
最下层的NLP需要很多依赖,比如大量的标注数据,这是限制深度学习在NLP领域发展的重要一点。因为这种NLP需要大量的数据,这个可能需要有一些人(专门)来做。还有机器学习的一些算法和深度学习的一些算法方向,我们技术研发在这做了一套深度学习的框架。还会依赖于我们内部处理的一些平台,以及数据存储的一些基础,这是最基本的东西。
再往上就是NLP的一些基础技术,分成四个维度:句法就是整个分析和句法的,语意在已表示和匹配,篇章在文本分类方面做一些研究,这是一些基础的技术。
其实NLP还和应用系统做一些专门的研发或者独立产品,比如说对话、翻译、图谱等等。
NLP支持的业务场景非常多,如搜索、推荐、广告、配送客服之类。
上图标红的内容,我接下来会专门举例来讲,也就是我们做出来的案例,会具体到块状分析和评论分析、客服、语意表示和匹配的一些应用。
NLP在美团点评的应用案例
我们就进入第三部分案例。
先说一下Query分析。最下层词语,比如说搜索五道口附近的钢铁侠3,最上面就会做一些成分识别。
成分是根据业务制订的一些标准体系,比如说五道口是一个地址的核心词,附近其实是地址的修饰词,钢铁侠3其实是店的核心词,店可以理解成商家的产品,比如说电影院里面某一个电影。
再往下就是结构、主体和泛化可做的东西比较多,比如说做一些拓展,五道口可能有华联等等,这个现在是基于图谱来做的。
其实,这个用处非常多,比如说举个例子,就是望京华联搜这个可能出不来结果,但如果做一个扩展之后就可以很顺利的找到它想要的一些结果。
从图谱方面的一些东西可以很好的应用。从内容方面的话,比如说钢铁侠3有一些相似的电影等等,这个其实也是我们的一些泛化。
再往上会对Query做一些概念的识别,主要是电影。
以Query意图识别做为例子。说一个Query,我们对它的类别做一个判别,比如动物园门票就是旅游,全聚德和望京是美食。我们可以分成不同的类别,这些类别有美食、电影、酒店之类的,还有很多二三级的品类。
说到这个场景之后,其实大家脑子里就可以想到这个事情怎么来做。
Query意图识别可以转换成机器学习多分类的问题。机器学习对一个问题有一套标准的流程,做过机器学习的都知道。首先要对问题做一个分析,要分哪一些类别,根据现状制定一个目标。现有数据的支持是否有一些标注的辞典、数据等等,根据这个再来整理数据,比如说如果标注数据不够怎么办,后面会做一些介绍。特征工程需要抽取很多特征,特别是你要考虑到O2O的一些特点,需要做一些事情。特征做完之后再做模型方面的一些选择和分析,最后做一些线下的评估,然后在线上镶嵌看它的效果。这个流程是非常通用的。
摘出几点,有可能和其他地方不太一样的地方做一个介绍。首先就是训练样本怎么获取,这个其实比较难,第一种是人工标注,第二种就是自动标注。思路有几种,可以通过主动学习用模型学习,它的执行度比较高的,作为它已经有了,区分比较低的再来标一下,这样标注的样本量就非常多。还有Query的思想其实也是来扩充执行度比较高的样本作为它的标注数据。
第二个问题就是特征设计,我们会把Query的一些语义的特征,Query扩充的一些信息也会融进来。说一下不一样的,我们Query是有地域区分的,例如黄鹤楼,可能在北京搜更多的是一个酒店饭店;但如果在武汉搜的话,其实就是一个景点。模型尝试的话,(PPT图示)右边就是精准化简单的图,中间两层还做了文本分类的模型。
最后再说一下整体的流程。我们的分类目标就是定一些品类体系,用的话,可能就是在流量分发、统计到排序里面会用;现状有一些辞典的,解决思路其实就是想通过机器学习的方法来解决。数据准备刚才已经介绍了,特征工程也说了一下,最后用DN加很多点,在线上我们在旅游产品上线可以提升5%的水平。
案例2,其实刚才说的美团点评有很重要的数据就是评论。评论可做的事情非常多,比如说下面是我们需要分析的一些评论的数据,我们要做的一些图谱或者第三方数据抓取的一些数据。我们会对评论展开一些分析,比如说觉得电影不错,这个首先我们会对它做一个句子的切分做成一个短句,做成一个与各方面的区别。这个时候有一些区别对待,再来区别评论的主题,这个更多的在细密度的操作和对Tag方面的一些理解,包括Tag的抽取,Tag的聚类一些东西。再往下就是整个评论,比如说刚才说的一些评论,评论区的一些聚合,重点就挑评论摘要的分成做一个介绍。
在我们展示的商家里面,除了Tag之外,可以把用户评论里面的一些表述提取出来,辅助用户做一些决策。当然,这里面的话,不仅仅可以从评论数据来做,还可以从商家详情里面做一些表述,当然它的难点的话,就是摘要生成会遇到一些问题,具体怎么做呢?简单说一下,就是大概分成几个流程:首先对评论做语句切片,在线上展示的时候会有一定限制的。接着做一些情感分析,比如说识别出它的一些正向的评论,因为一般情况下,不会把负向的放里面,选取有代表性的句子,这个事情已经在我们推进的产品上面。
案例3,语义匹配模型。其实这个是用户非常多的,只要涉及到文本之间的匹配都会遇到这个问题。比如说Query和Query POI的相似度,比如说搜的是草莓蛋糕,需要和商家的标题做一些匹配;有一些输入的前缀做一些匹配,还会做一些Query的推进,比如说烤肉,这个是可以做到搜索广告等排序系统里面的。
这里分为四个阶段。从我的理解角度,标准化就是把一个文档分成稀疏的向量算出它的一些权重,匹配通过向量空间得到一个分值,当然矩阵分解也很明显,比如说同意方面的信息表述比较少,而且它的维度非常大。
如果把巨大的向量拼在一起就变成一个大矩阵,大矩阵我们是否能把这个维度降下来,然后再是引入语意方面的一些信息呢?实际上是可以的,把一个矩阵分成两个就可以得到它的一些解释,经典的是1990年左右做LSA方面的工作,存在一个问题就是同义词可以解决,但是多义词就没有办法了,而且得到矩阵的数值其实没有太多含义,范围比较大,这是在实际中不太好理解。
在2000年左右的时候,就相当于把LSA引入了多义词的分类。比如说一个文档有很多主题组成的,假设这个组成是符合一个多样式的分布,主题会有很多词组成,这样就可以通过图模型能够得到生成一个模型,能够估计出这三者完整主题词之间的一个参数。这个其实也非常多,一直到2014、2015年的PPT这些都是相关的,只不过最近被深度学习赶超了。
当然,做过研究的同学都知道,其实它的物理含义是比较明确的。有一个问题就是说它太粗糙了,你用在特征里面还是OK;但是如果靠它来做判决的话,是有非常多的问题。因为这个是概率模型,其实首先是假设到底合不合适,还有参数如何来调。
2013年左右就是代码发出来之后,就引爆了媒体方面的应用。如果从语义角度来说还是不太够的,虽然它有一定语义的信息在里面,实际上学习的目标是语音模型。我们其实非常多的是匹配,匹配这个东西的话,就和任务有。所以在2013年,微软的团队做了一系列的模型,比如说DSSM的一些模型,通过点击的信息来学习点击的一些模型,就把这种表示和匹配结合一起来学,这样非常有针对性,效果非常好。
我们这边也做了类似的工作,叫做Clicknet,现在已经在美团业务线上都做一些应用,效果非常好。实际上每个阶段的东西,在现有系统里面都有用。
我们说一下语意匹配的模型,我们做的分为三部分,下面有两层,一层是表示层,中间是学习层,就是设计一个模型来学习它的东西,到底做LP还是做各种非常复杂的东西,在这里面做一些工作,学习目标比如说你做分类,或者说做其他的一些东西,就看自己的一些目标。
这里面重点的话,我们设计的特点应该是在表示层,从语意角度会有语意方面,比如说Query语意的一些表示,还有很多业务方面的特征,比如说O2O的一些特征,比如说把位置确定和商家之间的距离,如果把它做一种表示和语意结合起来的话,效果就非常好。
还有一些可能把图像的东西也可以做一个合并,就中间的表示有哪一些方法呢?其实这个就是标准的一些方法了,比如说你对这个词,把它做一个加是OK的。还可以通过CNN,比如说一个窗口滑动最后得到一个结果,还有可以通过RNN得到一个结果,这也是一个表示,方法是非常多的。
学习这一块就有一个问题,就是说我们这种匹配语意的表示和各种英文特征如何做一个组合,其实是完全不同语意的信息,反映的东西其实不一样。有很多思路,比如说直接把它加在一起靠模型来学它的东西出来,还有一种把它直接放在这里面来,通过上面分析性考虑它的一些组合的情况。另外还有一个我们要做的一些尝试,就是通过Dase的思路,通过这个门自动来控制,到底有多少业务纤细如何到这利民来,有多少语意信息到这里面来做推断。比较简单的方式就是递减、递增的方式等。
On Ginger这个在搜索酒店方面有非常好的应用,后面讲旅游的时候会讲到这个模型,我们在系统里面有很好的应用。
这个东西其实还有很多玩法,除了语意匹配,其实做一些简单的变化就可以做很多的事情,比如说我们把业务特征加强,其实就可以做成其他的模型。这个语意弱化,可以把很多业务方受取的特征做很多域,通过这些加在一起做一个融合,再通过深层神经网络做一个预测,这个就变成了其他的模型。
还有一些可能是跟语意没有关系的,我们就是想做一个分类,我们把很多的业务特征展开做一个分类,然后你再做一些调整的话,这是我们2015年做的一个模型,其实2016年有两个比较好的模型,它是把输入的特征分了很多域,每个域有自己的特征,把FM的一些权重做一个初始化,再往上经过各层得到一个预估,其实他们已经把域的信息引进来了。
还有一个就是在Google在2016年推荐的模型,这个也是把特征做了一个划分,哪一些适合做Depe的特征,分成两类,比如说时效性比较强的特征,或者统计的特征可以把它放在这里面直接影响它的效果,有一些语意层面的东西,需要很层次的网络理解它的组合,可以把它作为Dest组合,这个思想也很像。
当然,看了这个之后,其实还可以想象一下,为什么它只是连中外层,其实中间某一层直接连到最外层,其实这个就是能把很多中间抽象的信息做一个比较好的组合,其实里面的玩法非常多。
刚才说了,ClickNet在美团里面有很多的应用,比如说我们和XGboast和TF实现的ClickNet对比,ClickNet和线性模型对比,很多是远远比它好的,也就是说ClickNet在排序或者分类上面还是非常好的一个项目。
案例4,基于语意表示的Crash在线聚类。其实美团点评会出来一些Bug什么的,后台会搜集这样的信息。如果数据量非常大而处理人手不够,我们想做一些自动归类的处理,这个是处理过的一些信息。
有一些难点大家可以想象一下,Crash两端的相似度如何来计算,另外就是说,在线做聚类其实是一个动态的,因为随着版本的更新,可能以前的Bug解决了,新版本上线之后有可能有新的Bug出现了。所以说这个东西其实还是有一点难度的。
我们的思路是什么呢?可以简单的说一下,一个就是基于DNN语音模型学习Embedding然后来算它的相似度,大家写过代码的都知道哪一个地方可能出问题了。还有就是业务代码和系统代码,比如说美团开发APP可能会调系统级的一些代码,系统级的代码出问题的可能性肯定比我们自己业务代码小很多,这个其实可以做一些区分对待的。
有了这些之后,我们其实可以做一些聚类,能算出它的一些中心,有了这些中心之后,我们会在线的做一些分类,这个策略可能就特别复杂了。
案例5,智能交互。智能交互我们选几个例子就是客服,我们负责的小美机器人这事情。先说一下大的背景,我们美团点评服务的对象很多,不仅仅是用户,还有内部的一些员工,商家之类的。员工的话,我们内部其实有很多的东西,我们也做了很多及其放任的一些事情及可能外弦人看不到。商家也会有一些客服的东西。
对用户除了APP提供一些搜索推荐之外,其实容易被忽略的在售前其实正在研发的外卖交互的机器人。还有一个就是售后,大家拥有的服务之后,可能会遇到各种各样的问题。基于这样的问题,我们也会做一些客服,就是针对客服方面的一些事情,因为每天接到的对话数量非常大,人工的成本会很高。
说一下小美机器人。小美机器人是人工客服,一台服务器能服务几个人,响应非常快,有一个好处就是可能问题的发现是很方便的。通过分析现有的问题,其实问题都很像。举个例子,比如说退款未到帐的原因,为什么退款了还没有到帐,其实这些表述就是为什么退款了还没有到帐,但是人口与的表述是千差万别的,基于这一点我们可以做一个模型来做客服的事情。这个可能目前藏的比较深了,APP客服里面藏的比较深。
研发有两条系统,一个是对内的运营平台,这个对外的客服系统。其实用户会输入一个问题,帮助我们做一个问题的需求识别,这个会用到一些支持。其实也蛮简单,就是提取出一些我们感兴趣的一些点就OK,根据识别的一些东西之后我们会做优质问题的发回。其实三个问题讲的都是一个问题,假如说我们有一个问题标杆的话,我们只要做问题之间的相似度匹配其实就可以达到目的。
有了优质的内容,优质的答案对应也就出来了,因为这个是配套的,通过运营平台会去编辑有了标准答案,把这些答案做出来之后会对答案做一个排序,有比较好的答案之后再往返回给用户。我们运营平台的话,知识的编辑还有就是内容报表的一个生成,大家可以看到对话解决的一些情况,这个目前解决率超过80%。
总结
我们回顾一下今天我们讲一下NLP的应用场景,Query商家,用户大量的UGC评论、客服问答等等很多产品都需要用到NLP的技术,很多点评NLP有一些基础,还有就是NLP业务场景的应用方面的一些技术。
第三部分就是讲了5个比较有代表性的案例,其实还有非常多做的事情,这个Query就是代表分析做了意图识别的介绍,商加评论我们选取了商家的摘要,在语义匹配这一块我们介绍了一下语义比配的一些模型,语义表示这一块我们介绍了Crash聚类,最后就是智能交互里面举了一个例子就是客服机器人怎么做的。
媒体合作请联系:
邮箱:xiangxiaoqing@stormorai.com
评论列表