自然语言处理与计算语言学
上QQ阅读APP看书,第一时间看更新

1.1 什么是文本分析

如果要列举出人类每天都在使用的一种媒介,那一定是文本。无论是晨报还是收到的短信,可能都是以文本的形式传递信息。

我们可以从更深远的角度去看文本分析。现今,谷歌等公司处理的文本数据量大到难以想象(谷歌每年1万多亿个查询,Twitter每天16亿个查询,WhatsApp每天30多亿条信息,如图1.1所示),文本的普遍性和纯粹性使得我们有充分的理由来认真研究一番。同时文本数据也具有巨大的商业价值,公司可以利用它来帮助分析客户和理解数据趋势。此外,它还可以用来为用户提供更个性化的体验,或者作为目标市场的信息源。例如,Facebook就重度依赖文本数据,本书将要介绍的算法之一就是由Facebook的AI研究团队开发的。

图1.1 2006-2020年数据增长率(其中2019年和2020年是预测数据)

文本分析是一种从文本中提取有用信息的技术,涉及多种技术流派,本书使用自然语言处理(NLP)、计算语言学(CL)和数值工具来实现文本信息的提取。其中,数值工具指的是机器学习算法或信息检索算法。下面将简要解释这些术语,因为这些名词将在本书中多次出现。

自然语言处理(NLP)指使用计算机处理自然语言。例如,从文本正文中删除某个出现过的单词,这是一个最简单的例子。

计算语言学(CL),顾名思义,是从计算的角度研究语言学的学科。即使用计算机和算法来执行语言学任务,例如文本的词性标注任务(如名词或动词)是通过算法,而不是人工来完成。

机器学习(ML)是一门使用统计算法来指导机器执行特定任务的学科。机器学习过程发生在数据上,常见的场景是基于先前观察到的数据来预测一个新的值。

信息检索(IR)是根据用户的查询进行查找或检索信息的工作。完成这项任务的算法被称为信息检索算法,本书将经常涉及这项技术。

文本分析本身历史悠久—— 它的第一个定义来自商业智能(BI)领域,H.P.Luhn曾于1958年10月在IBM Journal发表了一篇题为A Business Intelligence System的文章,其中描述了一个系统,它会完成以下工作:

“……利用数据处理机自动提取和自动编码文档,并为组织中的每个行动点创建兴趣画像。输入的文档和内部生成的文档都会被自动抽象,以单词为特征,并自动地发送到相应的操作点。”

讨论有关文档的话题比数字的话题更为有趣,商业智能的第一个发明创意来自文本的理解,而文档又是整个文本分析发展历程的见证。即使在商业文本分析领域之外,使用计算机来帮助理解文本和语言的设想早在人工智能思想诞生之初就出现了。1999年,John Hutchins在Retrospect and prospect in computer-based translation上发表了一篇关于文本分析的回顾文章,其中谈到美国军方早在20世纪50年代就开始进行机器翻译方面的研究,以便将俄语科学期刊翻译成英语版本。

制造智能机器的尝试也同样始自文本。1966年由Joseph Weizenbaum在麻省理工学院开发的ELIZA程序就是其中一种尝试。ELIZA程序并没有真正地理解语言,它的基本原理是通过匹配规则来尝试保持对话。这些都只是一些早期的文本分析试验,如今计算机(和人类)已经取得了长足的进步,人类已经制造出了令人难以置信的工具。

机器翻译(见图1.2)领域已经走过了漫长的发展道路,现在人们已经可以使用智能手机在不同语言之间进行高效的翻译,使用诸如谷歌提出的神经网络机器翻译等前沿技术,学术界和工业界之间的差距正在缩小,我们已经能够亲身体验自然语言处理技术的魔力。

这些进步也促进了演讲者演讲方式的进步,比如视频中的字幕。而苹果的Siri和亚马逊的Alexa等个人助理工具的成功研发也得益于这些出色的文本处理方法。会话结构的理解和信息提取是早期自然语言处理的关键问题,21世纪以来,这两方面的研究成果非常丰硕。

搜索引擎,如谷歌或必应的发展也得益于自然语言处理(NLP)和计算语言学(CL)的研究,以前所未有的方式影响着人类的生活。信息检索(IR)通过统计手段处理文本,完成分类、聚类和检索文档等工作。主题建模(见图1.3)等方法可以帮助识别大型、非结构化的文本正文中的关键主题。识别这些主题超越了搜索关键词的范畴,并帮助我们进一步理解文本的本质。如果不依靠计算机的力量,人类就无法对文本进行大规模的统计分析。我们将在本书后续内容中详细讨论主题建模。

图1.2 一个法—英神经网络机器翻译模型的例子

图1.3 主题建模等技术使用概率建模方法来从文本中识别关键主题,
本书后续内容将详细研究这一点

在体验手机上的最新计算能力之前,人类又往前迈进了一步,Python和自然语言处理的最新发展意味着我们现在可以自行开发具有复杂算法的系统了!

不仅是自然语言处理和文本分析技术本身的革新,这类技术还使得开发人员的使用成本大大降低。近几年出现的开源软件在性能上表现得丝毫不逊色于商业工具,后者的代表是微软的文本分析工具。

MATLAB则是另一个非常流行的科学计算商业工具。虽然在以前,这种商业工具比免费的开源软件更加强大,但是随着为开源库贡献代码的开发人员逐渐增多,以及来自工业界的基金对开源社区的支持,情况开始扭转。许多软件巨头已经开始将开源软件用于其内部系统开发,比如谷歌的TensorFlow和苹果的scikit-learn起初都是开源的Python机器学习库。

可以说,Python的生态系统提供的软件包数量之多,意味着它在文本分析领域领先于其他软件包,我们将集中精力进行研究。一个庞大而活跃的开源社区本身也独具魅力。

本书还将讨论现代自然语言处理和计算语言学技术,以及配套的开源工具。