自然语言处理可以做什么NLP就业方向
现在NLP很有前途,毋庸置疑,原因很简单,哪里都有nlp的影子,涉及到文字和语音都离不开这些nlp技术。那么自然语言处理可以做什么?NLP就业方向有哪些?
自然语言处理可以做什么?
目前好就业的方向是搜索,推荐,知识图谱。机器人也是一个不错的方向,实用性很广泛,我就是搞机器人方向的。
入这行你要时刻保持一颗学习的心,至于顶会发表论文,你有这实力确实能帮你进入不错的大厂,没有这实力学好了一样能找到不错的公司,如果你一开始铁了心想进大厂,那更要努力,第一步学历要提起来,知识的深度和广度也要抓起来。
有了不错的学历,你还要磨练真本事,nlp基础要牢固,还要有完整的项目经历,否则面试你怎么过?基础知识是死的,花时间研究学习早晚有一天你能掌据,但是项目这关你没经历过细带是真不知道啊,随便挑一个优化细节问你没做过就懵逼了。
所以要加强你的学习能力,更主要是知道学什么能应付面试,能快速掌握面对面试官的问题游刃有余的回答。怎么样系统的完成一个商业项目来帮助你顺利的通过项目面这关,先过了面试进公司再成长,否则舌学一堆没手用,面试不问。
要对自己有信心,要有自己的判断力,别一看到网上说内卷严重,竞争大,被淘汰没前途的字样就怀疑退缩了,那是因为还不够优秀才被轮到。
所以一开始你就要认识到这点--怎么学才能和其他竞争者拉开差距?到这里如果一片茫然那就啥也别想先走第一步入门吧,反正确认了走NLP有前途。
免费分享一些我整理的人工智能学习资料给大家,包括一些AI常用框架实战视频、图像识别、OpenCV、NLQ、机器学习、计算机视觉、深度学习与神经网络等视频、课件源码、国内外知名精华资源、AI热门论文、行业报告等。
为了更好的系统学习AI,推荐大家收藏一份。
下面是部分截图,点击文末名片关注我的公众号【AI技术星球】发送暗号321领取(一定要发暗号321)一、人工智能课程及项目
二、国内外知名精华资源
三、人工智能论文合集
四、人工智能行业报告
学好人工智能,要多看书,多动手,多实践,要想提高自己的水平,一定要学会沉下心来慢慢的系统学习,最终才能有所收获。
点击下方名片,扫码关注公众号【AI技术星球】发送暗号321免费领取文中资料自然语言处理技术发展简史
当前,自然语言处理(NaturalLanguageProcessing,NLP)技术的发展可谓日新月异,尤其是近些年来层出不穷的预训练模型及其变体更是让人眼花缭乱。对于想要踏入这一领域并想深入了解的人——比如我——来说,可能会想要搞清楚这门技术是如何发展成现在这个样子的,这其中又经历了怎样的波折。前一段时间,我把NLP技术的发展史做了简略的梳理,并在内部做了分享,现将分享的内容以图文方式整理出来,希望可以帮助那些有困惑的同仁。本文所有的图片来自网络,主要参考文献为吴军的《数学之美》。
Page1语言:信息的载体谈论NLP,首先需要从「语言」入手。今天,世界上已查明的语言超过5000种,这些语言支撑着人们的日常交流与工作沟通。毫不夸张地说,正是语言的出现,才使得人类得以进化成比其他动物更高级的存在。本质上来说,语言主要作用就是承载信息。这是一卷现收藏于大英博物馆的名为《亚尼的死者之书》的长卷。根据考古结论,它距今约3300年,比中国目前发现的最早的甲骨文还略微早些。这轴长卷是绘制在纸莎草上的,长约20米,共有60多幅绘画故事和象形文字说明,用于记载当时古埃及人认为的人死之后的事情。所谓「死者之书」,可以简单理解为死者去往另一个世界的通行证。
Page2语言:信息的载体毫无疑问,古埃及的「死者之书」试图通过绘画和象形文字来记载人在死后的经历和行为,这与现代人使用语言的目的是毫无二致的。其核心模型可以简化成如图所示的内容,即:信息的发送人把想要发送的信息通过一种编码方式(绘画、文字、声音等)进行编码,被编码后的信息通过信道传给接收人,接收人对其进行解码从而获取信息的内容。
古埃及人用的编码方式是绘画和象形文字,得益于计算机技术的发展,今天我们已经可以使用数字来对文字进行编码,其传输效率自然高得多,但本质上与几千年前并没什么不同。
Page3NLP技术发展总览搞清楚语言的本质和目的,我们先宏观看一下NLP技术的发展历史。可以粗略的将NLP技术的发展分为四个阶段,我对应地使用了四个词来形容它们,分别是:缘起、探索、重生、飞跃。
缘起:人们一般认为,1950年,计算机科学之父阿兰图灵发表的《计算的及其与智能》文章,标志着NLP技术的开始。这篇文章最重要的价值之一,就是提出了一种后来被称为「图灵测试」的试验。通过图灵测试,人们可以判断一个机器是否具有了智能。
探索:从1950年开始一直到20世纪70年代,人们一直受直觉启发(现在来看,称之为「误导」或许更加准确),试图用电脑模拟人脑的方式来研究NLP技术,这种方法后来被称为“鸟飞派”,本意是指试图通过仿生学的研究来让人类飞上天空的那批人所采取的方法,后来延伸为受直觉影响,在惯性思维的误导下而采取的不正确的研发方法。
重生:1970年以后,以贾里尼克为首的IBM科学家们采用了统计的方法来解决语音识别的问题,最终使准确率有了质的提升。至此,人们才纷纷意识到原来的方法可能是行不通的,采用统计的方法才是一条准确的路。
飞跃:在确定了以统计学方法为解决NLP问题的“主武器”后,再加上计算能力的提升,有了深度学习技术加持的NLP也迎来的其飞速发展的阶段,在某些任务上的表现甚至已经超过人类。
Page4图灵测试所谓「图灵测试」,简而言之就是把一个人和一个机器关在两个房间了,另外一个人来对他(它)提问相同的问题。如果提问者通过得到的答案无法区分哪个是人哪个是机器的话,那么就可以认为机器通过了测试,具有了“智能”。
为什么说图灵测试的提出是NLP发展的起点呢?因为要想避免非智能决定因素的影响,提问者不能通过声音来提问,而是通过类似写纸条的方式;而且,得到的答案也必须是采用类似于写在打印纸上等方式来传递给提问者。这样,机器要想正确回答问题,首先就需要去“理解”提问者的问题。
Page5鸟飞派——惯性思维下的弯路探索在NLP出现后的前20年,人们一直在用惯性思维的方式去研究相关问题。举个例子,要翻译一篇文章,人会怎么做?公认的一个前提是,翻译者必须对两种语言都很熟悉才可以。于是,人们认为,机器要具备翻译的能力,也必须先理解两种语言才行。这就是典型的「鸟飞派」方法,即受惯性思维的影响而做出的决定。
从早期人们对NLP的理解的结构图中可以看出,这与人类在学习语言的路径几乎是一样的:先学很多单词,然后是句法结构,然后才能理解句子的含义,最后才能基于这些语言去完成相应的任务。
Page6鸟飞派——惯性思维下的弯路探索事实上,这种方法的第一步就遇到了一个不可克服的障碍。拿句法分析而言,机器想要记住自然语言的句法结构,需要语言学家首先将句子按照人类的理解进行句法拆分,然后处理成机器能够存储的格式。如果人类语言非常简单且数量不多,这种方法倒还可行,可惜,以上两个条件没有一个是满足的。
以图中的例子来看,如此简单的一个陈述句,还必须拆分成八条规则才能让机器进行处理,而且,这些规则中的绝大部分都是需要人工编写的。由此可知,要解决实际问题,所需要花费的人工成本就太高了。此外,一词多义、一义多词等现象,也会导致规则出现矛盾。
Page7从规则到统计传统的人工构建规则模板之路看样子是行不通了,于是,一些聪明人开始找寻其他的方向,并发现了统计学这一处理自然语言的利器。
提到统计自然语言处理,就不得不提一下贾里尼克。正是因为他和他的团队在上世纪70年代的工作,开拓了统计自然语言处理的先河。他不仅是世界著名的自然语言处理专家,而且还培养出了一大批世界一流的自然语言处理学者。值得一提的是,他真正地工作到了生命的最后一刻,最后是在实验室突发急病去世的。
现在,人们发现,基于统计的自然语言处理的方法,从模型上看,和语言的初衷——通信,是完全一致的。关于这一点,我们在后面介绍统计模型的时候来阐述。
Page8统计语言模型我们前面已经说过,自然语言的最显著的特性,就是其具有上下文相关性。传统的方法之所以效果不好,很大程度上是因为没有办法处理这种上下文相关性。而基于统计的自然语言处理,或者说,统计语言模型,就是利用统计学的方法,来建立自然语言模型。我们在小学语文考试的时候,经常会遇到一类题:给你一组乱序的词语,让你组成一句通顺的话。假设给定如图中所示的一组词语,那么大家能组成什么样的话呢?我这里给出两种组合的方法,相信大家比较这两个句子就能发现,s1s_1s1比s2s_2s2更好。这里说的「好」,意思就是通顺,那么如何用数学的方法来表示s1s_1s1比s2s_2s2更通顺呢?
回到「通顺」这个描述本身。我们为什么会觉得s1s_1s1比s2s_2s2通顺,其实就是因为s1s_1s1的表达方式更接近于我们的常识,也就是说,句子s1s_1s1体现的这种词语组合方式比包含s2s_2s2在内的其他的组合方式出现的概率更大。
至此,我们已经得到统计语言模型中最精髓的一句话。基于此,贾里尼克假设,一个句子是否合理,取决于其出现在自然语言中的可能性的大小。越常见的句子越合理,这是不争的事实。
Page9统计语言模型接下来,我们就会涉及一些简单的数学推导。只要是学过高等数学和概率统计的基本知识,理解起来都是没有任何问题的。假设SSS表示一个句子,本质上它就是由一定数量的词语按照特定顺序排列好的字符串而已。假定这个字符串用w1,w2,...,wnw_1,w_2,...,w_nw1,w2,...,wn表示,那么,判断SSS是否合理,就变成了判断字符串w1,w2,...,wnw_1,w_2,...,w_nw1,w2,...,wn出现的概率。
要想得到最真实的概率值,办法只有一个,那就是统计人类有文字以来的所有的句子,自然就可以得到SSS的概率。但实际上,这个办法只是理论上可行,实际上没人做得到。
于是,我们只能想办法来近似,即,牺牲一点精度,来换取一种切实可行的方法。只要精度损失不大,那么这种牺牲是可以接受的。这里用到的统计方法主要有条件概率公式和马尔科夫假设。通过这两步,我们就得到了以下近似:
P(w1,w2,...,wn)≈P(w1)P(w2∣w1)...P(wn∣wn−1))P(w_1,w_2,...,w_n)approxP(w_1)P(w_2|w_1)...P(w_n|w_{n-1}))P(w1,w2,...,wn)≈P(w1)P(w2∣w1)...P(wn∣wn−1))
这里得到的这个近似,被称为二元模型(bigrammodel),它假定每个词出现在特定位置的概率只和它的上一个词(按照目前大多数语言的书写习惯,就是指左侧那个词)有关。
于是,你可以猜到,一元模型(每个词出现的概率只与它本身有关,即完全不考虑上下文信息)、三元模型(每个词出现的概率与它前两个词有关)以及更多元的模型分别是什么样子的。
Page10统计语言模型按照二元模型的近似,求一个句子的概率变成了求有限个条件概率的乘积。根据条件概率的定义可知,计算一个条件概率,只需要计算一个联合概率以及一个边缘概率即可。在这个例子里,联合概率为两个词组成的词对在语料库中出现的概率,而边缘概率就更简单了,是一个词在语料库中的概率。
这里又可以利用大数定律来用频率近似代替概率,经过约分,最终,求一个条件概率简化成了一项数数的工作。
至此,我们通过一系列统计理论和假设,先把一个自然语言问题抽象成了一个求概率的问题,又把概率问题简化成一个数数的操作,从而使复杂的问题变得可解。
这就是数学的力量。
Page11模型的训练、零概率问题以及平滑方法上面我们已经找到了一条解决问题的道路,但这条路上仍然许多会让我们行走得磕磕绊绊的障碍必须被剔除,其中,最具有代表性的就是「零概率问题」。
在解决这个问题前,我们先看一下问题为什么会出现。通过前面的分析可知,模型的训练其实就是计算所有条件概率的过程——计算到了任意两个词的条件概率,那么就可以得到任意一个字符串(句子)出现的概率。
在我们采用了大数定律把求概率变成数数的时候,这里有一个潜在的问题:如果分子为0,即特定组合的词对在语料库中没有出现,这时候是否可以认为该条件概率为0,进而整个字符串(句子)出现的概率也为0?
直觉上,得到这样的结论肯定是不妥的,而不妥的原因,就是「统计不可靠」。关于统计不可靠,一个耳熟能详的例子就是抛硬币试验,假设你抛了三次,硬币都是正面朝上,那么你得出这枚硬币是不均匀的结论显然是不能让人信服的。因为你试验的次数太少了。
同理,特定组合的词对没有出现,不一定是因为这种组合不存在,而更可能是因为你的语料库太小了,导致没有涵盖所有的可能。
明白了上述原因,解决方案也自然出现了:增大数据量,这里就是语料库的规模。然而,通过简单的计算你就会发现,增大数据量在这个场景下所起到的作用,似乎并不是很大。
假设汉语的词汇共有20万个,如果我要构建一个三元模型,那么参数的总量就是2000003200000^32000003(参数即所有可能的条件概率,由于每个位置上可能出现的词的数量都是20万,三元模型的参数量就是20万的三次方),这个数字的量级是101510^{15}1015。再假设整个互联网上有100亿个网页,每个网页上平均有1000个词(这是一种很宽的假设,很多网站达不到这个标准),那么互联网上的词的总量也才101310^{13}1013个,考虑到三元模型用到的都是双词词对和三词词对,可利用的词对总量也才2∗10132*10^{13}2∗1013,远小于参数量。
Page12模型的训练、零概率问题以及平滑方法既然单纯的增大数据量的方式行不通,那么就要另谋出路。当一条路行不通时,就要思考一下问题出现的根本原因是什么。
在这个场景下,问题出现的根本原始是:由于语料库的限制,导致未出现的词(词对)的概率被认为是零。这里又有一个隐含的信息在里面:未出现的词,其概率一定是零吗?很显然不是这样。举一个极端一些的例子,假如你的语料库取自小学生语文课本,那么肯定不会出现高中生物中的一些词汇。
由于我们总是受到语料库规模的限制,因此,不应该把未出现的词的概率简单地视为0,而是要给它们一个概率值。这个概率值怎么给呢?前人已经给出了一种解决方案,即“古德-图灵”估计。
图灵就是前面提到的计算机科学之父,古德是他的学生。他们提出的这个方法的整体思路是:把看见的事件的概率总量分出一部分,给那些未看见的(即,未出现的)的事件。划分的原则就是,已看见的事件中概率越低的,调给未看见时间的概率越多。
这和我们想的可能不一样,我们总是认为应该“杀富济贫”,但在这个问题中,那些概率更低的事件意味着更高的不可靠性,因此,需要从这种不可靠中分出一部分给那些看不见的事件。
反正你本身就已经很不可靠了,总不介意更加不可靠一些。
Page13模型的训练、零概率问题以及平滑方法上一页讲了古德图灵估计的思想,事实上他们还给出了具体的实施方式,即,如何调低那些已观测到的事件的概率。
Page14深度学习与自然语言处理前面粗略地对统计语言模型的发展进行了简单的梳理,虽然这确实是NLP发展的一次飞跃,但细心的人肯定马上就发现问题:利用n元模型来处理自然语言,也只是处理邻接词的依赖关系,无法处理自然语言的长程依赖。
不过,得益于深度学习技术的发展,它在很大程度上密度了统计语言模型的上述短板。总结来说,前面提到的统计语言模型技术面临以下问题:
1、采用独热向量的方式来对句子进行编码,无法衡量各个词之间的语义相似度,且在面对大规模词表时还会出现数据稀疏的问题。
Page15深度学习与自然语言处理2、n元模型实际上也是一种提取句子特征的特征模板,因此它也具有所有依赖特征模板的机器学习方法的弊端:效果非常依赖人工设置的模板的好坏。
3、很多下游的NLP任务,如实体抽取、关系抽取等,是依赖于上游的任务——分词、词性标注——成果的,因此,如果前面没做好,后面会受到很大的影响。
为了解决上述问题,人们采用了深度学习技术。
Page16深度学习与自然语言处理词向量,或者叫词嵌入,就是一种用来进行词表示的技术,它克服了传统方法所面临的数据稀疏、语义特征丢失的问题。简而言之,这种方法把每个词表示成了一个特定长度(如50、300)的向量,这样做有两个显而易见的好处:1、向量的维度固定,不因词表的规模而变化;2、利用向量计算,可以近似代替词语间的语义相关性。
对于第2点,一个非常典型的例子如图所示:king的词向量减掉man的词向量再加上woman的词向量,近似等于queen的词向量。
Page17深度学习与自然语言处理词向量的发展过程,大概如图中所示。一开始词向量其实只是作为神经语言模型的副产品,而且受限于当时的硬件条件,效果并不是很好。
后来,专门针对词向量训练的模型与方法被不断提出,且计算能力的不断提升,这些都是词向量技术不断发展的催动力。
Page18深度学习与自然语言处理在对深度学习技术的利用上,相较于NLP,计算机视觉技术是走在前列的。由于卷积神经网络在计算机视觉领域取得了里程碑式的巨大成功,NLP领域的学者们首先想到的就是利用CNN来处理自然语言,也取得了一些不错的成果。但真正让深度学习技术在NLP领域大放光彩的,还要属下一页的模型。
Page19深度学习与自然语言处理我们前面说,统计语言模型无法捕获自然语言的长程依赖。事实上,卷积神经网络在这一点上做得也不够好。于是,人们提出了新的网络模型,循环神经网络——RNN。
Page20深度学习与自然语言处理实际上,有许多RNN的变种神经网络被提出,来解决各种问题。比较出名的,有GRU和LSTM。
Page21深度学习与自然语言处理目前,NLP中大量应用的模型多为seq2seq架构的,即,sequencetosequence。翻译为序列到序列。以中英翻译模型为例,输入为中文字符序列,输出为英文字符序列,因此,称之为序列到序列的模型。
此类模型借鉴了编码器-解码器的思想,即对输入的序列进行编码,获取序列本身所包含的语义信息,然后利用解码器根据输入的语义信息进行解码,获取目标结果。
Page22深度学习与自然语言处理了解计算机视觉的人应该会理解,如果不加任何干涉,计算机在处理图片数据时,会逐像素点进行计算,事实上这在某些情况下是一种浪费。我们人类在观察图片时,一定先被某些元素吸引,从而给与它们更多的关注多。
图中右侧的图片显示了人们在看到左侧的图片时,注意力所放的位置。颜色越浅,表明关注度越多。这种注意力机制对于人们去了解一个事务的概况,是有非常大的帮助的。受此启发,人们在NLP领域也研究出了各种各样的注意力机制。
它们的核心都是,试图想让模型在完成一项NLP任务时,更多地关注那些对完成这项任务有所帮助的信息,而非视全部字符为同等重要的。
Page23深度学习与自然语言处理我们前面说,注意力机制是一种思想,而基于这种思想所实现的具体计算模型,可以有很多种,其中,比较有代表性的,self-attention可以算一种。基于self-attention的Transformer,更是大名鼎鼎:它是BERT的基础。
RNN以及类RNN模型,由于引入了时间步的操作,因此,它们必须等待上一步的操作结果才能进行下一步的计算,这就导致了它们的并行化计算很难实现。而Transformer模型,试图仅用注意力机制来捕获输入和输出之间的关系,从而使得整个架构更加并行化。
Page24深度学习与自然语言处理接下来,我们要介绍预训练模型,这是目前NLP领域的效果最好的模型。
一词多义问题,是自然语言中一个非常常见的现象,也是NLP领域的难点之一。我们前面提到的词向量,由于一个词只映射到了一个固定的词向量,因此,假如这个词是多义词,那么上述方法很明显丢失了其他的语义。为了解决这个问题,ELMo模型提出了一种思想:事先利用模型得到一个单词的词向量,这时,一词只有一义;在具体要利用这个词向量的时候,就要根据这个词所在的上下文的语义来调整该词的向量表示。经过调整后的词向量,能够更加适应其所在的语义环境。
上述过程其实已经体现了预训练方法的核心思想:预先训练一个模型,然后根据具体的任务对模型进行微调。
Page25深度学习与自然语言处理熟悉预训练模型的人,一定不会对BERT感到陌生。实际上,GPT1比BERT还要早一些,但是提出GPT1的公司的宣传能力,显然相较于Google要逊色了许多,以致于人们“只知有BERT,无论GPT1”
Page26深度学习与自然语言处理最后,来看一张比较让人绝望的图:各模型的参数量对比。尽管不是严格的线性关系,但仍然可以看出,NLP模型的规模是随着其发展而不断增加的。GPT3的参数量甚至达到了恐怖的1750亿!训练一次的成本高达上百万美元!
这对于个人研究者来说,无疑是绝望的:很少有人或者小公司能够负担的其这么庞大的研究成本。NLP也越来越成为巨头公司的专享游戏了。
自然语言处理的应用前景
自然语言处理(NLP)的定义
自然语言处理(NLP)是人工智能技术的一个分支,它使计算机能够像人们一样理解、处理和生成语言,并且在商业中的应用正在迅速增长。
虽然自然语言处理(NLP)这一术语最初指的是人工智能系统的阅读能力,但它后来成为所有计算语言学的一种通俗说法。其子类别包括自然语言生成(NLG)(计算机自行创建通信的能力)和自然语言理解(NLU)(理解俚语、错误发音、拼写错误以及其他语言变体的能力)。
[[323561]]
自然语言处理(NLP)的工作原理
自然语言处理通过机器学习(ML)进行。机器学习系统像其他任何形式的数据一样存储单词及其组合方式。将短语、句子,有时甚至整本书的内容都输入机器学习引擎,并根据语法规则和人们的现实语言习惯(或两者兼而有之)进行处理。然后,计算机使用这些数据来查找模式并推断出下一步的工作。以翻译软件为例:在法语中,“我要去公园”是“Jevaisauparc”,因此机器学习预测“我要去商店”也将以“Jevaisau”开头。
自然语言处理应用
机器翻译是更好的自然语言处理(NLP)应用程序之一,但它并不是最常用的一种。人们每次在Google或Bing搜索引擎中查找内容时,都将数据输入到系统中。当单击搜索结果时,搜索引索会将其视为对找到的结果正确的确认,并在以后使用这个信息更好地进行搜索。
聊天机器人的工作方式与其相同:它们与Slack、MicrosoftMessenger和其他聊天程序集成在一起,可以在其中读取人们所说的语言,然后在说出触发词语时将其打开。当Siri和Alexa等语音助手听到“Hey,Alexa”之类的短语时,它们就会进行响应。这就是批评者指责这些程序一直在监听的原因:如果不是,它们永远不会知道人们何时需要它们。除非人们自己打开应用程序,否则自然语言处理程序将在后台运行,等待短语的出现。
自然语言处理(NLP)对人们的利大于弊。人们可以想象一下没有谷歌搜索或者拼写检查程序的生活。它使用自然语言处理(NLP)将输入的单词与字典中的单词进行比较。通过比较这两个数据集,拼写检查程序可以找出问题并提供建议。
自然语言处理(NLP)示例
搜索引擎和拼写检查的应用如今非常普遍,人们经常将它们视为一种理所当然的技术,尤其是在自然语言处理(NLP)可以显著提高生产力的工作中。例如如果想知道还剩下多少假期?不必询问人力资源部门。可以采用聊天机器人Talla节省时间,它会搜索企业政策以寻找答案。打电话联系客户需要翻看手机所存的电话号码?可以采用语音提示,通过声音搜索启动SecondMind,将会给出所需的号码。这种集成的搜索工具可以加快员工与客户的沟通。
自然语言处理还可以帮助招聘者对简历进行分类,吸引各种应聘者并雇用更多合格的员工。对垃圾邮件进行检测可以使用自然语言处理(NLP),以阻止垃圾电子邮件进入人们的收件箱;此外,可以采用Outlook和Gmail等程序将某些人的邮件分类到创建的文件夹中。
诸如情绪分析之类的工具可帮助企业快速识别推文内容的好坏,从而可以了解客户的顾虑。情感分析不仅可以处理社交媒体上的文字,还可以分解词语出现的语境。对于分析机构Periscopic公司的数据可视化工具SkyeMorét来说,只有30%的英语单词是正面的,其余的是中性或负面的。因此,自然语言处理(NLP)可以帮助企业更全面地理解一个帖子:在这些中性词汇背后,消费者表达的情感是什么?
传统上,企业使用自然语言处理将反馈分为积极和消极两类。但是FleishmanHillard公司社会和创新业务的高级副总裁RyanSmith表示,当今的自然语言处理工具可以识别更精确的情绪,例如悲伤、愤怒和恐惧。
自然语言处理(NLP)软件
无论人们是要构建聊天机器人、语音助手、预测文本应用程序,还是以自然语言处理为核心的其他应用程序,企业都将需要采用工具。根据调查,最受欢迎的自然语言处理软件包括:
自然语言工具包(NLTK)。自然语言工具包(NLTK)是一个开放源代码框架,用于构建Python程序以使用人类语言数据。它是在宾夕法尼亚大学计算机和信息科学系开发的,为50多个语料库和词汇资源库、一个文本处理库、自然语言处理库和论坛提供接口。自然语言工具包(NLTK)是在Apache2.0许可下提供的。SpaCy。SpaCy是一个开放源代码库,用于高级自然语言处理,专门为生产目的而非研究目的而设计。SpaCy的设计充分考虑了高级数据科学,并允许深度数据挖掘。它是由麻省理工学院授权的。Gensim。Gensim是一个用于自然语言处理的开源Python库。独立于平台的库支持可扩展的统计语义、针对语义结构的纯文本文档分析以及检索语义相似文档的能力。可以在无需人工监督的情况下处理大量文本。AmazonComprehend。这项Amazon服务不需要机器学习的经验。它旨在帮助组织从电子邮件、客户评论、社交媒体、支持通知单和其他文本中获得见解。它使用情感分析、词性提取和标记化来分析单词背后的意图。IBMWatson音频分析器。这个基于云计算的解决方案旨在用于社交监听、聊天机器人集成和客户服务监控。它可以分析客户帖子中的情绪和语气,并监视客户服务电话和聊天对话。谷歌云翻译。这个API使用自然语言处理来检查源文本以确定语言,然后使用神经机器翻译将文本动态翻译为另一种语言。这个API允许用户将功能集成到他们自己的程序中。自然语言处理(NLP)课程
有很多资源可用于学习创建和维护自然语言处理应用程序,其中许多是免费的资源。其中包括:
DataCamp中的Python自然语言处理。这门免费课程提供15个视频和51个练习文件,涵盖了使用Python处理自然语言的基础知识。它涵盖了如何识别和分隔单词,如何在文本中提取主题,以及如何构建自己的虚假新闻分类器。Udemy的自然语言处理(NLP)。这个入门课程提供使用Python和自然语言工具包处理和分析文本的实践经验。它包括三个小时的点播视频,三篇文章和16个可下载资源。该课程费用为19.99美元,并提供结业证书。使用Udemy的Python进行自然语言处理(NLP)。这个课程面向具有语言基础编程经验,理解面向对象编程的概念,具有基础到中级数学知识以及矩阵运算知识的个人。它完全基于项目,并且涉及构建文本分类器以实时预测推文的情绪,以及构建文章摘要器,该文章摘要器可以获取文章并提取摘要。该课程包括10.5小时的点播视频和8篇文章。该课程费用为19.99美元,并提供结业证书。edX的自然语言处理(NLP)。由微软公司通过edX提供的为期六周的课程概述了自然语言处理和经典机器学习方法的使用。它涵盖了统计机器翻译和深度语义相似性模型(DSSM)及其应用。它还涵盖了在自然语言处理和视觉语言多模式智能中应用的深度强化学习技术。这是一门高级课程,完成该课程学习的人员只需支付99美元即可获得认证证书。Coursera公司提供的自然语言处理。本课程是Coursera公司高级机器学习专业化的一部分,涵盖自然语言处理任务,包括情感分析、摘要、对话状态跟踪等。Coursera公司表示,这是一门高级课程,需要学习五个星期,每个星期需要学习四到五个小时。自然语言处理为社会公益提供支持
除了帮助企业处理数据外,情绪分析还可以帮助人们了解社会动态。例如,Periscopic已将自然语言处理(NLP)与视觉识别结合使用,创建了特朗普表情计算器(TrumpEmoticoaster),这是一种处理语言和面部表情的数据引擎,目的是了解美国特朗普总统的情绪状态。
类似的技术也可以防止校园枪击事件:在哥伦比亚大学,研究人员已经处理了9000名暴力倾向的年轻人发布的200万条推文,并在寻找问题的答案:随着青少年越来越倾向采用暴力,那么其语言是如何改变的?
Coursera公司项目总监DesmondPatton博士说,“有问题的内容会随着时间的推移而发展。”随着一些年轻人越来越接近危险的边缘,他们会通过语言表达。然后,自然语言处理会标记出有问题的情绪,以便社会工作者可以进行干预。
与Periscopic一样,Columbia公司将情感分析与图像识别结合使用,以提高准确性。Patton说,计算机视觉将推文上的图片进行分解,然后机器学习将它们与语言一起处理,以告诉“图片的真实情感”。这个图像是关于悲伤的吗?这是有关威胁的图片吗?这些图像中还发生了什么,可以帮助人们更好地理解?”除校园枪击事件之外,哥伦比亚计划还希望采用这种技术防止团伙暴力。
自然语言处理(NLP)以提高个人水平
自然语言处理(NLP)还可以帮助人们监控自己的情绪状态。Woebot是一种电子治疗师,可通过FacebookMessenger聊天机器人或独立应用程序与用户联系。不过,目前还没有高级的情感分析技术,Woebot实际上只能跟踪那些抑郁和焦虑,可能表明用户面临紧急情况的词汇。
自然语言处理的发展历程
文章目录总览1957-19701994-NeuralLanguageModelMulti-tasklearningWordembeddingNeuralnetworksforNLPSeq2seqAttentionMemory-basednetworksPretrainedlanguagemodels神经网络的其他里程碑非神经网络方向的其他里程碑参考总览NLP的发展趋势:规则—>统计—>深度学习。
自然语言处理的发展大致经历了4个阶段:1956年以前的萌芽期;1957-1970年的快速发展期;1971-1993年的低谷的发展期和1994年至今的复苏融合期。
57年快速发展的一个原因是:1956被称之为人工智能的元年,那一年召开了达特茅斯会议,首次正式提出了“人工智能”。
1956年8月,在美国汉诺斯小镇(其实就是美国的东北部沿海的一个州下面的一个镇)宁静的达特茅斯学院中,约翰·麦卡锡(JohnMcCarthy)、马文·闵斯基(MarvinMinsky,人工智能与认知学专家)、克劳德·香农(ClaudeShannon,信息论的创始人)、艾伦·纽厄尔(AllenNewell,计算机科学家)、赫伯特·西蒙(HerbertSimon,诺贝尔经济学奖得主)等科学家正聚在一起,讨论着一个完全不食人间烟火的主题:用机器来模仿人类学习以及其他方面的智能。
1957-1970自然语言处理在这一时期很快融入了人工智能的研究领域中。由于有基于规则和基于概率这两种不同方法的存在,自然语言处理的研究在这一时期分为了两大阵营。一个是基于规则方法的符号派(symbolic),另一个是采用概率方法的随机派(stochastic)。
50年代中期开始到60年代中期,以Chomsky为代表的符号派学者开始了形式语言理论和生成句法的研究,60年代末又进行了形式逻辑系统的研究。这个的话属于非常理论的部分,大家如果上过或者《编译原理与技术》的话就很清楚,课中的内容很多就是出自于这个时期的研究。也就是说,形式语言理论是处理编程语言的工具,是编译器的重要组成部分。没有这个,就没有你今天看到的各种编程语言!
而随机派学者采用基于贝叶斯方法的统计学研究方法,在这一时期也取得了很大的进步。但由于在人工智能领域中,这一时期多数学者注重研究推理和逻辑问题,只有少数来自统计学专业和电子专业的学者在研究基于概率的统计方法和神经网络,
在这一时期中,基于规则方法的研究势头明显强于基于概率方法的研究势头。
1994-90年代中期以后,有两件事从根本上促进了自然语言处理研究的复苏与发展。一件事是90年代中期以来,计算机的速度和存储量大幅增加,为自然语言处理改善了物质基础,使得语音和语言处理的商品化开发成为可能;另一件事是1994年Internet商业化和同期网络技术的发展使得基于自然语言的信息检索和信息抽取的需求变得更加突出。2000年之后的几个里程碑事件:2001年-神经语言模型2008年-多任务学习2013年-Word嵌入2013年-NLP的神经网络2014年-序列到序列模型2015年-注意力机制2015年-基于记忆的神经网络2018年-预训练语言模型
NeuralLanguageModel语言模型解决的是在给定已出现词语的文本中,预测下一个单词的任务。这可以算是最简单的语言处理任务,但却有许多具体的实际应用,例如智能键盘、电子邮件回复建议等。当然,语言模型的历史由来已久。经典的方法基于n-grams模型(利用前面n个词语预测下一个单词),并利用平滑操作处理不可见的n-grams。
第一个神经语言模型是Bengio等人于2001年提出的。
论文名称:ANeuralProbabilisticLanguageModel
该论文是2001年发表在会议上,2003年发表在期刊上的,所以也有人说这篇论文发表时间是在2003年,这都无所谓。
Multi-tasklearning论文名称:Aunifiedarchitecturefornaturallanguageprocessing:Deepneuralnetworkswithmultitasklearning
多任务学习是在多个任务下训练的模型之间共享参数的一般方法。在神经网络中,这可以通过绑定不同层的权重来轻松完成。直观地说,多任务学习鼓励模型学习对许多任务都有效的表征描述。这对于学习一般的低级表示,集中模型的注意力或在有限量的训练数据的设置中特别有用
Collobert在2008年首次将多任务学习应用于NLP的神经网络。在这一框架下,词嵌入矩阵被两个在不同任务下训练的模型共享.。
共享单词嵌入使模型能够在单词嵌入矩阵中协作和共享一般的低级信息,这通常构成模型中最大数量的参数。Collobert和Weston在2008年的论文中证明了它在多任务学习中的应用。它引领了诸如预训练单词嵌入和使用卷积神经网络(CNN)之类的方法,这些方法仅在过去几年中被广泛采用。他们也因此获得了2018年机器学习国际会议(ICML)的“时间测试”奖。多任务学习现在用于各种NLP任务,并且利用现有或“人工”任务已成为NLP指令集中的有用工具。虽然通常预先定义参数的共享,但是在优化过程期间也可以学习不同的共享模式。随着模型越来越多地评估多项任务以评估其泛化能力,多任务学习越来越重要,最近又有提出了多任务学习的专用基准。
Wordembedding论文名称:EfficientEstimationofWordRepresentationsinVectorSpace。
这是Mikolov等人在2013年提出的,其使得大规模的词嵌入模型训练成为可能。其提供了两种训练方案:一个基于周围的单词预测中心词,一个是根据中心词来预测周围的单词。
虽然捕获的关系word2vec具有直观且几乎神奇的质量,但后来的研究表明word2vec没有任何固有的特殊性:通过矩阵分解也可以学习单词嵌入和通过适当的调整,像SVD和LSA这样的经典矩阵分解方法可以获得类似的结果。
一个特别令人兴奋的方向是将不同语言的单词嵌入投影到同一空间中以实现(零射击)跨语言转移。越来越有可能以完全无监督的方式(至少对于类似语言)学习良好的投影,这开启了低资源语言和无监督机器翻译的应用。
NeuralnetworksforNLP2013年和2014年,三种主要类型的神经网络成为热点,应用到了NLP中:循环神经网络(recurrentneuralnetworks)、卷积神经网络(convolutionalneuralnetworks)和结构递归神经网络(recursiveneuralnetworks)。因此,这里有一大批论文,比如GRU的那一篇论文:LearningPhraseRepresentationsusingRNNEncoder–DecoderforStatisticalMachineTranslation。
RNN是处理NLP中普遍存在的动态输入序列的理想选择。VanillaRNNs很快被经典的长期短期记忆网络(LSTM)所取代,后者证明其对消失和爆炸梯度问题更具弹性。
随着卷积神经网络(CNN)被广泛用于计算机视觉,它们也开始应用于语言(Kalchbrenner等,2014;Kim等,2014)。用于文本的卷积神经网络仅在两个维度上操作,其中滤波器仅需要沿时间维度移动。下图显示了NLP中使用的典型CNN。
卷积神经网络的一个优点是它们比RNN更容易并行化,因为每个时间步的状态仅取决于本地环境(通过卷积运算)而不是像RNN中的所有过去状态。CNN可以使用扩张的卷积扩展到更宽的感受域,以捕捉更广泛的背景(Kalchbrenner等,2016)。CNN和LSTM也可以组合和堆叠,并且可以使用卷积来加速LSTM。RNN和CNN都将语言视为一个序列。然而,从语言学的角度来看,语言本质上是等级的:单词被组成高阶短语和子句,它们本身可以根据一组生产规则递归地组合。将句子视为树而不是序列的语言启发思想产生了递归神经网络。
自下而上构建序列的结构递归神经网络,与从左至右或从右至左对序列进行处理的循环神经网络相比,有着明显的不同。在树的每个节点处,通过组合子节点的表示来计算新表示。由于树也可以被视为在RNN上施加不同的处理顺序,因此LSTM自然地扩展到树形结构取代序列。不仅可以扩展RNN和LSTM以使用分层结构。不仅可以根据本地语言而且可以基于语法背景来学习单词嵌入(Levy&Goldberg,2014);语言模型可以基于句法堆栈生成单词(Dyer等,2016);图形卷积神经网络可以树状结构运行(Bastings等,2017)
Seq2seq这里其实和上面有交叉,因为Seq2seq可以使用上述的RNN等来实现。所以,也是有一大批论文。2014年,Sutskever等人提出了序列到序列学习,一种使用神经网络将一个序列映射到另一个序列的通用框架。在该框架中,编码器神经网络逐符号地处理句子并将其压缩成矢量表示;然后,解码器神经网络基于编码器状态逐个预测输出符号,在每个步骤中将先前预测的符号作为预测下一个的输入.
机器翻译成了这个框架的杀手级应用。2016年,谷歌宣布开始用神经MT模型替换其基于单片短语的MT模型(Wu等,2016)。根据JeffDean的说法,这意味着用500行神经网络模型替换500,000行基于短语的机器翻译代码。由于其灵活性,该框架现在是自然语言生成任务的首选框架,不同的模型承担编码器和解码器的角色。重要的是,解码器模型不仅可以以序列为条件,而且可以以任意表示为条件。这使得例如基于图片生成描述(Vinyals等人,2015),基于表格的文本(Lebret等人,2016),基于源的描述、代码更改(Loyola等,2017),以及许多其他应用程序成为可能。
在这个架构中,一个叫做解码器,一个叫做编码器。通常基于RNN,但是可以使用其他模型类型。新架构主要来自机器翻译的工作,机器翻译将作为序列到序列架构的培养皿。
Attention请注意一下,Attention机制首次提出是在这里,而不是那篇论文:attentionisallyouneed。
而是论文名称:NEURALMACHINETRANSLATIONBYJOINTLYLEARNINGTOALIGNANDTRANSLATE
注意力(Bahdanau等,2015)是神经MT(NMT)的核心创新之一,也是使NMT模型优于基于经典短语的MT系统的关键思想。序列到序列学习的主要瓶颈是它需要将源序列的整个内容压缩成固定大小的矢量。注意通过允许解码器回顾源序列隐藏状态来减轻这种情况,然后将其作为加权平均值提供给解码器的附加输入。
注意力机制是神经网络机器翻译(NMT)的核心创新之一,广泛适用,并且可能对任何需要根据输入的某些部分做出决策的任务有用。它已被应用于句法分析(Vinyals等,2015)、阅读理解(Hermann等,2015)和单样本学习(Vinyals等,2016)等等。输入的甚至不需要是一个序列,可以包括其他表示,比如图像的描述。注意力的一个有用的副作用是,通过根据注意力量检查输入的哪些部分与特定输出相关,它提供了罕见的对模型内部运作机制的观察。
注意也不仅限于查看输入序列;自我注意可用于查看句子或文档中的周围单词以获得更多上下文敏感的单词表示。这个注意力机制是Transformer架构的核心(Vaswani等,2017),这是目前最先进的NMT模型。
Memory-basednetworks注意力可以看作是模糊记忆的一种形式,其中记忆由模型的过去隐藏状态组成,模型选择从记忆中检索的内容。有关注意事项及其与内存的关联的更详细概述,请查看此文章。已经提出了许多具有更明确记忆的模型。它们有不同的变体,例如神经图灵机(NeuralTuringMachines)、记忆网络(MemoryNetwork)、端到端的记忆网络(End-to-endMemoryNewtorks)、动态记忆网络(DynamicMemoryNetworks)、神经可微计算机(NeuralDifferentiableComputer)、循环实体网络(RecurrentEntityNetwork)。通常基于与当前状态的相似性来访问存储器,类似于注意机制,并且通常可以写入和读取存储器。模型在实现和利用内存方面有所不同。例如,端到端内存网络多次处理输入并更新内存以启用多个推理步骤。神经图灵机还具有基于位置的寻址,允许他们学习简单的计算机程序,如排序。基于内存的模型通常应用于任务,其中保留较长时间跨度的信息应该是有用的,例如语言建模和阅读理解。存储器的概念非常通用:知识库或表可以用作存储器,而存储器也可以基于整个输入或其特定部分来填充。
Pretrainedlanguagemodels预训练的词嵌入与下游任务无关,仅用于初始化模型中的第一层。语言模型是无监督的,只需要未标记的文本;因此,培训可以扩展到数十亿单词的语料、新域和新语言。2015年首次提出了预训练语言模型(Dai&Le,2015);直到最近,它们才被证明对各种各样的任务都有益。语言模型嵌入可以用作目标模型中的特征(Peters等,2018),或者可以对目标任务数据微调语言模型(Ramachandran等,2017;Howard&Ruder,2018)。添加语言模型嵌入比许多不同任务的最新技术有了很大的改进。
已经展示了预训练语言模型,可以用更少的数据进行学习。由于语言模型仅需要未标记的数据,因此对于标记数据稀缺的低资源语言尤其有用。
预训练模型这个概念在2018年后大火。
神经网络的其他里程碑其他一些发展不如上面提到的那么普遍,但仍然具有广泛的影响。比如基于字符的描述(Character-basedrepresentations),在字符上使用CNN或LSTM来获得基于字符的单词表示是相当普遍的,特别是对于形态学丰富的语言和形态信息很重要或具有许多未知单词的任务。据我所知,基于特征的表示首先用于序列标记(Lample等,2016;Plank等,2016)。基于字符的表示减少了必须以增加的计算成本处理固定词汇表的需要,并且能够实现诸如完全基于字符的NMT之类的应用(Ling等人,2016;Lee等人,2017)。对抗学习(Adversariallearning)已经全面入侵和颠覆了及其计算领域,并且在NLP中也以不同的形式使用。对抗性示例越来越广泛地被广泛使用,不仅作为探测模型和理解其失败案例的工具,而且还使它们更加强大(Jia&Liang,2017)。(虚拟)对抗性训练,即最坏情况的扰动(Miyato等,2017;Yasunaga等,2018)和域对抗性损失(Ganin等,2016;Kim等,2017)是有用的正规化的形式可以同样使模型更加坚稳。生成对抗网络(GAN)对于自然语言生成来说,还不是太有效(Semeniuta等,2018),但是例如在匹配分布时是有用的(Conneau等,2018)。强化学习(Reinforcementlearning)已经被证明对于具有时间依赖性的任务是有用的,例如在训练期间选择数据(Fang等,Wu等,2018)和建模对话(Liu等,2018)。RL对于直接优化诸如反向强化学习在奖励太复杂而无法指定的环境中可能是有用的,例如视觉叙事(Wang等,2018)。
非神经网络方向的其他里程碑在1998年以及随后的几年中,引入了FrameNet项目(Baker等,1998),这导致了语义角色标记的任务,这是一种浅层语义分析,至今仍在积极研究中。在21世纪初期,与自然语言学习会议(CoNLL)共同组织的共同任务催化了核心NLP任务的研究,如分块(TjongKimSang等,2000),命名实体识别(TjongKimSang等,2003),以及依赖性解析(Buchholz等,2006)等。许多CoNLL共享任务数据集仍然是当今评估的标准。2001年,引入了条件随机区域(CRF;Lafferty等,2001),这是最具影响力的序列标记方法之一,在ICML2011中获得了时间测试奖.CRF层是核心部分目前最先进的模型用于序列标记问题与标签相互依赖性,如命名实体识别(Lample等,2016)。2002年,提出了双语评估替代研究(BLEU;Papineni等,2002)度量,这使得MT系统能够扩展,并且仍然是目前MT评估的标准度量。同年,引入了结构化先行者(Collins,2002),为结构化感知工作奠定了基础。在同一次会议上,引入了情感分析,这是最受欢迎和广泛研究的NLP任务之一(Pang等,2002)。这三篇论文都获得了2018年NAACL的时间测试奖。2003年引入了潜在的dirichlet分配(LDA;Blei等,2003),这是机器学习中使用最广泛的技术之一,它仍然是进行主题建模的标准方法。2004年,提出了新的最大边际模型,它们更适合捕获结构化数据中的相关性而不是SVM(Taskar等,2004a;2004b)。2006年,OntoNotes(Hovy等,2006)引入了一个具有多个注释和高交互注入协议的大型多语言语料库。OntoNotes已被用于培训和评估各种任务,例如依赖性解析和共参考解析。Milne和Witten(2008)在2008年描述了维基百科如何用于丰富机器学习方法。到目前为止,维基百科是用于训练ML方法的最有用的资源之一,无论是用于实体链接和消歧,语言建模,作为知识库还是各种其他任务。2009年,提出了远程监督的想法(Mintz等,2009)。远程监督利用来自启发式或现有知识库的信息来生成可用于从大型语料库中自动提取示例的噪声模式。远程监督已被广泛使用,并且是关系提取,信息提取和情感分析以及其他任务中的常用技术。
参考https://www.jianshu.com/p/284a153c1cd6