论坛首页 综合技术论坛

统计语言模型

浏览 7523 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (19)
作者 正文
   发表时间:2008-03-03  
数学之美 系列一 -- 统计语言模型
2006年4月3日 上午 08:15:00

从本周开始,我们将定期刊登 Google 科学家吴军写的《数学之美》系列文章,介绍数学在信息检索和自然语言处理中的主导作用和奇妙应用。

发表者: 吴军, Google 研究员

前言

也许大家不相信,数学是解决信息检索和自然语言处理的最好工具。它能非常清晰地描述这些领域的实际问题并且给出漂亮的解决办法。每当人们应用数学工具解决一个语言问题时,总会感叹数学之美。我们希望利用 Google 中文黑板报这块园地,介绍一些数学工具,以及我们是如何利用这些工具来开发 Google 产品的。

系列一: 统计语言模型 (Statistical Language Models)

Google 的使命是整合全球的信息,所以我们一直致力于研究如何让机器对信息、语言做最好的理解和处理。长期以来,人类一直梦想着能让机器代替人来翻译语言、识别语音、认识文字(不论是印刷体或手写体)和进行海量文献的自动检索,这就需要让机器理解语言。但是人类的语言可以说是信息里最复杂最动态的一部分。为了解决这个问题,人们容易想到的办法就是让机器模拟人类进行学习 - 学习人类的语法、分析语句等等。尤其是在乔姆斯基(Noam Chomsky 有史以来最伟大的语言学家)提出 “形式语言” 以后,人们更坚定了利用语法规则的办法进行文字处理的信念。遗憾的是,几十年过去了,在计算机处理语言领域,基于这个语法规则的方法几乎毫无突破。

其实早在几十年前,数学家兼信息论的祖师爷 香农 (Claude Shannon)就提出了用数学的办法处理自然语言的想法。遗憾的是当时的计算机条件根本无法满足大量信息处理的需要,所以他这个想法当时并没有被人们重视。七十年代初,有了大规模集成电路的快速计算机后,香农的梦想才得以实现。

首先成功利用数学方法解决自然语言处理问题的是语音和语言处理大师贾里尼克 (Fred Jelinek)。当时贾里尼克在 IBM 公司做学术休假 (Sabbatical Leave),领导了一批杰出的科学家利用大型计算机来处理人类语言问题。统计语言模型就是在那个时候提出的。

给大家举个例子:在很多涉及到自然语言处理的领域,如机器翻译、语音识别、印刷体或手写体识别、拼写纠错、汉字输入和文献查询中,我们都需要知道一个文字序列是否能构成一个大家能理解的句子,显示给使用者。对这个问题,我们可以用一个简单的统计模型来解决这个问题。

如果 S 表示一连串特定顺序排列的词 w1, w2,…, wn ,换句话说,S 可以表示某一个由一连串特定顺序排练的词而组成的一个有意义的句子。现在,机器对语言的识别从某种角度来说,就是想知道S在文本中出现的可能性,也就是数学上所说的S 的概率用 P(S) 来表示。利用条件概率的公式,S 这个序列出现的概率等于每一个词出现的概率相乘,于是P(S) 可展开为:

P(S) = P(w1)P(w2|w1)P(w3| w1 w2)…P(wn|w1 w2…wn-1)

其中 P (w1) 表示第一个词w1 出现的概率;P (w2|w1) 是在已知第一个词的前提下,第二个词出现的概率;以次类推。不难看出,到了词wn,它的出现概率取决于它前面所有词。从计算上来看,各种可能性太多,无法实现。因此我们假定任意一个词wi的出现概率只同它前面的词 wi-1 有关(即马尔可夫假设),于是问题就变得很简单了。现在,S 出现的概率就变为:

P(S) = P(w1)P(w2|w1)P(w3|w2)…P(wi|wi-1)…
(当然,也可以假设一个词又前面N-1个词决定,模型稍微复杂些。)

接下来的问题就是如何估计 P (wi|wi-1)。现在有了大量机读文本后,这个问题变得很简单,只要数一数这对词(wi-1,wi) 在统计的文本中出现了多少次,以及 wi-1 本身在同样的文本中前后相邻出现了多少次,然后用两个数一除就可以了,P(wi|wi-1) = P(wi-1,wi)/ P (wi-1)。

也许很多人不相信用这么简单的数学模型能解决复杂的语音识别、机器翻译等问题。其实不光是常人,就连很多语言学家都曾质疑过这种方法的有效性,但事实证明,统计语言模型比任何已知的借助某种规则的解决方法都有效。比如在 Google 的中英文自动翻译中,用的最重要的就是这个统计语言模型。去年美国标准局(NIST) 对所有的机器翻译系统进行了评测,Google 的系统是不仅是全世界最好的,而且高出所有基于规则的系统很多。

