Natural 自然语言处理(NLP)「全解析」

2017 年 9 月 23 日 人工智能学家

原文来源: 机器人圈

概要:在自然语言处理方面的研究已经延续了五十多年,而随着计算机的兴起,它的发展也早已超出了语言学的范畴。


提起AI,你可能会不假思索的想到自然语言处理、人脸识别、无人驾驶等。那么,你对这些真的了解吗?接下来,我们就以自然语言处理为例,来仔细说一说。


自然语言处理(Natural Language Processing),简称NLP,广义上定义为通过软件对诸如语音和文本这样的自然语言进行自动操作。


在自然语言处理方面的研究已经延续了五十多年,而随着计算机的兴起,它的发展也早已超出了语言学的范畴。


而当你读完本篇文章之后,你就会明白什么是自然语言处理,以及它为什么那么重要:


•什么是自然语言?它与其他类型的数据有什么不同?


•什么使得处理自然语言的工作变得如此具有挑战性?


•NLP的领域来自哪里?现代从业者是如何对其进行界定的?


现在我们就来深入探索一下!


自然语言


自然语言是指我们作为人类来说,人与人之间相互沟通的方式,即语音和文本。而我们无时不刻地处在文本的包围之中。


想象一下你每天将会看到多少文本:


•符号


•菜单


•电子邮件


•短信


•网页


•还有更多……


甚至可以说,这个名单是无休无止的。


现在我们先来考虑一下语音。


人类作为一个物种,我们可以相互交流,而这要远远超过我们所需要进行的写作。我们不得不承认,相对写作来说,学会说话要简单得多。


语音和文字是我们进行相互交流的方式。


鉴于这种类型的数据的重要性,我们必须有方法来了解和理解自然语言,就像我们对其他类型的数据一样。


自然语言的挑战


使用自然语言数据所存在的问题还没有得到解决。


该领域的专家已经对其进行了半个多世纪的研究,但必须要承认,它真的很难。


对于那些必须花费好多年来学习获得一门语言的孩子来说,这是很难的;对于一个学习语言的成年人来说,这是很难的;对于那些尝试建模的科学家来说,这是很难的;同样,对于那些尝试构建处理自然语言输入或输出系统的工程师来说,这也是很难的。这些任务是如此的困难,以至于图灵将可以用自然语言进行流畅的交流作为他对智能测试的核心。


——2010年《数学语言学》,第248页


自然语言之所以难主要是因为它很混乱,几乎没有规则可循。


不过大部分的时间里我们而已很容易地彼此相互理解。


人类语言是非常模糊的……它也在不断变化和演变。从古至今,人类在创造语言、理解语言方面是非常擅长的,并且能够表达,感知和解读非常精细和细微的含义。同时,虽然我们人类是语言使用的极大群体者,但我们在形式理解和描述用以管理语言的规则方面还存在一定的欠缺。


——2017年《自然语言处理中的神经网络方法》,第1页


从语言学到自然语言处理


语言学


语言学是对语言进行的科学研究,包括语法、语义学和语音学。


古典语言学涉及到语言规则的设计和评估,在语法和语义学的形式方法上取得了很大的进步,但在大多数情况下,自然语言理解中存在的很多有趣的问题遏制了清晰的数学形式。


广义上来说,语言学家可以是学习语言的任何人,但更通俗地说,一个以语言学家自居的人可能更侧重于此领域之外的领域。


数学是科学的工具。从事自然语言工作的数学家可能将他们的研究称为数学语言学,仅专注于离散数学形式学的使用和自然语言理论(例如形式语言和自动机理论)。


计算语言学


计算语言学是使用计算机科学工具对语言学进行的现代研究。昨天的语言学可能是今天的计算语言学家,因为计算工具的使用和思考方式的改变已然跨越了研究的大多数领域。


计算语言学是对理解和产生自然语言的计算机系统的研究。计算语言学的一个本质上的功能将是对理论语言学家提出的语法进行测试。


——1986年《计算语言学》导言,第4-5页


大数据和计算机的发展意味着,通过编写和运行软件,可以从大量文本数据集中发现新的、不同的事物。


