赞
踩
自然语言处理,英文Natural Language Processing,简写NLP。NLP这个概念本身过于庞大,很难通过简短的几句定义就能明白它是什么。不妨把它分成“自然语言”和“处理”两部分。先来看自然语言。区分于计算机语言,自然语言是人类发展过程中形成的一种信息交流的方式,包括口语及书面语,反映了人类的思维。简单的一句问候“你好”,以及正在看的这篇,都是以自然语言的形式表达。现在世界上所有的语种语言,都属于自然语言,包括汉语、英语、法语等。然后再来看“处理”。如果只是人工处理的话,那我们原本就有专门的语言学来研究,也没必要特地强调“自然”。因此,这个“处理”必须是计算机处理的。但计算机毕竟不是人,无法像人一样处理文本,需要有自己的处理方式。因此自然语言处理,简单来说即是计算机接受用户自然语言形式的输入,并在内部通过人类所定义的算法进行加工、计算等系列操作,以模拟人类对自然语言的理解,并返回用户所期望的结果。正如机械解放人类的双手一样,自然语言处理的目的在于用计算机代替人工来处理大规模的自然语言信息。它是人工智能、计算机科学、信息工程的交叉领域,涉及统计学、语言学等的知识。由于语言是人类思维的证明,故自然语言处理是人工智能的最高境界,被誉为“人工智能皇冠上的明珠”。
下面,统一以NLP来指代自然语言处理。
【NLP的终极目标】
“你指尖跃动的代码,是我此生不变的信仰,唯我NLP永世长存”
从计算机诞生,NLP这个概念被提出伊始,人们便希望计算机能够理解人类的语言,于是便有了图灵测试。尽管今年google I/O大会上的Google Assistant宣称已经通过了图灵测试,但离真正理解人类语言仍有很长的距离(并且我对其生成的对话是否完全由机器生成而不是用规则定义表示深深的怀疑。。。)让计算机能够确切理解人类的语言,并自然地与人进行交互是NLP的最终目标,也是大多数NLPer的最高信仰。为此各路大佬挥舞手中的代码不断挖坑填坑,攻克一个又一个难题,推动NLP一直往前发展。
【NLP的技术概貌】
“我们的征途是星辰大海”
NLP里细分领域和技术实在太多,根据NLP的终极目标,大致可以分为自然语言理解(NLU)和自然语言生成(NLG)两种。NLU侧重于如何理解文本,包括文本分类、命名实体识别、指代消歧、句法分析、机器阅读理解等;NLG则侧重于理解文本后如何生成自然文本,包括自动摘要、机器翻译、问答系统、对话机器人等。两者间不存在有明显的界限,如机器阅读理解实际属于问答系统的一个子领域。
大致来说,NLP可以分为以下几个领域:
所涉及的基本技术有:
常用算法有:
tfidf、BM25、TextRank、HMM、CRF、LSI、主题模型、word2vec、GloVe、LSTM/GRU、CNN、seq2seq、Attention……
【NLP的发展历程】
“NLP兽,进化!”
1948年,香农提出信息熵的概念。此时尚未有NLP,但由于熵也是NLP的基石之一,在此也算作是NLP的发展历程。
按照维基百科的说法,NLP发源于1950年。图灵于该年提出“图灵测试”,用以检验计算机是否真正拥有智能。
-----------NLP规则时代-----------
1950-1970年,模拟人类学习语言的习惯,以语法规则为主流。除了参照乔姆斯基文法规则定义的上下文无关文法规则外,NLP领域几乎毫无建树。
-----------NLP统计时代-----------
70年代开始统计学派盛行,NLP转向统计方法,此时的核心是以具有马尔科夫性质的模型(包括语言模型,隐马尔可夫模型等)。
2001年,神经语言模型,将神经网络和语言模型相结合,应该是历史上第一次用神经网络得到词嵌入矩阵,是后来所有神经网络词嵌入技术的实践基础。也证明了神经网络建模语言模型的可能性。
2001年,条件随机场CRF,从提出开始就一直是序列标注问题的利器,即便是深度学习的现在也常加在神经网络的上面,用以修正输出序列。
2003年,LDA模型提出,概率图模型大放异彩,NLP从此进入“主题”时代。Topic模型变种极多,参数模型LDA,非参数模型HDP,有监督的LabelLDA,PLDA等。
2008年,分布式假设理论提出,为词嵌入技术的理论基础。(分布式假设的思想并非直到08年才有,详见Gavagai - Distributional Semantics - gavagai.se)
在统计时代,NLP专注于数据本身的分布,如何从文本的分布中设计更多更好的特征模式是这时期的主流。在这期间,还有其他许多经典的NLP传统算法诞生,包括tfidf、BM25、PageRank、LSI、向量空间与余弦距离等。值得一提的是,在20世纪80、90年代,卷积神经网络、循环神经网络等就已经被提出,但受限于计算能力,NLP的神经网络方向不适于部署训练,多停留于理论阶段。
-----------NLP深度时代-----------
2013年,word2vec提出,NLP的里程碑式技术,从此万物embedding
2013年,CNNs/RNNs/Recursive NN,随着算力的发展,神经网络可以越做越深,之前受限的神经网络不再停留在理论阶段。在图像领域证明过实力后,Text CNN问世;同时,RNNs也开始崛起。在如今的NLP技术上,一般都能看见CNN/LSTM的影子。
本世纪算力的提升,使神经网络的计算不再受限。有了深度神经网络,加上嵌入技术,人们发现虽然神经网络是个黑盒子,但能省去好多设计特征的精力。至此,NLP深度学习时代开启。
2014年,seq2seq提出,在机器翻译领域,神经网络碾压基于统计的SMT模型。
2015年,attention提出,可以说是NLP另一里程碑式的存在。带attention的seq2seq,碾压上一年的原始seq2seq。记得好像17年年初看过一张图,调侃当时学术界都是attention的现象,也证明了attention神一般的效果。
2017年末,Transformer提出。似乎是为了应对Facebook纯用CNN来做seq2seq的“挑衅”,google就纯用attention,并发表著名的《Attention is All You Need》。初看时以为其工程意义大于学术意义,直到BERT的提出才知道自己还是too young。
2018年末,BERT提出,横扫11项NLP任务,奠定了预训练模型方法的地位,NLP又一里程碑诞生。光就SQuAD2.0上前6名都用了BERT技术就知道BERT的可怕。
深度学习时代,神经网络能够自动从数据中挖掘特征,人们从复杂的特征中脱离出来,得以更专注于模型算法本身的创新以及理论的突破。并且深度学习从一开始的机器翻译领域逐渐扩散到NLP其他领域,传统的经典算法地位大不如前。但神经网络似乎一直是个黑箱,可解释性一直是个痛点,且由于其复杂度更高,在工业界经典算法似乎还是占据主流(这半句为个人感觉,并无可靠依据)。
(迁移学习、强化学习、对抗学习、模仿学习等方法虽然也极大地推动了NLP的发展,但由于它们不单为NLP所独有,主要是深度学习的发展,故此处不列出)
【NLP的目前难点】
“NLP的难点甚是喧嚣啊”
目前,仍有很多制约NLP发展的因素,这些因素构成了NLP的难点。而且要命的是,大多数是基础技术的难点。个人不完全统计,有:
【NLP对其他领域的影响】
“只要有文本飞舞的地方,NLP技术就会燃烧”
由于自然语言作为人类社会信息的载体,使得NLP不只是计算机科学的专属。在其他领域,同样存在着海量的文本,NLP也成为了重要支持技术:
(列举的公司名字为当时脑里想到的第一个名字,不具普遍性)
以上,仅以我近2年的NLP入坑经历的角度出发。根据《2018年新一代人工智能白皮书:产业增长点研判》,全球(包括我国)在NLP产业均处于产业培育阶段,或许不出几年我们就能有幸见证NLP产业的扩张。希望能有更多的人分享自己的看法,也希望有更多的人对NLP产生兴趣。
参考
Gavagai - Distributional Semantics - gavagai.se
http://ruder.io/a-review-of-the-recent-history-of-nlp/index.html
《数学之美》吴军,第2章 自然语言处理——从规则到统计
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。