孔晓泉:自然语言处理应用和前沿技术回顾
Posted AI开发者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了孔晓泉:自然语言处理应用和前沿技术回顾相关的知识,希望对你有一定的参考价值。
雷锋网 AI 研习社按:伴随着近几年的机器学习的热潮,自然语言处理成为了目前炙手可热的研究方向,同时也是 Google、Microsoft、Facebook、Baidu、Alibaba 等各大公司投入巨额资金和高端人力努力争夺的下一个互联网流量入口(智能助手、智能音箱等)。
http://www.mooc.ai/open/course/495
孔晓泉,现就职于某 BAT 互联网公司,在公司内从事自然语言处理(NLP)相关项目的研究和开发,工作内容直接向公司的 VP(Vice President / 副总裁)报告,Language Understanding Service (LUS) 系统的设计者和负责人,多个重量级开源 NLP 项目(如 Spacy、RASA NLU 等)的 Contributor。
分享主题:自然语言处理(NLP)应用和前沿技术回顾
分享提纲
简单介绍和应用举例
经典的实现方法
基于深度学习的方案
DNN-based NLP 常用技术
回顾和总结
分享内容:
总的来说,自然语言处理技术相当复杂,在一个小时内将其讲清楚也不太现实。因此,这节课主要想给大家留下两方面的印象:一是使大家对 NLP 产生兴趣和对其大体了解,并列举一些 NLP 在生活中得到实际应用的例子。第二,从非常抽象的角度进行讲解,神经网络时代 NLP 的一些宏观的处理方法。
下面进行简答介绍和应用举例,下图是维基百科对自然语言处理的解释:
目前来看,自然语言生成距离实际应用还比较遥远,除了文字转语音技术(Text-To-Speech)已经比较成熟之外,其他还无法实际应用,但目前的自然语言理解已经相对实用,包括创业公司在内的各大公司在此领域的研究成果也已相当不俗,可以实现工业化使用。因此,本节公开课将重点介绍自然语言理解。
自然语言理解(简称 NLU),同样来看维基百科的解释:
换一个说法来讲,自然语言主要的输入是人类的语言(语音,文字均可),输出是计算机可以理解的一些高维度数据。
关于自然语言理解能做什么?我将从人机交谈,机器翻译和自动摘要这三个方面来讲解自然语言理解的具体应用。
人机交谈
人机交谈存在语音和文字两种方式,一般情况下,文字可以直接处理,如果是语音,通常情况下需要将语音转换成文字(Automatic Speech Recognition)。
交谈根据目的可分为两种,一种是闲聊,另外一种是任务型聊天。
一般情况下,交谈输出的为文字,但如果终端为智能音响或者在开车这种并不适合文字的场景下,就会产生文字转语音的需求。
这里简单介绍一下图灵测试,图灵测试是一个衡量机器智能达到人类智能的一个重要测试,测试过程这样进行:将人放在一个隔离的房间里,通过电脑终端和另外一个房间的人类或者电脑进行通讯(通过语音或者文字),如果人无法区分对面房间里是人还是机器,这时就可以判定智能机器人通过了图灵测试,也间接说明了机器具备人一样的智能。因此,将图灵测试作为评判机器到达人类智能的一个重要测试。
机器翻译
机器翻译最常见的是文本翻译,中日文,中英文,还有中文到克林贡语(人造语言)。
除了传统的文本翻译之外,还有比较特殊的手语翻译和唇语翻译,下图为华盛顿大学的学生作品:将手语翻译成英语的翻译手套获得了 MIT 的学生创新大奖。
注:演示视频大家可将课程回放至该位置查看
唇语翻译
注:演示视频大家可将课程回放至该位置查看
日常生活中存在一些语音不可用的场景,如噪音较大的马路上,而且摄像头未配备麦克风,这时,如果配备唇语识别技术,可以识别重要客户的重要信息,为公共安全提供更加有效的支持,据我所知,搜狗也推出了中文的唇语识别技术。
在视频介绍中可得治,Lipnet 能达到 93% 的惊人识别率,即使是经验丰富的人类唇语识别者的平均识别率也只有 52%。
自动摘要
浓缩式摘要,指将文章内容压缩,精简成更加短小的文本内容(或文本片段),大家眼熟的是无差别的总结单个文本内容,类似文章的摘要。另外一种更加有意思,即增量的总结多篇文章内容,比如当我阅读一篇文章,了解了某一个事物的认知,当读第二篇关于该事物的文章时,我的认知加强了(或更新了),到第三天,认知得到不断加强。在这方面,有一家创业公司做得相当不错,他们针对主题为「苹果汽车」的多篇文章进行了增量的总结。
注:演示视频大家可将课程回放至该位置查看
演示视频中,对「苹果汽车」的多篇文章进行了自动摘要,第一篇文章出来后,对其进行了摘要,第二篇文章后,它又在摘要的基础上进行了改写,第三篇出来后,不断进行改写,第四篇不断地加强等。
除了浓缩式摘要,还有基于查询的摘要。
基于查询的摘要,即基于用户的查询去找出相关的文本,就像做阅读理解,读了一篇文章,题目要求找出能回答该问题的句子,这就类似基于查询的摘要。另外,谷歌也有一个「精选摘要」特性,上图中谷歌针对我搜索的内容将它认为是答案的部分进行了高亮操作。
上面,我们讲解了自然语言的定义和应用场景,下面我们来介绍下自然语言的经典实现方法。
经典的实现方法
其中有一些容易理解,一些难以理解,我会逐个进行介绍,首先是分词。
在处理复杂的任务之前必须完成分词。英语除了依据空格进行分词外,还会基于规则,例如 do 和 n't 的分开。中文分词对外国人或者机器来说相当困难,例如图中这个典型的「我一把把把把住了」。
词形还原
词性还原并不适用于中文。上图介绍了一些经典的例子,其中,相同的颜色表示相同的词对应的关系。
词性标注
词性标注,是指给句子里的每一个词标注一个词性类别(名词,动词,形容词或其他类型)。传统上,英语有八大词类,名词,代词,形容词,动词,副词,介词,连词和感叹词。不同分类方法,分类也不同,有一些分类方法比较细致,细分一点。
看下面这个例子:
「王小明」,「北京」,「清华」的标记为 NR,指代专有名词,「在」标记为 P,指代介词,「的」标记为 DEG,指代连接词,「大学」标记为 NN,指代普通名词,「读书」标记为 VV,指代其他动词,「。」标记为 PU,指代标点符号。
依存语法
还是来看「王小明在北京的清华大学读书。」这个例句,词性标注的标记还是一样,这里的依存关系标记体系的使用标准为 Universal Dependencies (http://universaldependencies.org/),可以在上图中发现有个比较特殊的地方,就是「读书」只有向外发出,而没有指向它的箭头,「读书」是句子里唯一的那个根,一个句子只有一个根,所有句子关系都是直接或间接由这个根产生的。上图示例中,「读书」和「王小明」是有关系的,「王小明」是「读书」的名词性主语,「大学」是「读书」的名词性修饰语,「清华」和「大学」是一种复合的关系,「清华」和「大学」就构成一个复合短语,「大学」是「北京」的名词性修饰语,除此之外,「在」和「的」都是宾格的标记,表示所有所属关系。
命名实体识别
在该例子中可以看到,「王小明」是一个人名,「北京」是一个省的名字,「清华大学」是一个组织。由此可知,命名实体识别的功能(职责)就是,把句子中所属的实体找出来。
关于命名实体识别的详细解读可参考此前的分享总结。
到这里,就讲完了基于传统的方案,下面来讲解基于深度学习的方案。
基于深度学习的方案
在深度学习还未爆发之前,自然语言处理一直发展缓慢,而且距离具体的实用也很遥远,原因可参考前面的传统方法讲解,传统方法只是基于句子的结构,并没有将句子的意思用一种计算机理解的方案表现出来,因此自然语言处发展缓慢。直到最近得益于深度学习的爆发,自然语言得到了快速发展。
再加上其实用性较高,许多巨头公司也加大了对自然语言领域的投入。
那么,为什么说神经网络对自然语言产生了很大影响?
神经网络具有的高度灵活性和端到端的属性,成功的让自然语言处理更加易于使用。
端到端的方案
深度学习有一个优点:端到端的方案,该方案的输入是原始的输入(原始的文字或稍经过加工),输出是一些人类可以理解的,而非中间结果。端到端是实用的最重要的一点,它简化了大量人工特征工程,让自然语言处理变得相当实用。
下面来介绍主流的自然语言处理流程:
词嵌入
借助下面单词「King」在三维空间中的嵌入位置演示视频来了解词嵌入在实际中是如何应用的。
注:演示视频大家可将课程回放至该位置查看。演示中采用的编码将「king」与它的「queen」,「throne」等一百个语义上比较接近的邻居单词关联起来,空间上也表现了出来,这种就属于比较好的 embedding 方案。
编码,是指通过 RNN 技术(循环神经网络)将词语进一步编码成一个考虑了上下文和语义的向量。刚才讲解的词嵌入,是把词转化为向量,但存在这些词并没有考虑到上下文,在句子中并不知道上下文是什么的问题,所以在编码过程中我们就要充分考量这些词的上下文,对其重新编码,编码成一个具有语义的向量,一般情况下,会更加短小一点。
关于接下来的一步,我们来看下 Attention 机制。
Attention 机制类似人的眼睛,一般情况下,当你看到一张图时,你要先大体扫描下,找到感兴趣的区域,重点关注感兴趣的区域部分,也就是权重一般放在你关系的点上,减少对其他区域的关注。
借助下面一张图来了解 Attention 机制:
首先你会大体扫描下这张图,随后你会将重点放在这个球上面(关心这个球是个什么球),这和刚才讲解的 Attention 机制运行的方案是一致的,我们会重点关注这个球(球有什么特征),但并不会关心草地(例如草的种类是什么),这就是 Attention 机制。
还可以借助来自斯坦福的 Attention 机制动画演示加深理解,针对演示动画的详细讲解可查看回放视频。
解码
解码:需要实际将向量转换成目标对象(词语或者向量),在翻译过程中就是词语,标量用于情感分析:积极,消极,或预测评分,这些都需要解码。
后面来介绍深度神经网络时代,NLP 常用的技术,刚才我们也提到了一些技术,现在我们更加深入地来了解。
其中,CNN 虽然主要用于图像,但目前图像和语音技术也逐渐出现了融合统一。
第一个部分,介绍 Embedding:word2vec
Embedding 思想:一个词在一个句子中的意思,应该能通过句子周边的词进行推测,类似完形填空和成语中间去掉一个词,也就是可以通过周边词来预测中心词。word2vec,将中心词周边两三个词作为它的一个窗口大小,窗口内的非中心词就作为周边词,思想是,在一个句子中,我们可以通过周边词来预测中心词,反之亦然,借此构建一个模型,中心词和周边词语距离近,中心词和非周边词距离远,通过这个简单想法就可以实现 word2vec。
再次借助句例来了解下 word2vec 大体上是如何运作的:
还是选择「王小明在北京的清华大学读书」这个例句,中心词为「在」,用绿色标注,「王小明」和「北京」分别是它的周边词,窗口内大小是 1,我们通过周边词来预测中心词,就可以构建一个词语对(王小明,在)(北京,在),然后将窗口右移,得到了一个新的词语对(在,北京)(的,北京),按照这个方式不断右移,直到句子结束,在该过程中得到一些词语对,通过这种形式来训练 word2vec。
循环神经网络 RNN
一般的神经网络很难处理序列数据,因为序列数据含有上下文,而且长度也不一定。循环神经网络有个特点,输出作为下一个相同结构但不同实例的网络结构的输入,如上图。
朴素的循环神经网络在实现的时候,存在一个问题,它对距离近的词记忆较好,对于距离远的词记忆模糊(由于网络长,权重随之变小),所以这种比较原始的 RNN 用得并不多。
在实际中,常使用 RNN 的变体 LSTM,即长短期记忆 (Long Short Term Memory),在 LSTM 中,如下图,上面那条是长期记忆,下面那条是短期记忆。
LSTM 的优势在于,我们可以使用 RNN,同时也能避免其长期失忆的问题。当然,LSTM 也存在一些需要改进的地方,大家可自行参考相关资料。
卷积神经网络 CNN
CNN 在图像中应用较多,CNN 与前面介绍的一维的滑窗类似,不同的是 CNN 为二维。CNN 的基本思想为,滑窗是一个个小的检测器,通过检测得到数据,以此构建低级的特性,在往后传递的时候不断地使用一些高级的特性,最后这些高级特性用于生成等目的。
此处也使用了同样来自斯坦福演示视频对 CNN 进行了介绍,左边蓝色部分指一个个的图像,中间红色区域代表 filter(检测窗口),右边的绿色区域为加权得到的值,具体讲解内容大家可以回放课程进行查看。
以上就是本期嘉宾的全部分享内容,本次讲师孔晓泉也在公开课视频的最后附有联系方式,大家有问题想要交流的可以前往查看。更多公开课视频请到雷锋网 AI 慕课学院或者点击阅读原文观看。
从Python入门-如何成为AI工程师
BAT资深算法工程师独家研发课程
最贴近生活与工作的好玩实操项目
班级管理助学搭配专业的助教答疑
学以致用拿offer,学完即推荐就业
点击阅读原文,观看视频回放
▼▼▼
以上是关于孔晓泉:自然语言处理应用和前沿技术回顾的主要内容,如果未能解决你的问题,请参考以下文章