从通信模型说起

自人类学会自然语言以来,从来没有人将自然语言和数学联系起来。直到香农发明信息论之后,人们才意识到自然语言也可以使用数学模型来描述。

数字,文字,语言本质上都是信息,它们都是信息的载体。看似毫无关系的两门语言其实也有天然的联系,因为世界上的信息都是一样,不同自然语言之间表达信息的能力是等价的,翻译只是将从一个载体转换成另一个载体。这也是自然语言翻译存在的前提条件。

下面,我们先来考虑下,人类通信的过程:

  1. 说话者将想要表达的信息转化成自然语言。
  2. 说话者将自然语言写成文字或者口头表达。
  3. 说话者将信息传给接收者(文字纸条、或声音传递)
  4. 接收者接收信息,理解说话者想要表达的意思。

从上面的过程,我们可以发现,人类通信的过程和现代通信模型是相对应的。

  1. 说话者是信息源。
  2. 将信息转化成自然语言的过程是 __编码__ 的过程。
  3. 文字纸条是信道。
  4. 接收者理解的过程是 __解码__ 的过程。

因为计算机与人类对信息处理上的相似性,计算机科学家开始研究使用计算机来模拟人类处理自然语言。典型的应用是机器翻译,语音识别等等。

文法规则处理自然语言

计算机是否能够明白自然语言?阿兰·图灵提出了这样的一个验证方法,让人与机器进行交流,如果人无法判断对方是机器还是人,那么就可以认为这个机器是具有智能的。这个验证方法后来被称为图灵测试。

了解了验证方法之后,科学家们也开始着手研究如何让计算机理解自然语言。在自然语言研究早期,科学家将精力花在如何构建数学模型来表达自然语言的语法规则。当时的科学家认为,进行自然语言处理之前,需要解决两件事

  1. 分析语句
  2. 获取语义

其实这样的理解是自然的,例如想要学习西方的语言,那么就要学习它们的语法规则、词性和构词法等等。当时对自然语言处理的层次模型可以分为

  1. 应用层:语音识别、机器翻译
  2. 认知层:自然语言理解
  3. 基础层:句法分析、语义分析

可见,当时的科学家对自然语言的处理,与对计算机语言的处理是相似的。因此,当时科学家们设计了一些非常简单的语法分析器,可以分析出简单的语句。当取得这个成果的时候,科学家们认为随着对自然语言语法规则概括得越全面,计算机能够逐步解决自然语言的问题。但毕竟自然语言要比计算机语言复杂的多,科学家们慢慢发现,当句子稍微复杂一些,文法规则就变得异常复杂,而分析树也变得十分庞大。另一方面,计算机语言不存在上下文相关的文法,而自然语言是上下文相关性的,这也给语法分析增加了很大的复杂性。

基于统计的自然语言处理

20世纪70年代,有科学家尝试利用概率来解决自然语言的问题。这些科学家们认为,句子是否合理可以利用句子出现的可能性来衡量。

其概率模型是这样的:

假设 S 表示某一个句子,由一连串特定顺序排列的词 w1,w2,w3,...,wn 组成。而句子中每一个词之间是有关系的。因此句子 S 的可能性:

P(S) = P(w1, w2, w3,..., wn) = P(w1) * P(w2|w1) * P(w3|w1, w2) * ... * P(wn|w1, w2, ..., w[n-1])

从上面的概率公式中可以看出,句子中越后面的词越难计算。

对于这个问题,马尔科夫对此做出这样一个假设:假设每一个词只跟前面的一个词有关系。这个假设称为马尔科夫假设。基于 马尔科夫假设,概率公式简化为

P(S) = P(w1) * P(w2|w1) * P(w3|w2) * ... * P(wn|w[n-1])

使用这个简化后的公式以及语料库来对自然语言处理程序进行训练,即可使得计算机处理自然语言。

训练

训练自然语言处理程序相对比较简单。只需要在语料库中计算出 w[i-1],w[i] 相邻出现的次数以及 w[i] 本身出现的次数,然后分别除于语料库总大小,所得结果就是词的相对频度。根据大数定理,只要统计量足够大,相对频度就等于概率。

记 #(w[i-1], w[i]) 为 w[i-1], w[i] 在语料库中出现的次数;#(w[i]) 为 w[i] 在语料库中出现的次数。 # 为语料库词总数,那么有:

P(w[i]|w[i-1]) = #(w[i-1], w[i]) / #(w[i-1])

利用新的公式统计一遍语料库中词出现的概率就可以完成自然语言的处理。

高阶语言模型

基于马尔科夫假设的语言模型称为二元语言模型。虽然二元语言模型是一个简化而又有效的语言模型,但是在一些特定场合下,其准确度是不够的。因此将二元模型拓展形成高阶语言模型。高阶语言模型是假设句子中当前词出现的概率只与前 m-1 个词相关。那么这个语言模型就称为 m 元模型。而这种假设也称为 m-1 阶马尔科夫假设。

通过大量实验得出,m从2到3时,模型的效果上升显著,但从3到4时效果就不太明显。而同时,m 从 3 到 4时所增加的时间复杂度却巨大,因此一般取 m=3。

当然马尔科夫的模型具有局限性,在一篇文章中,有可能上下文依赖跨度相当大,超出 m 的值时,这时马尔科夫模型便不起作用。