数学之美(二)自然语言处理(NLP)历史 —— 从规则到统计

语言的出现是为了在人类之间通信。字母、文字和数字实际是信息编码的不同单位。任何一种语言都是一种编码方式,而语言的语法规则则是编码和解码算法。人类将头脑中的信息通过一句话表达出来,则是对信息进行编码,编码的结果则是一串文字。

从 1946 年现代电子计算机出现后,计算机在很多事情上都做的比人还好。那么,机器能不能懂的自然语言呢?这要从「图灵测试」开始。

图灵测试

最早提出机器智能的是计算机科学之父「阿兰・图灵」,他在「计算的机器和智能」这篇论文中提出了一种验证机器是否有智能的方法:让人和机器进行交流,如果人无法判断出自己交流的对象是人还是机器,就说明这个机器有智能了。这种方法被后人称为「图灵测试」。

自然语言处理

图灵其实是留下了一个问题,而非答案,但是一般认为自然语言机器处理的历史可以追溯到那个时候,至今已 60 多年了。这 60 多年的发展过程,可以分成两个阶段:从 20 世纪 50 年代到 70 年代,是走弯路的阶段;70 年代开始,一些自然语言处理的先驱重新认识这个问题,找到了基于数学模型和统计的方法,自然语言处理进入第二个阶段。

基于语法规则

20 世纪 60 年代,对于怎样理解自然语言,科学家的普遍认识是先要做好两件事:分析语句和获取语义。这种惯性思维受到传统语言学研究的影响:中世纪以来,语法一直是大学教授的主要课程之一,西方的语言学家们已经对各种自然语言进行看非常形式化的总结,形成了十分完备的体系。而这些语法规则又很容易用计算机算法描述,这就更加坚定了大家对基于规则的自然语言处理的信心。

20 世纪 80 年代以前,自然语言处理工作中的文法规则都是人工写的。科学家们原本以为随着对自然语言语法概括的越来越全面,同时计算机计算能力的提高,这种方法可以逐步解决自然语言理解的问题。这里面有两个越不过去的坎:首先,通过文法规则覆盖哪怕 20% 的真实语句,规则的数量也至少是几万条,而且,这些规则甚至会出现矛盾,为了解决矛盾,还要说明规则的特地使用环境。其次,即使能能列出所有规则,也很难用计算机来解析。在自然语言的演变过程中,产生了词义与上下文相关的特性,因此,它的文法是比较复杂的上下文有关文法。

从规则到统计

70 年代,基于规则的语法分析很快走到了尽头,而对于语义的处理则遇到了更大的麻烦,计算机无法处理自然语言中词语的多义性(The box is in the pen)。可以说,利用计算机处理自然语言的努力直到 20 世纪 70 年代初是相当失败的。

1970 年以后统计语言学的出现使得自然语言处理重获新生并取得今天的非凡成就。推动这个技术路线转变的关键人物是弗里德里克・贾里尼克(Frederick Jelinek)和他领导的 IBM 华生实验室。基于规则的自然语言处理和基于统计的自然语言处理的争执后来还持续了 15 年左右,直到 90 年代初期。这期间,两路人马各自组织和召开自己的会议,如果在共同的会议上,则在各自的分会场开小会。到 90 年代以后,坚持前一种的研究人员越来越少,后者参会人数则越来越多,这样,自然语言处理从规则到统计的过渡就完成了。

这场争议为什么持续了 15 年呢?其一,一种新的研究方法的成熟需要很多年,当时,基于统计的自然语言处理还有很多问题,在从 80 年代末至今的 25 年里,随着计算机能力的提高和数据量的不断增加,过去看似不可能通过统计模型完成的任务,渐渐都变得可能了。2005 年以后,随着 Google 基于统计方法的翻译系统全面超越基于规则的 SysTran 翻译系统,基于规则方法学派固守的最后一个堡垒被拔掉了。第二点就很有意思了,用基于统计的方法代替传统方法,需要等第一批语言学家退休。毕竟,不是所有人都乐意改变自己的观点。当然,等这批人退休之后,科学就会以更快的速度发展。