自然语言处理 统计语言模型

我们聊一下自然语言处理(NLP)这一方向,当前的语音识别,机器翻译等人工智能领域备受欢迎和关注,那么计算机到底是怎么处理自然语言的,换句话说:计算机真的像人一样能够理解我们人类独特的语言吗?

在自然语言处理研究的早期,计算机科学家们走入了一个误区:当时,学术界普遍认为,要让计算机能够有效的处理自然语言,首先就是让计算机能像人类一样去理解自然语言。一致认为计算机应先做好两件事,即分析语句和获取语义。

计算机科学家们在此后的工作中发现,人类的语法规则实在太多,根本不可能穷尽,人类20%的语言,语法规则的数量也至少是几万条,语言学家们在有生之年怕是写不完的。这些语法规则写到后面甚至会出现前后矛盾。

自然语言从诞生之初起,就是一种具有上下文相关特征的语言。

人类的语言是存在歧义性的,比如:“I am a boy”。在大部分的场景里,这句英文的译文应是:“我是个男孩”。然而,总是翻译成“我是个男孩”并不一定是最佳的译文。如果是在饭店的场景里,“boy”一词更恰当的翻译是“服务生”。可是这种语言的歧义性,我们在日常生活中是怎么克服的呢?

我们所依靠的是上下文,有时人类是弄不清一句话它到底表示其中哪个含义,而解决这个问题的方法,就是依靠上下文。有了上下文,大多数情况下多义词就可以确定具体意思。

因此,计算机在处理自然语言时,一个基本问题就是为自然语言这种上下文相关的特征建立数学模型。

统计语言模型

1970年弗里德里克·贾里尼克针对自然语言处理的困境提出一个新观点:一个句子是否合理,就看它出现的可能性大小如何。如果可以通过某种数学方法计算得到一个句子能够出现的概率 ,那么概率越大的句子也可能出现。

比如,“我爱美丽的花”、“花的美丽爱我”,这两句话显然是第一句话更可能出现,相比整个人类使用汉语的历史长河中,都很少会出现第二句话。

假定S表示一句有意义的话,由一连串特定的按顺序排列的词组成,词分别是:

我们想知道S在文本中出现的可能性,即计算P(S)。

由题意知:

即:

利用条件概率,S这个词序列出现的概率等于每个词出现的概率相乘,可以写成如下:

不难看出,每一个词出现的概率取决于其前面出现的所有词。然而随着作为条件一方的词语数量的增多,计算开始变得复杂。人们想到了一个偷懒但是还颇为有效的方法,假定每一个词出现的概率只与前面一个词有关(马尔科夫假设)。这时,上述公式可以简化为:

接下来的问题就是计算:

计算机库中存储了大量的人类的语言文本,即语料库。只要用计算机数一数

这一对相邻的词语,以及这个词在整个语料库中出现的频数即可(N表示整个语料库,f表示词语在语料库中的相对频度):

当语料库足够大时,根据大数定理,概率约等于频度:

约分化简后,可得:

证明完毕!

综上所述,计算机可以不用懂语法,只需要会算一点概率就行啦。

文章参考自:

1、吴军《数学之美》第二版;

2、CSDN许野平的专栏:为什么使用计算机处理自然语言如此困难。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180719G20Q5R00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券