第一部分 基础
第1章 自然语言处理概要
语言不仅仅是文字。它还是一种文化,一种传统,一个群体的一致性,一段塑造了群体面貌的完整历史。所有这些都体现在一种语言中。
——诺姆•乔姆斯基
想象一个虚构的人物:约翰。他在一家快速发展的科技创业公司担任首席技术官。在繁忙的一天,约翰醒来后,与数字助理进行了以下对话。
约翰:“今天天气怎么样?”
数字助理:“今天外面37℃,没有下雨。”
约翰:“我的日程安排是怎样的?”
数字助理:“您下午4:00 有一个战略会,下午5:30 有一个全体员工会议。根据今天的交通状况,建议您在上午8:15 之前出发去办公室。”
约翰一边穿衣服,一边向助理打听他的着装选择。
约翰:“我今天该穿什么衣服?”
数字助理:“白色似乎是个不错的选择。”
你可能已经使用亚马逊Alexa、谷歌Home 或Apple Siri 等智能助手来做类似的事情了。我们和这些智能助手交谈,不是通过编程语言,而是通过自然语言——一种人与人交流所采用的语言。自远古以来,自然语言一直是人类交流的主要媒介。但是计算机只能处理由0 和1 组成的二进制数据。虽然语言数据可以用二进制来表示,但是如何让机器理解语言呢?这就产生了一个新的领域:自然语言处理(natural language processing, NLP)。自然语言处理是计算机科学的一个分支领域,它研究的是分析、建模和理解人类语言的方法。每一个涉及人类语言的智能应用程序,背后都有一定程度的自然语言处理。本书将解释什么是自然语言处理,以及如何使用自然语言处理来构建和扩展智能应用程序。由于自然语言处理问题的开放性,同一个问题可能有几十种备选方案。这本书将帮助你在迷宫里确定方向,并根据问题找到最佳选项。
本章的目的是简要介绍什么是自然语言处理,方便后续内容深入研究如何在不同的应用场景中实现基于自然语言处理的解决方案。本章首先概述真实场景中的各种自然语言处理应用程序,接着介绍自然语言处理应用程序背后的各种基础任务。接下来,从自然语言处理的角度来介绍语言是什么,以及自然语言处理为什么很难。随后,概述启发式、机器学习和深度学习,并介绍自然语言处理的几种常用算法。然后是自然语言处理应用程序的演练。本章的最后会简要介绍本书的其余主题。图1-1 从自然语言处理任务和应用程序两方面梳理了本书的组织结构。
图1-1:从自然语言处理任务和应用程序梳理的组织结构
在日常生活中,很多应用程序使用了某种形式的自然语言处理作为主要组件,下面先来看其中的一些。