那人类的自然语言该怎么处理呢?在这个问题上,人们曾经走过很多弯路。其实最开始的时候,科学家们按照仿生学的思路,坚持认为,要让计算机学会处理自然语言,就必须像人一样,先让它理解自然语言,让它学会语法。但是后来人们发现,语法规则实在太多,根本没有办法穷尽。因为我们日常用的自然语言其实很复杂,不同的语境,不同的上下文,不同的语序,都会产生完全不同的语义。根据计算,就算覆盖我们平时常用语言的20%,都要写几万条语法,这个工作量就已经是天文数字了。而且写到后面,还会有自相矛盾的语法,为了区分,还要注明什么环境下用什么语法,整个过程无比繁琐。所以让计算机学习语法这一条路,在上个世纪70年代就走到了尽头。
就在人们一筹莫展的时候,数学的威力显示了出来。数学的魅力就在于让复杂的问题简单化。美国著名的计算机科学家贾里尼克领导他的实验室,借助数学中的统计学工具,把当时语言识别的成功率从70%提升到90%,同时让语言识别的规模,从几千个单词上升到几万个单词,让语言识别有了实际应用的可能。听到这儿你可能很疑惑,统计学和自然语言好像没什么关系,它怎么处理自然语言呢?其实贾里尼克的思路很简单,他认为,要判断一个句子正不正确,就要看这个句子出现的可能性的大小,这个可能性用概率来衡量。比如,我们假定第一个句子出现的概率是二分之一,第二个句子出现的概率是千分之一,那第一个句子出现的可能性就比第二个句子大得多,那么从概率的角度来说,第一个句子就更有可能是正确的。
所以接下来我们需要做的事,就是判断一个句子出现的可能性有多大。这时就需要用到“马尔科夫假设”,这个假设是说,假定一个句子里每个词出现的概率,只和前一个词有关,就好比“涨停”这个词,最有可能出现在“股票”这个词之后。那么,只要给计算机量足够大的机读文本,也就是专业人士说的语料库,计算机就能算出来,在一个特定词后面出现某个词的概率。这样,只要把一句话里所有词出现的概率相乘,就是这个句子出现的概率。概率最大的句子,就是最有可能正确的句子。按照这个思路,科学家们成功地让计算机拥有了处理自然语言的能力。
网友评论