本文整理自阿里巴巴iDST自然语言处理部总监郎君博士的题为“NLP技术的应用及思考”的演讲。本文从NLP背景开始谈起,重点介绍了AliNLP平台,接着分享了NLP相关的应用实例,最后对NLP的未来进行了思考。
背景介绍
阿里巴巴的生态系统下面有很多的计算平台,上面有各种各样的业务层,最中间是买家和卖家之间包括销售、支付等等之间的关系,外面建了一圈从娱乐到广告到金融到购物到物流等等各方面这样一个生态,中间有非常多的数据能够关联起来,所以对于阿里巴巴而言,这个图可以非常简练的概括我们在做什么,中间是最重要的数据,下面数据包含了最核心的也是阿里巴巴最早起家的来自于电商的数据,所以电商对于我们而言是非常重要的,后来又扩展出了金融、菜鸟物流、健康和娱乐,比如我们有大文娱事业群,去做了优酷土豆等各种各样的数据,数据当中包含了很多的文本。
比如阿里的电商平台里面有数十亿的商品,每一个商品都包含详细的标题、副标题、详情页、评价区,甚至问答区,这里面的信息构成了一个非常丰富的商品信息,还有上亿的文章,阿里在两年前开始进入内容时代,比如现在各种各样的内容营销、直播还有一些问答的场景圆桌等等,文章里面可以包含各种各样的标题、正文和评论等大量的数据,这只是电商的例子,还有金融、物流、健康、娱乐,加在一起还会有海量的数据,就会孕育出大量文本处理的工作需求。
自然语言处理是什么呢?
- 语言是生物同类之间由于沟通需要而制定的具有统一编码解码标准的声音(图像)指令。包含手势、表情、语音等肢体语言,文字是显像符号。
- 自然语言通常是指一种自然地随文化演化的语言。例如英语、汉语、日语等。有别于人造语言,例如世界语、编程语言等。
- 自然语言处理包括自然语言理解和自然语言生成。自然语言理解是将自然语言变成计算机能够理解的语言,及非结构化文本转变为结构化信息。
- NLP的 四大经典“AI 完全 ” 难题:问答、复述、文摘、翻译,只要解决其中一个,另外三个就都解决了。问答就是让机器人很开放的回答你提的各种各样问题,就像真人一样;复述是让机器用另外一种方式表达出来;文摘就是告诉你一篇很长的文章,让你写一个100字的文摘,把它做出来是非常难做的;翻译也是很困难的,英语思维方式和中文思维方式转换过来,中间会涉及到很多复杂的问题。
阿里巴巴需要什么样的自然语言处理技术?
阿里的生态是非常复杂的,我们不能用一个简单的自然语言处理技术去解决所有的问题,以往自然语言处理是比较简单的,甚至一个词表放上去就解决所有问题了,随着电商生态的扩展,就需要非常复杂的技术,所以我们需要完备且高性能的自然语言处理技术,高性能体现在算法精度还有执行效率,IDST的定位如下:
-引领技术前沿-赶超市场最佳的竞争者,完备和完善AliNLP平台的技术体系及服务能力;
-赋能核心业务-帮助核心业务快速成长,寻找和解决业务方的最痛点;
-创造商业机会-创造看似不可能的商业技术,深度理解语言,深度理解需求,变革产品体验。
AliNLP 自然语言技术平台
图为我们整个自然语言处理平台最核心的框图,底层是各种各样的基础数据,中间层包含基本的词法分析、句法分析、语义分析、文档分析,还有其他各种各样跟深度学习相关的一些技术;上层是自然语言处理能够直接掌控和变革的一些算法和业务,比如内容搜索、内容推荐、评价、问答、文摘、文本理解等等一系列问题,最上层我们直接支持大业务的单元,比如商品搜索、推荐、智能交互、翻译。商业翻译和普通机器翻译是不一样的,还有广告、风控、舆情监控等等。这个层次结构是比较传统的方式,为了让我们平台具有非常好的落地能力,右边有一列平台工程,专门解决如何让算法能够快速的用到业务里面去。
将核心框图细化,底层有各种各样的数据,比如实体库、源学辞典、词性标注库、词性关系库、句法树库、情感分析标注库,还有情感词典、资讯库、图谱等等。这些是词法分析,包括分词、词性、实体识别,拼写检查等一些基础的组件,句法分析有结构句法分析、依存句法分析、语义分布表示等等,还有语义分析,包含词义消歧、语义角色标注、主题模型、行为表示等。还有文档分析,比如普通的文档聚类、文档分类、事件挖掘、层次聚类和意图分类,其他部分就是我们尝试比较多的偏深度学习的一些自然语言算法。
右边的平台工程我们做了很多尝试。团队经过几年的发展,不停的去反思如何把我们的技术快速的跟业务对接起来,经过不停的尝试之后,我们做了很多的可视化、需求管理、用户中心、监控中心、系统运维,还有自动的标注平台、训练平台、评测中心等等,经过一系列的封装,才会使得平台越来越完善。
图为阿里AliNLP系统架构图,左边是算法模块,包括知识库、语料库、算法模型,中间是服务化平台,比如我们的服务分为在线服务和离线服务。离线服务有阿里巴巴最大的计算平台ODPS,里面做了很多这方面的UDF操作,在线有HSF和HTTP服务,可以很好的对接各种各样的相关服务方;中间有用户中心、监控中心、测试中心、系统运维等比较复杂的一套体系。右边是我们对接的一套生态平台,上面可以通过我们的接口层直接对接各种各样的应用。我们迭代了很多轮才出现这样的结构,现在大概支持30多个业务方,平均每天的调用量在数百亿规模。
AliNLP平台核心价值
AliNLP平台核心价值就是解耦。我们希望通过做这样一个平台,去面对整个阿里巴巴的生态系统:
- 算法超市。我们希望平台是NLP算法超市,业务方可以清晰看到分门别类的NLP算法;
- 工程小白。我们希望平台解决一切工程问题,算法工程师可以是工程小白只需专注算法研发;
- 系统生态。对于系统,以此为中心形成一个系统生态体系,从各个环节切入服务NLP算法和业务;
- 服务底线。对于产品运营,平台只做底层模型的服务输出,不直接对接业务。
经过各种各样的迭代、打磨、思考、反思,5月初会发布2.0版本,我们希望做持续的改进。我们平台中最核心的三个概念如下:
1.模型:最基本的算法逻辑复用单元,如果用算法超市的概念解释,模型就是原材料,模型是算法工程师的主要产出成果;
2.方案:是多个模型的组合,用于真正解决某一方向的具体问题,类似于待售的超市商品。方案是业务、算法的结合之处,我们负责“算法售卖”的同学会应用手头已有的模型通过不同的组合配置,产生出不同的商品供最终业务方的用户使用;
3.场景:是多个方案在线上部署的最终形态,是最终服务的提供者,是业务方真正使用我们的算法大礼包的地方。按目前的设计,不同的业务方可以在相互隔离的多个场景中使用算法服务。
只有理解这三个概念,才会知道平台怎么去很好的使用。
NLP算法举例
下面对我们的算法做一些比较简单的举例。
1.词法分析(分词、词性、实体):
–算法:基于Bi-LSTM-CRF算法体系,以及丰富的多领域词表
–应用:优酷、YunOS、蚂蚁金服、推荐算法、资讯搜索等
2.句法分析(依存句法分析、成分句法分析):
–算法:Shift-reduce,graph-based,Bi-LSTM
–新闻领域、商品评价、商品标题、搜索Query
–应用:资讯搜索、评价情感分析
3.情感分析(情感对象、情感属性、情感属性关联):
–算法:情感词典挖掘,属性级、句子级、篇章级情感分析
–应用:商品评价、商品问答、品牌舆情、互联网舆情
4.句子生成(句子可控改写、句子压缩):
–算法:Beam Search、Seq2Seq+Attention
–应用:商品标题压缩,资讯标题改写,PUSH消息改写
5.句子相似度(浅层相似度、语义相似度):
–算法:Edit Distance,Word2Vec,DSSM
–应用:问大家相似问题、商品重发检测、影视作品相似等
6.文本分类/聚类(垃圾防控、信息聚合):
–算法:ME,SVM,FastText
–应用:商品类目预测、问答意图分析、文本垃圾过滤、舆情聚类、名片OCR后语义识别等
7.文本表示(词向量、句子向量、篇章向量、Seq2Seq):
–Word2Vec、LSTM、DSSM、Seq2Seq为基础进行深入研究
8.知识库
–数据规模:电商同义词,通用同义词,电商上下位,通用上下位,领域词库(电商词、娱乐领域词、通用实体词),情感词库
–挖掘算法:bootstrapping,click-through mining,word2vec,k-means,CRF
–应用:语义归一、语义扩展、Query理解、意图理解、情感分析
9.语料库
–分词、词性标注数据,依存句法标注数据
有这样一句话叫“我要买秋天穿的红色连衣裙”,这句是电商领域中比较常见的,词法分析结果会把中间“我要”拆开。分词要分的很准,它不是每个单字都是一个词,比如秋天是一个词,连衣裙是一个词。下面这一层标签是对应的词性。上面这一层就是句子树型结构,它会比较深入的把句子比较深度的结构化。只有把它结构化之后才能导到数据库里面去,才能做后续的各种机器学习研究和应用,这种叫结构句法分析。
对于电商而言,光有句法分析是不够的,比如我要知道秋天的含义是说这是个适用季节,红色是一个颜色分类,连衣裙是一个产品,要做到这一步才会使得真正在电商里面用起来。
比如我们用的是通用领域依存分析器,我们针对商品标题决定某一个依存句法分析器,假设某一个商品标题写的是“我要买秋天穿的红色连衣裙”,只需要把“秋天”、“红色”、“连衣裙”这几个关键的成分标出来,“我要买”和“穿的”对电商而言是没有意义的,但会去做进一步的组合。
如果这个句子是一个query,对于某些核心成分一点都不需要,完全不用看,直接会把它输出“秋天”、“红色”、“连衣裙”三个串,中间依存关系标出就可以了。这样可以做很好的信息凝练。这是我们针对三种不同类型的文本做的很深入的底层自然语言处理分析。
这个例子是一个买家对于某一个商品写的一个评论,“虽然有点贵,不是很修身,但是颜色很亮,布料摸起来挺舒服的,图案也好看。挺喜欢的。”,上图是我们的情感分析结果,我们情感分析不但要知道整句的信息,比如说整句有蓝色、淡蓝色,淡蓝色表示情感是正向的,整个句子表达的是一个比较褒义的结果,但不是非常满意。
再下面我们做的更深入一点,比如说贵、修身、颜色等等,做了很细粒度的一个拆解,这种叫属性级的情感分析。情感词比如说“贵”它是一个形容词,贵表达的是相对的关系,有时候说黄金很贵,这时就是一个褒义。所以这个词语非常复杂,不同环境下褒贬不一。如修身,这个平台里面表达修身是一个很严重的反向关系,所以我们就把它识别出来是个很红色的关系,只要经过很深度的细致分析之后,后面可以做各种各样的玩法。
应用实例
图中显示商品标题和副标题。 “2015年秋冬毛衣连衣裙我是证人杨幂同款宽松显瘦时尚打底针织连衣裙”,它不是一个自然语言的原句子,是一堆词语拼凑在一起的,副标题就自然一点。因为搜索引擎以关键词为核心算法,关键词堆砌的话搜索结果不会往前面排,销量就不好,所以标题就变成这个样子了。而副标题没有应用这种算法,副标题不进索引库,不能搜索,只是一个营销的额外宣传语。所以电商的自然语言处理是很有意思的。
对标题做深度理解和分析的时候,我们知道商品的产品词、款式、材质、风格、服务营销、适用季节等,做到这种结构化后,就可以把一个文本串变成一个数据库。
这个摆件的标题也可以做很深入的分析,也可以变成一长串结果,如果你要建一个电子商务搜索引擎的话,或者电子商务推荐引擎的话,只有做到这一步,才会使你的引擎更加智能。
标题分析主要分四步:
第一步先做分词。把第一行变成第二行,打空格用了很多算法、词表、人工、优化的思路;
第二步是实体打标。需要知道每个词语是什么含义,粉红大布娃娃是个品牌,泡泡袖是个袖型等等,这样你的搜索引擎就更加智能一点;
第三步是热度计算。把热度分数识别出来,因为串里面每个词不是等价的,有些重要性非常高,有些重要性非常低;
第四步是中心识别。我们用依存句法分析方法来做,表达这个句子的最核心关系就是春装连衣裙,这里面可以做进一步的简化,选取合适的某一个维度的信息。这样,你的数据库就非常好了,可以做很多深入的工作。
如果买家写的原始标题非常长,在PC上显示一个标题,但是在手机上显示一长串的时候,就会把标题按照字数限制截断。你会发现很多截断本来不应该,截断之后末尾那一串信息其实也是蛮关键的,我们把它变成如图一种关系,当买家来看商品信息的时候,在窄屏的区域里面能够很好的显示出来,所以就会使得我们的销量包括购买体验都会提升。
关于舆情文本分析,我们有文本的分类、标签和文档聚类技术。假如你在手机淘宝app评价写了一堆东西,就进入了我们的流程。我们的系统叫摩天轮,会自动的把你写的每一条评论做各种各样的分析和处理,包括聚类的和标签的很细粒度的解析。
商品评价
有关商品的评价,我们积累了几百亿条评论,这是非常海量的一个数据库。它通过商品的搜索推荐还有文章的引导,到商品详情页之后,有上亿的人每一天在看评价,通过看详情页之后,你可以去做要么收藏,要么放购物车,要么直接购买的决策,后面才有支付订单管理,最后还有评价。写下来评价之后,评价会经过我们的过滤挖掘和展现,再回到详情页里面来,这就是一个闭环。真实评价对购物决策有重要作用,评价作为淘宝最大的UGC,富含对商品的体验和知识,浏览评价与否对收藏、加购、下单、客单价均有显著影响。
上图为商品详情页,下面是正常写的评论,我们会在上面做大家印象,会把所有的评论做一个综合的摘取和总结,点击某一个,下面就会变成一堆相关文本筛选出来,并且把那一段描述的文本高亮。
图为我们的算法总架构图。如果要做某一个电商类或者某种服务体系的评价系统,可以采用这种模式。左边是一种溯源的机制,我们希望鼓励用户去写更多更好的评价,包括交互的优化,去提升有用评论的积累。有了数据之后,我们要去做去伪。去伪就是我们有一个评价雾霾工作,会把文本和图片的垃圾都去掉,做好之后才能保证信息是比较真实的。我们会对核心数据库做语义分析,会结合某一些类目来做,做完之后我们会考虑它的时效性和个性化,还有买卖家模型,再做排序折叠和大家印象的扶优。然后再做增值,我们会有一些比如优质内容库、推荐理由、评价有赏。通过评价去发现商品的品质好不好,是不是假货,物流满意度如何,这里面可以做很多很深入的分析。
评价雾霾中间是非常复杂的一套体系,有很多工程很多算法迭代了很久,比如说广告的样本怎么采集,有全类目的和分类目的,还有正常广告的,怎么去做拆分,有一些基础特征库比如用户特征、文本特征、模型特征、行为特征等做融合,最后再用一个treelink模型,把maxent模型、贝叶斯模型和dbn模型总体做融合,然后再回流,一天一天迭代。
问大家
商品中有另外一个很有趣的产品叫问大家。以买奶粉为例,假如你有五个邻居,有三个邻居买过同一款奶粉,你要买奶粉可能希望多问两家,如果三个人都买过A奶粉,三个人的回答结果综合看一看,做最终的决策。我们把它做成产品化,那我们做一个问题的拆解分为四类:无效问题、相似问题、问答排序、智能分发。
问大家3个问题解析如下:
- 无效问题过滤
–专业的外包同学标注无效问题,Active Learning筛选待标注样本
–分类采用LR+GBDT,定制特征
–无效问题会不断变种,算法和标注迭代推进
- 相似问题识别
–Doc2Vec然后计算相似度,人工评测
- 页面问答排序
–内容丰富度、点赞数、过滤词表匹配数等加权求和
–Detail页透出的一条问大家CTR 提升
内容资讯分析
针对内容我们需要做大量的分析,比如说底层我们有各种各样的数据库要汇总,中间有一些文本算法,比如说相关性、时效和质量、CTR预估、个性化、分类、打标、质量和去重等等,中间也有一些系统工程,还有服务体系。上面是业务场景,比如淘秘籍、微淘、淘宝头条、知识卡片、社区问答等等,会让你迅速进入一个很好的购物背景知识状态,使你做更好的购物决策。你可以在手机淘宝搜索结果页的第四个Tab里看到我们的淘秘籍产品。
思考
自然语言处理难在哪呢?它涉及到人的认知,知识<=>语言<=>思考<=>行动,左边专注到知识,右边专注到思考和行动。它是非常复杂的,最难的问题有两个:第一就是歧义,自然语言与计算机语言是完全不可调和的,计算机语言是精确的、可枚举的、无歧义的。第二是变化,变化是非常剧烈的。它的语法是群体一致,个体有差异,语言每天都在发生变化,新词总在不断的产生,无法穷举, 不同上下文不同含义,甚至随时间推移,词义也在发生变化,例如Apple->公司,甚至词性也在发生变化,如Google ->to google 。
那么,NLP怎么走?
- 在完全搞清人脑机制前,NLP研发永远是在模拟人类群体智慧在某些文字方面的表现;
- 这种模仿的效果会越来越好,持续提升;
- 更深入的模拟是,NLP会和语音、图像、视频、触觉等多维度信息融合学习。
我们未来会做什么,我们在一年之内会继续把AliNLP平台做的完备和完善,开放更多的能力,服务好阿里的各种生态系统。我们希望调用量能超过千亿,两年之内我们争取能够对外开放,普惠大众,更好的开放融合,调用量希望达到万亿,我们希望做的更美好!
上乘:阿里巴巴iDST 自然语言处理部总监,博士毕业于哈尔滨工业大学自然语言处理方向,曾在新加坡资讯技术研究院工作四年担任研究科学家负责统计机器翻译系统的研发和应用,2014年至今在阿里巴巴iDST担任资深专家,从零组建了自然语言处理部门,负责自然语言处理技术平台的研发和多项核心业务应用。