微软的创始人比尔·盖茨曾把语言理解誉为“人工智能皇冠上的明珠”,一方面说明自然语言处理用处广泛,是很多领域迫切希望解决的问题;另一方面也说明这是一个极有难度的方向。随着深度学习的发展,在计算机视觉和语音识别领域,人工智能在特定问题上的能力已经超越了人类水平。但是时至今日,在自然语言处理领域中仍有很多具有挑战性的基本问题未被解决。如果把人工智能研究的内容分为感知和认知两部分,那么计算机视觉和语音识别等领域属于感知的部分,而自然语言处理则属于认知部分。对于智能系统来说,仅仅具有感知能力显然是不够的,具有能够理解和消化内容的认知能力才是智能系统真正意义上的核心。有观点认为,自然语言处理体现了人工智能的最高境界,当计算机具备了完全的处理自然语言的能力时,才算实现了真正的智能。
所谓“自然语言”,指的是人们在日常交流中所使用的语言,如汉语、英语、德语等。由于自然语言具有多样性,又有复杂的含义及语法变化,很难完全通过明确的规则进行描述。而人工智能中的自然语言处理,恰恰是希望通过数学符号和编程语言这种规则化的方式,来理解自然语言这种不完全规则化的语言。它基于大量的数据、人工智能算法、语言学及其他相关学科的知识,大体可以分为语言理解和语言生成两大任务。语言理解包含对词法、句法、语义的分析,对文本内容的理解、文本情感的分析等内容,语言生成包含文本到语音的转换(TTS)、文本摘要、写作等内容。虽然当前这些目标还不能完全实现,但是现有的技术已经可以理解文本的写作风格,理解词性及词汇之间的关联,在人机对话中对人说出的话做出部分有效的反应,实现不同语种的语言之间的翻译工作,使用机器生成可以媲美人声的音频,通过机器实现特定领域的文本写作等。
自然语言处理的应用场景非常广泛。例如,电脑及手机输入法的拼写检查及联想提示、搜索引擎对非结构化文本中信息的提取、商品评论的情绪分析、推荐系统、机器翻译、智能客服、机器写作、智能音箱等。
对指定的文本,尝试理解其内容之前首先需要对文本进行处理。以中文文本处理为例,词与词之间并没有明显的边界(英文单词之间以空格分隔),并且同一个句子存在多种划分方式(切分歧义)。例如,“中外科学名著”,包含了“中外”“外科”“科学”“外科学”“名著”等词汇,如何根据上下文的含义对词汇进行正确的切分?文本中还有可能存在手写错误或输入不规范的情况,如何减少这种因素的影响?在汉语中存在大量的多音字、多义词和歧义句,如“他和我说的一模一样”,可以理解成他的样子和我描述的样子是一样的,也可以理解成他所说的话和我所说的话是一样的。要让机器准确地理解句子的含义,必须结合上下文的语境来判断,如何让机器具有一定的记忆功能,从而可以结合语境理解语义?这些都是困难的问题。
自然语言处理的历史大体与人工智能的历史同步,1950年图灵提出的判断机器智能的“图灵测试”,即是理解文本并做出符合人类逻辑的问答系统的一种测试标准。早期的处理方法多是基于规则的,通过使用计算机语言描述语法、词性、构词法等,尝试让机器理解人类的语言。这种方法开发的周期很长,需要语言学、语音学等各领域的专家配合。并且很难建立完整的规则体系描述人类的语言,开发出的系统泛化能力很差,严格的规则对于一些非本质错误容忍度很低(如输入错误),在大数据量的背景下,进行系统优化也很困难。种种原因导致基于规则的方法渐渐不受重视,20世纪70年代,基于经验(统计)的方法开始大放异彩。IBM采用统计的方法解决语音识别问题,将识别率从70%提升到90%,使得语音识别有了从实验室走向实际应用的可能。大量基于统计的机器学习算法,如贝叶斯方法、隐马尔可夫、最大熵、支持向量机等,都被用于自然语言处理并取得了某种程度的成功。在当下这个深度学习成为人工智能主角的时代,深度学习技术当然也被大量地用于自然语言处理领域,它能够注意到前后词语之间的关联,通过各种网络结构来学习文本的整体含义,而不是孤立地看待单个或数个词汇,可以认为深度学习是处理并理解语言的第三种方法。
在对待这些不同流派的方法时,应该采取理性的态度。任何技术都有它的优缺点和生命周期,现在自然语言处理仍处于不太成熟的发展期,没有哪种方法能够完美地解决问题,结合不同方法的优点,才是正确的方向。例如,应用深度学习处理语言问题时,结合基于规则的方法,往往会取得更好的效果。另外,虽然现有的自然语言处理技术仍不能进行常识性地推理或者可靠地描述知识,但是在解决这些难题的同时要认识到,存在缺陷的语言处理系统同样十分有用,如何结合现有的技术水平开发实际的应用场景,也是值得思考的。这一章将结合具体的案例挑选自然语言处理中的几个专题进行讲解,包括中文分词、词向量以及文本情绪分析。