现在,读者也许已经能感受到数学的美妙之处了,它把一些复杂的问题变得如此的简单。当然,真正实现一个好的统计语言模型还有许多细节问题需要解决。贾里尼克和他的同事的贡献在于提出了统计语言模型,而且很漂亮地解决了所有的细节问题。十几年后,李开复用统计语言模型把 997 词语音识别的问题简化成了一个 20 词的识别问题,实现了有史以来第一次大词汇量非特定人连续语音的识别。

我是一名科学研究人员 ,我在工作中经常惊叹于数学语言应用于解决实际问题上时的神奇。我也希望把这种神奇讲解给大家听。当然,归根结底,不管什莫样的科学方法、无论多莫奇妙的解决手段都是为人服务的。我希望 Google 多努力一分,用户就多一分搜索的喜悦。
固定链接  |

   发表时间:2008-03-03  
组合策略,人工智能基础课程,学 AI 的大学生的必修课,语义网络中被用烂掉了的技术,还美其名曰“数学之美”,吐槽中~`
0 请登录后投票
   发表时间:2008-03-04  
什么东西你会用,用的活那就是美 ,并不是你知道了就不美。
0 请登录后投票
   发表时间:2008-03-06  
数学之美这种字眼不能乱用的 ……

你要是把机器学习、自然语言处理的那帮人搞的东西冠以“数学之美”的头衔,真正的数学家搞不好要冲过来找你拼命。那帮人的论文里面到处都是对数学性质“简单粗暴”的简化、假设、近似,要说“美”,也是象 AK47 那种粗糙、不讲理但是坚固好用的机能性的美,和真正的数学那种优雅、深刻、冷峻的美感完全不是一路的。

哼哼,不过这个吴军倒是很会糊弄外行,知道“数学之美”这种词比较讨喜 ……
0 请登录后投票
   发表时间:2008-03-07  
这个不能跟数学家比吧.在生活中,常常听到一些开发人员说没有数学对于编程似乎没什么作用.很多刚出来的研究生也常说自己的数学学得多么的好,可是开发中几乎用不上.我也时常有数学无用的感觉(虽然我跟那先研究生们没比),有时也想想不是用不上,很多时候也许就是不知道去用怎么用.看看这文章有那么点感触.没人敢说数学与计算机无关吧,数学对于开发真是一种美妙.
0 请登录后投票
   发表时间:2008-03-07  
晨星★~雨泪 写道
这个不能跟数学家比吧.在生活中,常常听到一些开发人员说没有数学对于编程似乎没什么作用.很多刚出来的研究生也常说自己的数学学得多么的好,可是开发中几乎用不上.我也时常有数学无用的感觉(虽然我跟那先研究生们没比),有时也想想不是用不上,很多时候也许就是不知道去用怎么用.看看这文章有那么点感触.没人敢说数学与计算机无关吧,数学对于开发真是一种美妙.

数学在实际应用面前注定是苍白无力和毫无美感的.因为这是数学在计算机科学中的宿命,更是在这个学科中的根本追求.
0 请登录后投票
   发表时间:2008-03-07  
单纯的数学=意淫,计算机科学=数学on现实。优秀的程序员小心翼翼地向数学索取力量,他们还记得这一切的源头,心中对数学仍怀有敬意。。而另一些人,看不到完美的存在,粗暴地把计算机的创造物冠以数学之名,妄图以人之创造取代上帝之创造,自欺欺人。
0 请登录后投票
   发表时间:2008-03-10  
lichray 写道
单纯的数学=意淫,计算机科学=数学on现实。优秀的程序员小心翼翼地向数学索取力量,他们还记得这一切的源头,心中对数学仍怀有敬意。。而另一些人,看不到完美的存在,粗暴地把计算机的创造物冠以数学之名,妄图以人之创造取代上帝之创造,自欺欺人。


1.优秀的程序员小心翼翼地向数学索取力量.
2.粗暴地把计算机的创造物冠以数学之名

说实在的,我看了很,也想很久,就是想不明白你说这些的意义.
兄弟啊,太深奥了,能说简单些吗?
0 请登录后投票
   发表时间:2008-03-10  
就是说, 计算机本质上不过是数学用来进行计算的工具. 吴军这位同志却反过来,想用计算机产生的东西来证明数学之美,未免有点以偏概全,贻笑大方.
0 请登录后投票
   发表时间:2008-03-10  
白发红颜 写道
就是说, 计算机本质上不过是数学用来进行计算的工具. 吴军这位同志却反过来,想用计算机产生的东西来证明数学之美,未免有点以偏概全,贻笑大方.

是想说数学不美呢还是什么别的?
人家不过是利用数学在实际问题上建模,很好地分析了问题,赞美一下数学有何不可?
真不知道刺着那根筋,压根就没读明白别人意思的也跑出来耻笑一番。

0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics