Brownlee, Jason. 2020. “What Is Natural Language Processing?” retrieved 12/20/2020 https://machinelearningmastery.com/natural-language-processing/自然语言处理,简称NLP,广义上定义为通过软件自动处理自然语言,如语音和文本。自然语言处理的研究已有超过50年的历史,随着计算机技术的发展,它从语言学领域中逐渐发展起来。在这篇文章中,您将了解自然语言处理是什么,以及它为何如此重要。阅读完这篇文章后,您将能够了解:(1)自然语言是什么,以及它与其他数据类型有何不同。(2)处理自然语言为何如此具有挑战性。(3)自然语言处理领域的起源,以及现代实践者如何定义它。借助我的新书 Deep Learning for Natural Language Processing,您可以启动您的项目,书中包含详细的分步教程和所有示例的Python源代码文件。让我们开始探索吧。自然语言自然语言是我们人类相互交流的方式,包括语音和文本。我们生活在一个被文本包围的世界中。想象一下,你每天会接触到多少文本:指示牌、菜单、电子邮件、短信、网页等等……这个列表是无穷无尽的。现在,再想想语音。作为人类,我们可能更多地通过说话而不是书写来交流。甚至可以说,学习说话比学习写作要容易。声音和文字是我们相互沟通的媒介。鉴于这种数据类型的重要性,我们必须拥有理解和推理自然语言的方法,就像我们处理其他类型的数据一样自然语言的挑战自然语言数据处理的问题尚未得到解决。这个问题已经研究了半个世纪,其难度之大不言而喻。从孩童学习语言需要花费多年时间的角度来看,掌握自然语言是一项艰巨的任务……对于成年语言学习者来说,这同样是一项挑战;对于试图模拟语言现象的科学家来说,这同样是一项挑战;对于试图构建处理自然语言输入或输出系统的工程师来说,这更是一项艰巨的任务。这些任务的难度之高,以至于图灵将流畅的自然语言对话作为其智能测试的核心。— Page 248, Mathematical Linguistics, 2010.自然语言之所以难以处理,主要是因为它的复杂性和不规律性。自然语言几乎没有明确的规则。然而,尽管如此,我们大多数时候仍能轻松地理解彼此。人类语言具有高度的模糊性……它也在不断变化和发展。人们擅长创造和理解语言,能够表达、感知和解释非常复杂和微妙的含义。与此同时,尽管我们人类在使用语言方面非常出色,但我们在正式理解和描述语言规则方面却做得不够好。— Page 1, Neural Network Methods in Natural Language Processing, 2017.从语言学到自然语言处理语言学语言学是一门科学地研究语言的学科,包括语法、语义和语音。古典语言学涉及设计和评估语言规则。在语法和语义的形式化方法上取得了巨大进展,但大多数情况下,自然语言理解中的有趣问题仍然难以用简洁的数学形式化方法解决。广义上讲,任何研究语言的人都可以称为语言学家,但更通俗地说,自我定义的语言学家可能更专注于实地研究。数学是科学的工具。研究自然语言的数学家可能会将其研究称为数学语言学,专注于离散数学形式和理论在自然语言中的应用(例如形式语言和自动机理论)。计算语言学计算语言学是使用计算机科学工具对语言学进行现代研究的学科。随着计算工具和思维的普及,昨天的语言学家可能就是今天的计算语言学家。计算语言学是研究计算机系统如何理解和生成自然语言的学科。……计算语言学的一个自然功能是测试理论语言学家提出的语法。— Pages 4-5, Computational Linguistics: An Introduction, 1986.大数据和高速计算机意味着通过编写和运行软件,可以从大型文本数据集中发现新的不同事物。在20世纪90年代,统计方法和统计机器学习开始并最终取代了传统的自上而下基于规则的语言方法,这主要是因为它们具有更好的结果、速度和鲁棒性。研究自然语言的统计方法现在主导了这一领域;它可能定义了这一领域。自然语言处理的数据驱动方法如今已非常流行,以至于必须将其视为计算语言学的主流方法。……毫无疑问,这一发展的一个重要因素是这些方法可以应用的电子存储数据的数量增加;另一个因素可能是人们对完全依赖手工规则的方法的失望,因为这些方法存在明显的缺陷。— Page 358, The Oxford Handbook of Computational Linguistics, 2005.自然语言的统计方法自然语言的统计方法不仅限于统计学本身,还包括应用机器学习中使用的先进推理技术。……理解自然语言需要广泛的知识,包括形态学、语法、语义学和语用学,以及对世界的一般性知识。获取和编码所有这些知识是开发有效且强大的语言系统面临的根本挑战之一。正如统计方法所做的那样……机器学习方法提供了从带注释或无注释的语言语料库中自动获取这些知识的希望。— Page 377, The Oxford Handbook of Computational Linguistics, 2005.统计自然语言处理计算语言学也被称为自然语言处理(NLP),以反映统计方法中更基于工程师或经验的方法。该领域统计方法的主导地位也常常导致人们将自然语言处理描述为统计自然语言处理,也许是为了将其与经典的计算语言学方法区分开来。我认为计算语言学兼具科学性和工程性。计算语言学的工程性部分通常被称为自然语言处理(NLP),主要涉及构建计算工具,利用语言完成有用的任务,例如机器翻译、摘要、问答等。与任何工程学科一样,自然语言处理也借鉴了各种不同的科学学科。— How the statistical revolution changes (computational) linguistics, 2009.语言学是一个广泛的研究领域,尽管统计方法在自然语言处理方面取得了一些成功,但经典的自上而下的方法仍有很大的发展空间和优势。粗略地说,统计自然语言处理将概率与分析话语或文本时遇到的备选方案联系起来,并接受最可能的结果为正确结果。……毫不奇怪,命名世界或我们对世界的认知中密切相关的现象的词语经常出现得非常接近,因此关于世界的清晰事实反映在关于文本的模糊事实中。这种观点还有很多值得商榷的地方。— Page xix, The Oxford Handbook of Computational Linguistics, 2005.自然语言处理作为对文本数据感兴趣的机器学习从业者,我们专注于自然语言处理领域的工具和方法。在上一节中,我们已经探讨了从语言学到自然语言处理的演变。现在,让我们深入了解现代研究人员和从业者是如何定义自然语言处理的。在一本由该领域顶尖研究人员撰写的、广受欢迎的教科书中,作者将这一学科称为“语言学科学”,这使得我们可以同时讨论经典语言学和现代统计方法。语言学科学的目标是能够描述和解释我们周围环境中的各种语言现象,无论是在对话、写作还是其他媒介中。这包括了解人类如何获取、产生和理解语言的认知过程,理解语言表达与现实世界之间的关系,以及理解语言交流所依赖的语言结构。— Page 3, Foundations of Statistical Natural Language Processing, 1999.统计方法在自然语言处理中的应用他们继续专注于通过使用统计方法进行自然语言处理中的推断。统计自然语言处理旨在对自然语言领域进行统计推断。一般来说,统计推断包括获取一些数据(这些数据是根据某些未知的概率分布生成的),然后对这种分布做出推断。— Page 191, Foundations of Statistical Natural Language Processing, 1999.在关于应用自然语言处理的著作中,NLTK Python自然语言处理库的作者和贡献者广泛地描述了这一领域,即利用计算机处理自然语言数据。我们将从广义上理解自然语言处理(简称NLP),它涵盖了计算机对自然语言的任何一种操作。在一种极端情况下,它可能只是简单地计算单词频率,以比较不同的写作风格。在另一种极端情况下,NLP涉及“理解”人类完整的语言,至少能够对它们做出有用的回应。— Page ix, Natural Language Processing with Python, 2009.统计自然语言处理的新篇章统计自然语言处理(Statistical NLP)已经迎来了新的转折点,目前正大力关注深度学习神经网络的使用,以对特定任务进行推理,并开发强大的端到端系统。在最早一批专门讨论这一新兴主题的教科书中,Yoav Goldberg将自然语言处理(NLP)简明地定义为以自然语言为输入或输出自然语言的自动方法。自然语言处理(NLP)是一个统称,指的是对人类语言的自动计算处理。这包括将人类生成的文本作为输入的算法,以及将自然文本作为输出的算法。— Page xvii, Neural Network Methods in Natural Language Processing, 2017.延伸阅读Books:Mathematical Linguistics, 2010.Neural Network Methods in Natural Language Processing, 2017.Computational Linguistics: An Introduction, 1986.The Oxford Handbook of Computational Linguistics, 2005.Foundations of Statistical Natural Language Processing, 1999.Natural Language Processing with Python, 2009.Wikipedia:Linguistics on WikipediaComputational linguistics on WikipediaNatural language processing on WikipediaHistory of natural language processing on WikipediaOutline of natural language processing on Wikipedia