在20世纪90年代,统计方法和统计机器学习开始盛行,并最终取代了经典的自上而下的基于规则的语言方法,而这主要得益于它们结果的优良性、速度的快捷性、以及鲁棒性。现在研究自然语言的统计方法主导了这一领域,它可以定义这个领域。


现如今,数据驱动的自然语言处理方法受到了广泛的欢迎,以至于被认定是计算语言学的主流方法。导致这一发展的一个强有力的因素无疑是可用的电子存储数据的增加量,从而为这些处理方法的应用提供了充足的数据量。由于其观察到的脆性,另一个因素可能是在看到现存方法的脆弱性之后对过分依赖手工制动规则的觉醒。


——2005年《牛津计算语言学手册》,第358页


自然语言的统计方法不仅限于统计本身,而且还包括用于应用机器学习中的高级推理方法。


理解自然语言并不是一件简单的事情,这需要大量的关于形态学、语法、语义和语用学知识,以及对世界的普遍认识。获取和对所有这些知识进行编码是开发具有良好有效性和鲁棒性的语言系统的根本障碍之一。就像统计方法一样,机器学习方法并没有做到这一点,即从带有注释或未注释的语言语料库中自动获取这种知识。


——2005年《牛津计算语言学手册》,第377页


统计自然语言处理


计算语言学也被称为自然语言处理或NLP,以反映统计方法的更为基于工程师或经验的方法性一面。


该领域的统计优势还常常导致NLP被描述为统计自然语言处理,也许是为了将其与经典计算语言学方法区别开来。


我认为计算语言学既具有科学的一面又具有工程学的一面。称为工程学的这一面,通常称为自然语言处理(NLP),主要涉及构建计算工具,以便使用语言做有用的事情,例如机器翻译、总结、问答等。与任何工程学科一样,自然语言处理也涵盖了各种不同的科学学科。


——2009年《统计变革是如何改变(计算)语言学的》



语言学是一个很大的研究课题,虽然NLP的统计学方法在某些领域取得了巨大的成功,但从传统的自上而下的方法来看,仍然有很大的空间和巨大的收益。


粗略地说,统计NLP将概率与在分析话语或文本过程中遇到的替代方案相关联,并将最可能的结果接受为正确的结果。 ......毫不奇怪的是,词语的名称现象在世界上都是密切相关的,或者我们对它的认知,在关于世界的事实反映在文本的一些模糊事实上,经常彼此接近。这个观点有很大的争论空间。

 

——2005年《牛津计算语言学手册》,第19页

 

自然语言处理

 

作为对处理文本数据感兴趣的机器学习从业者,我们关注自然语言处理领域中的工具和方法。

 

在前面的内容中,我们已经看到了从语言学到NLP的路径。现在,我们来看看现代研究人员和从业人员如何定义NLP的所有内容。

 

在这一领域最顶尖研究人员撰写的教科书中,他们将这个学科称为“语言科学”,允许讨论古典语言学和现代统计学方法。


语言科学的目的是能够描述和解释围绕在我们周围的大量语言观察,在对话、写作和其他媒体中。其中一部分与人类获取、产生和理解语言的认知范围有关,一部分与理解语言话语与世界的关系有关,一部分与了解用哪种语言沟通的语言结构有关。

 

——1999年《统计自然语言处理基础》,第3页

 

他们通过在自然语言处理中使用统计方法继续关注推理过程。


统计NLP旨在对自然语言领域进行统计推理。统计推理通常包括采取一些数据(根据一些未知概率分布生成),然后对该分布进行一些推断。

 

—— 1999年《统计自然语言处理基础》,第191页

 

在应用自然语言处理的文本中,作者、NLP的知名NLPK Python库的贡献者将其广泛描述为使用计算机来处理自然语言数据。


我们将采用自然语言处理(简称NLP),涵盖了对自然语言任何类型的计算机操作。一方面,它可以简单地计算单词频率来比较不同的写作风格。另一方面,NLP涉及“理解”完整的人类言语,至少在能够给予有效回应的程度上。

 

——2009《用Python进行自然语言处理》,第9页

 

统计NLP已经转向另一个角度,现在强调使用深度学习神经网络来对特定任务进行推理,并开发强大的端对端系统。

 

在第一本专门针对这一新兴主题的教科书中,Yoav Goldberg简洁地将NLP定义为将自然语言作为输入或生成自然语言作为输出的自动方法。

 

