以下内容学习、摘录自《数学之美》
1946年,现代电子计算机出现以后,计算机在很多事情上做得比人还好。既然如此,机器能不能懂得自然语言呢?事实上计算机一出现,人们就开始琢磨这件事。
最早提出机器智能设想的是计算机科学之父阿兰·图灵(AlanTuring),1950年他在《思想》(Mind)杂志上发表了一篇题为“计算的机器和智能”的论文。在论文中,图灵并没有提出什么研究的方法,而是提出了一种验证机器是否有智能的方法:让人和机器进行交流,如果人无法判断自己交流的对象是人还是机器,就说明这个机器有智能了。这种方法被后人称为图灵测试( Turing Test)。图灵其实是留下了一个问题,而非答案。
自然语言处理60多年的发展过程,基本上可以分成两个阶段。早期的20多年,即从20世纪50年代到70年代,是科学家们走弯路的阶段。全世界的科学家对计算机处理自然语言的认识都局限在人类学习语言的方式上,也就是说,用电脑模拟人脑,这20多年的成果近乎为零。直到20世纪70年代,一些自然语言处理的先驱开始重新认识这个问题,找到了基于数学模型和统计的方法,自然语言处理进入第二个阶段。30多年来,这个领域取得了实质性的突破,自然语言处理也在很多产品中得到广泛应用。虽然早期自然语言处理的工作对今天没有任何指导意义,但是回顾几代科学家的认识过程,对我们了解自然语言处理的方法很有好处同时避免重走前人的弯路。
从20世纪50年代到70年代,全世界对自然语言处理的研究都陷入了一个误区。当时,学术界对人工智能和自然语言理解的普遍认为:要让机器完成翻译或者语音识别等只有人类才能做的事情,就必须先让计算机理解自然语言,而做到这一点就必须让计算机拥有类似我们人类这样的智能。(今天几乎所有的科学家都不再坚持这一点,而很多门外汉还误以为计算机是靠类似我们人类的这种智能解决了上述问题。)为什么会有这样的认识?是因为人类就是这么做的,道理就这么简单。对于人类来讲,一个能把英语翻译成汉语的人,必定能很好地理解这两种语言。这就是直觉的作用。在人工智能领域,包括自然语言处理领域,后来把这样的方法论称作“鸟飞派”,也就是看看鸟是怎样飞的,就能模仿鸟造出飞机,而不需要了解空气动力学。事实上我们知道,怀特兄弟发明飞机靠的是空气动力学而不是仿生学。在这里,我们不要笑话我们前辈来自于直觉的天真想法,这是人类认识的普遍规律。今天,机器翻译和语音识别已经做得不错,并且有上亿人使用过,但是这个领域之外的大部分人依然错误地以为这两种应用是靠计算机理解了自然语言才实现的。事实上,它们全都靠得是数学,更准确地说是靠统计。
前面说了,基于分析语句和获取语义的“自然语言处理算法”,在思想上很容易理解,但复杂度很高。图灵奖得主高德纳( Donald Knuth)提出了用计算复杂度来衡量算法的耗时:对于上下文无关文法,算法的复杂度基本上是语句长度的二次方,而对于上下文有关文法,计算复杂度基本上是语句长度的六次方。也就是说,长度同为10的程序语言的语句和自然语言的语句,计算机对它们进行文法分析( Syntactic Parsing)的计算量,后者是前者的一万倍。而且随着句子长度的增长,二者计算时间的差异会以非常快的速度扩大。即使今天,有了很快的计算机(英特尔i7四核处理器),分析上面这个二三十个词的句子也需要一两分钟的时间。因此,在20世纪70年代,即使是制造大型机的IBM公司,也不可能采用规则的方法分析一些真实的语句。
在上个世纪70年代,基于规则的句法分析(包括文法分析或者语义分析很快就走到了尽头。而对于语义的处理则遇到了更大的麻烦。首先,自然语言中词的多义性很难用规则来描述,而是严重依赖于上下文,甚至是“世界的知识”( World Knowledge)或者常识。
可以说,利用计算机处理自然语言的努力直到20世纪70年代初是相当失败的。1970年以后统计语言学的出现使得自然语言处理重获新生,并取得了今天的非凡成就。推动这个技术路线转变的关键人物是弗里德里克·贾里尼克( Frederick Jelinek)和他领导的IBM华生实验室(T.J: Watson)。最初,他们也没有想解决整个自然语言处理的各种问题,而只是希望解决语音识别的问题。采用基于统计的方法,IBM将当时的语音识别率从70%提升到90%,同时语音识别的规模从几百单词上升到几万单词,这样语音识别就有了从实验室走向实际应用的可能。
但当时,并非所有的研究者都认可“基于统计的方法”这个方向。基于规则的自然语言处理和基于统计的自然语言处理的争执后来还持续了15年左右,直到上个世纪90年代初。这期间两路人马各自组织和召开自己的会议。如果在共同的会议上,则在各自的分会场开小会。到90年代以后,坚持前一种方法的研究人员越来越少,参会人数自然也越来越少;而后者却越来越多。这样,自然语言处理从规则到统计的过渡就完成了。15年,对于一个学者来讲是一段非常长的时间,如果哪个人从做博士开始就选错了方向并且坚持错误,到15年后发现时,基本上这一辈子可能就一事无成了。
那么为什么这场争议持续了15年呢?首先,一种新的研究方法的成熟需要很多年。在从20世纪80年代末至今的25年里,随着计算能力的提高和数据量的不断增加,过去看似不可能通过统计模型完成的任务,渐渐都变得可能了,包括很复杂的句法分析。到了20世纪90年代末期,大家发现通过统计得到的句法规则甚至比语言学家总结的更有说服力。2005年以后,随着Google基于统计方法的翻译系统全面超过基于规则方法的 Systran翻译系统,基于规则方法学派固守的最后一个堡垒被拔掉了。这才使得我们在这本书里,可以且只需用数学的方法给出现今所有自然语言处理相关问题的全部答案。
其次,也很有意思,用基于统计的方法代替传统的方法,需要等原有的一批语言学家退休。这在科学史上也是经常发生的事。钱钟书在《围城》中讲,老科学家可以理解成“老的科学家”或者“老科学的家”两种。如果是后者,他们年纪不算老,但是已经落伍,大家必须耐心等他们退休让出位子。毕竟,不是所有人都乐意改变自己的观点,无论对错。
自然语言处理的应用在过去25年里也发生了巨大的变化。比如对自动问答的需求很大程度上被网页搜索和数据挖掘替代了。而新的应用越来越依靠数据的作用和浅层的自然语言处理的工作,这就在客观上大大加速了自然语言处理研究从基于规则的方法到基于统计的方法的转变。今天,几乎不再有科学家自称是传统的基于规则方法的捍卫者。而自然语言处理的研究也从单纯的句法分析和语义理解,变成了非常贴近实际应用的机器翻译、语音识别、文本到数据库自动生成、数据挖掘和知识的获取,等等。
基于统计的自然语言处理方法,在数学模型上和通信是相通的,甚至就是相同的。因此,在数学意义上自然语言处理又和语言的初衷——通信联系在一起了。但是,科学家们用了几十年才认识到这个联系。