任何语言,都可以被认为是一种编码方式,而语言的语法规则是编码解码的算法。我们把我们要表达的意思,通过一句话(一种编码)传送出去,听到这句话的人(接到编码信息),理解这句话(解码),从而理解对方要表达的意思。这是一个比较有趣又生动的过程。
自然语言处理可以说是从1950年开始的,至今有60多年的历史。但是在早期的20多年里,由于科学家们都陷入了一个误区(要让机器完成翻译或者语音识别这样只有人类才能完成的事情,必须要机器理解自然语言,而做到这一点就必须让计算机有类似我们人类这样的智能)。今天,稍微内行一点的人,都知道自然语言处理靠的全都是数学,更准确地说是统计学。
大家都知道,要学好一门外语,都要学它的语法规则,词性,构词法等,其实这些都是基于规则的自然语言处理过程。
那时有一个语法分析工具Parser(非现在的standford parser),能对一句话,构造一颗语法分析树,标出主谓宾,以及词语间的修饰关系。但是早期,在面对稍微长一点的句子时,就比较难办了。首先,要通过文法规则覆盖哪怕20%的真实语句,文法规则的数量至少是几万条;其次,就算能写出涵盖所有自然语言现象的语法规则集合,用计算机解析它也是相当困难的,因为自然语言不像编程语言,自然语言有上下文相关性。
可见,基于规则的句法分析是行不通的。因为上下文相关性,我们需要联系上下文来判断某一单词的意思。在1970年之前,自然语言处理的努力是相当失败的。直到1970年以后,统计语言学的出现,打破了这一局面。推动这个转变的关键任务是佛里德里克·贾里尼克和他的IBM华生实验室。而在2005年,Google基于统计的翻译系统全面超过基于规则方法的SysTran翻译系统,基于规则方法固守的最后一个堡垒被拔掉了。
今天,几乎不会有科学家宣称自己是传统的基于规则方法的捍卫者了。而建立在数学模型上的基于统计的自然语言方法已经成为主流。
第二章:自然语言处理———从规则到统计