自然语言处理(NLP)是指人类语言的自动计算处理的总称。这包括将人类生成的文本作为输入的算法,以及生成自然文本作为输出的算法。


——2017年《自然语言处理中的神经网络方法》,第17页

 

进一步阅读

 

如果你想更深入了解,本部分将提供有关该主题的更多资源。

 

图书:

《数学语言学》,2010,http://amzn.to/2tO1cOO


《自然语言处理中的神经网络方法》,2017,http://amzn.to/2u0JtPl


《计算语言学:导论》,1986,http://amzn.to/2h6U4qY


《牛津计算语言学手册》,2005年,http://amzn.to/2uHeERE 


《统计自然语言处理基础》,1999,http://amzn.to/2uzwxDE


《用Python进行自然语言处理》,2009,http://amzn.to/2uZMF27

 

维基百科:

维基百科上的语言学,https://en.wikipedia.org/wiki/Linguistics


维基百科上的计算语言学,https://en.wikipedia.org/wiki/Computational_linguistics


维基百科上的自然语言处理https://en.wikipedia.org/wiki/Natural_language_processing


维基百科上的自然语言处理史https://en.wikipedia.org/wiki/History_of_natural_language_processing


维基百科上的自然语言处理概要https://en.wikipedia.org/wiki/Outline_of_natural_language_processing

登录查看更多
14

相关内容

自然语言处理(NLP)是语言学,计算机科学,信息工程和人工智能的一个子领域,与计算机和人类(自然)语言之间的相互作用有关,尤其是如何对计算机进行编程以处理和分析大量自然语言数据 。

知识荟萃

精品入门和进阶教程、论文和代码整理等

更多

查看相关VIP内容、论文、资讯等
专知会员服务
197+阅读 · 2020年3月6日
深度学习自然语言处理综述,266篇参考文献
专知会员服务
225+阅读 · 2019年10月12日
如何使用自然语言工具包(NLTK)在Python3中执行情感分析
Python程序员
18+阅读 · 2019年10月28日
机器推理系列文章概览:七大NLP任务最新方法与进展
微软研究院AI头条
9+阅读 · 2019年9月11日
NLP 与 NLU:从语言理解到语言处理
AI研习社
15+阅读 · 2019年5月29日
自然语言处理NLP的坑到底有多大?
专知
45+阅读 · 2018年11月12日
自然语言处理NLP快速入门
专知
19+阅读 · 2018年10月8日
自然语言处理(NLP)知识结构总结
AI100
51+阅读 · 2018年8月17日
最全面的百度NLP自然语言处理技术解析
InfoQ
7+阅读 · 2017年11月12日
自然语言处理在人机对话中的应用
京东大数据
7+阅读 · 2017年8月11日
NLP(自然语言处理)扫盲
大数据和云计算技术
20+阅读 · 2017年7月9日
Arxiv
6+阅读 · 2019年7月11日
Arxiv
3+阅读 · 2018年11月29日
Arxiv
6+阅读 · 2018年11月1日
Arxiv
21+阅读 · 2018年8月30日
Doubly Attentive Transformer Machine Translation
Arxiv
4+阅读 · 2018年7月30日
VIP会员
相关资讯
如何使用自然语言工具包(NLTK)在Python3中执行情感分析
Python程序员
18+阅读 · 2019年10月28日
机器推理系列文章概览:七大NLP任务最新方法与进展
微软研究院AI头条
9+阅读 · 2019年9月11日
NLP 与 NLU:从语言理解到语言处理
AI研习社
15+阅读 · 2019年5月29日
自然语言处理NLP的坑到底有多大?
专知
45+阅读 · 2018年11月12日
自然语言处理NLP快速入门
专知
19+阅读 · 2018年10月8日
自然语言处理(NLP)知识结构总结
AI100
51+阅读 · 2018年8月17日
最全面的百度NLP自然语言处理技术解析
InfoQ
7+阅读 · 2017年11月12日
自然语言处理在人机对话中的应用
京东大数据
7+阅读 · 2017年8月11日
NLP(自然语言处理)扫盲
大数据和云计算技术
20+阅读 · 2017年7月9日
Top
微信扫码咨询专知VIP会员