新经济地理

空间信息技术与区域经济
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

数学之美 二

Posted on 2007-11-09 13:11  wuxb  阅读(426)  评论(0编辑  收藏  举报
 

数学之美系列六 -- 图论和网络爬虫 (Web Crawlers)

2006515上午 07:15:00

发表者: 吴军,Google 研究员

[离散数学
是当代数学的一个重要分支,也是计算机科学的数学基础。它包括数理逻辑、集合论、图论和近世代数四个分支。数理逻辑基于布尔运算,我们已经介绍过了。这里我们介绍图论和互联网自动下载工具网络爬虫 (Web Crawlers) 之间的关系。顺便提一句,我们用 Google Trends 来搜索一下离散数学这个词,可以发现不少有趣的现象。比如,武汉、哈尔滨、合肥和长沙市对这一数学题目最有兴趣的城市。]

我们上回谈到了如何建立搜索引擎的索引,那么如何自动下载互联网所有的网页呢,它要用到图论中的遍历(Traverse) 算法。

图论的起源可追溯到大数学家欧拉Leonhard Euler)。1736 年欧拉来到德国的哥尼斯堡(Konigsberg,大哲学家康德的故乡,现在是俄罗斯的加里宁格勒),发现当地市民们有一项消遣活动,就是试图将下图中的每座桥恰好走过一遍并回到原出发点,从来没有人成功过。欧拉证明了这件事是不可能的,并写了一篇论文,一般认为这是图论的开始。



图论中所讨论的的图由一些节点和连接这些节点的弧组成。如果我们把中国的城市当成节点,连接城市的国道当成弧,那么全国的公路干线网就是图论中所说的图。关于图的算法有很多,但最重要的是图的遍历算法,也就是如何通过弧访问图的各个节点。以中国公路网为例,我们从北京出发,看一看北京和哪些城市直接相连,比如说和天津、济南、石家庄、南京、沈阳、大同直接相连。我们可以依次访问这些城市,然后我们看看都有哪些城市和这些已经访问过的城市相连,比如说北戴河、秦皇岛与天津相连,青岛、烟台和济南相连,太原、郑州和石家庄相连等等,我们再一次访问北戴河这些城市,直到中国所有的城市都访问过一遍为止。这种图的遍历算法称为广度优先算法BFS),因为它先要尽可能广地访问每个节点所直接连接的其他节点。另外还有一种策略是从北京出发,随便找到下一个要访问的城市,比如是济南,然后从济南出发到下一个城市,比如说南京,再访问从南京出发的城市,一直走到头。然后再往回找,看看中间是否有尚未访问的城市。这种方法叫深度优先算法DFS),因为它是一条路走到黑。这两种方法都可以保证访问到全部的城市。当然,不论采用哪种方法,我们都应该用一个小本本,记录已经访问过的城市,以防同一个城市访问多次或者漏掉哪个城市。

现在我们看看图论的遍历算法和搜索引擎的关系。互联网其实就是一张大图,我们可以把每一个网页当作一个节点,把那些超链接(Hyperlinks)当作连接网页的弧。很多读者可能已经注意到,网页中那些蓝色的、带有下划线的文字背后其实藏着对应的网址,当你点下去的的时候,浏览器是通过这些隐含的网址转到相应的网页中的。这些隐含在文字背后的网址称为超链接。有了超链接,我们可以从任何一个网页出发,用图的遍历算法,自动地访问到每一个网页并把它们存起来。完成这个功能的程序叫做网络爬虫,或者在一些文献中称为"机器人"Robot)。世界上第一个网络爬虫是由麻省理工学院 (MIT)的学生马休.格雷(Matthew Gray) 1993 年写成的。他给他的程序起了个名字叫互联网漫游者”("www wanderer")。以后的网络爬虫越写越复杂,但原理是一样的。

我们来看看网络爬虫如何下载整个互联网。假定我们从一家门户网站的首页出发,先下载这个网页,然后通过分析这个网页,可以找到藏在它里面的所有超链接,也就等于知道了这家门户网站首页所直接连接的全部网页,诸如雅虎邮件、雅虎财经、雅虎新闻等等。我们接下来访问、下载并分析这家门户网站的邮件等网页,又能找到其他相连的网页。我们让计算机不停地做下去,就能下载整个的互联网。当然,我们也要记载哪个网页下载过了,以免重复。在网络爬虫中,我们使用一个称为哈希表”(Hash Table)的列表而不是一个记事本纪录网页是否下载过的信息。

现在的互联网非常巨大,不可能通过一台或几台计算机服务器就能完成下载任务。比如雅虎公司(Google 没有公开公布我们的数目,所以我这里举了雅虎的索引大小为例)宣称他们索引了 200 亿个网页,假如下载一个网页需要一秒钟,下载这 200 亿个网页则需要 634 年。因此,一个商业的网络爬虫需要有成千上万个服务器,并且由快速网络连接起来。如何建立这样复杂的网络系统,如何协调这些服务器的任务,就是网络设计和程序设计的艺术了。

数学之美系列七 -- 信息论在信息处理中的应用

2006525上午 07:56:00

发表者:吴军, Google 研究员

我们已经介绍了信息熵,它是信息论的基础,我们这次谈谈信息论在自然语言处理中的应用。

先看看信息熵和语言模型的关系。我们在系列一中谈到语言模型时,没有讲如何定量地衡量一个语言模型的好坏,当然,读者会很自然地想到,既然语言模型能减少语音识别和机器翻译的错误,那么就拿一个语音识别系统或者机器翻译软件来试试,好的语言模型必然导致错误率较低。这种想法是对的,而且今天的语音识别和机器翻译也是这么做的。但这种测试方法对于研发语言模型的人来讲,既不直接、又不方便,而且很难从错误率反过来定量度量语言模型。事实上,在贾里尼克(Fred Jelinek)的人研究语言模型时,世界上既没有像样的语音识别系统,更没有机器翻译。我们知道,语言模型是为了用上下文预测当前的文字,模型越好,预测得越准,那么当前文字的不确定性就越小。

信息熵正是对不确定性的衡量,因此信息熵可以直接用于衡量统计语言模型的好坏。贾里尼克从信息熵出发,定义了一个称为语言模型复杂度(Perplexity)的概念,直接衡量语言模型的好坏。一个模型的复杂度越小,模型越好。李开复博士在介绍他发明的 Sphinx 语音识别系统时谈到,如果不用任何语言模型(即零元语言模型)时,复杂度为997,也就是说句子中每个位置有 997 个可能的单词可以填入。如果(二元)语言模型只考虑前后词的搭配不考虑搭配的概率时,复杂度为 60。虽然它比不用语言模型好很多,但是和考虑了搭配概率的二元语言模型相比要差很多,因为后者的复杂度只有 20

信息论中仅次于熵的另外两个重要的概念是互信息Mutual Information) 相对熵Kullback-Leibler Divergence)

互信息是信息熵的引申概念,它是对两个随机事件相关性的度量。比如说今天随机事件北京下雨和随机变量空气湿度的相关性就很大,但是和姚明所在的休斯敦火箭队是否能赢公牛队几乎无关。互信息就是用来量化度量这种相关性的。在自然语言处理中,经常要度量一些语言现象的相关性。比如在机器翻译中,最难的问题是词义的二义性(歧义性)问题。比如 Bush 一词可以是美国总统的名字,也可以是灌木丛。(有一个笑话,美国上届总统候选人凯里 Kerry 的名字被一些机器翻译系统翻译成了"爱尔兰的小母牛"Kerry 在英语中另外一个意思。)那么如何正确地翻译这个词呢?人们很容易想到要用语法、要分析语句等等。其实,至今为止,没有一种语法能很好解决这个问题,真正实用的方法是使用互信息。具体的解决办法大致如下:首先从大量文本中找出和总统布什一起出现的互信息最大的一些词,比如总统、美国、国会、华盛顿等等,当然,再用同样的方法找出和灌木丛一起出现的互信息最大的词,比如土壤、植物、野生等等。有了这两组词,在翻译 Bush 时,看看上下文中哪类相关的词多就可以了。这种方法最初是由吉尔(Gale),丘奇(Church)和雅让斯基(Yarowsky)提出的。

当时雅让斯基在宾西法尼亚大学是自然语言处理大师马库斯 (Mitch Marcus) 教授的博士生,他很多时间泡在贝尔实验室丘奇等人的研究室里。也许是急于毕业,他在吉尔等人的帮助下想出了一个最快也是最好地解决翻译中的二义性,就是上述的方法,这个看上去简单的方法效果好得让同行们大吃一惊。雅让斯基因而只花了三年就从马库斯那里拿到了博士,而他的师兄弟们平均要花六年时间。

信息论中另外一个重要的概念是相对熵,在有些文献中它被称为成交叉熵。在英语中是 Kullback-Leibler Divergence,是以它的两个提出者库尔贝克和莱伯勒的名字命名的。相对熵用来衡量两个正函数是否相似,对于两个完全相同的函数,它们的相对熵等于零。在自然语言处理中可以用相对熵来衡量两个常用词(在语法上和语义上)是否同义,或者两篇文章的内容是否相近等等。利用相对熵,我们可以到处信息检索中最重要的一个概念:词频率-逆向文档频率(TF/IDF)。我们下回会介绍如何根据相关性对搜索出的网页进行排序,就要用的餐TF/IDF 的概念。另外,在新闻的分类中也要用到相对熵和 TF/IDF

对信息论有兴趣又有一定数学基础的读者,可以阅读斯坦福大学托马斯.科弗 (Thomas Cover) 教授的专著 "信息论基础"(Elements of Information Theory)
http://www.amazon.com/gp/product/0471062596/ref=nosim/103-7880775-7782209?n=283155
http://www.cnforyou.com/query/bookdetail1.asp?viBookCode=17909
科弗教授是当今最权威的信息论专家。

数学之美系列八-- 贾里尼克的故事和现代语言处理

200668上午 09:15:00

发表者:Google 研究员,吴军

读者也许注意到了,我们在前面的系列中多次提到了贾里尼克这个名字。事实上,现代语音识别和自然语言处理确实是和它的名字是紧密联系在一起的。我想在这回的系列里,介绍贾里尼克本人。在这里我不想列举他的贡献,而想讲一讲他作为一个普普通通的人的故事。这些事要么是我亲身经历的,要么是他亲口对我讲的。

弗莱德里克.贾里尼克(Fred Jelinek)出生于捷克一个富有的犹太家庭。他的父母原本打算送他去英国的公学(私立学校)读书。为了教他德语,还专门请的一位德国的家庭女教师,但是第二次世界大战完全打碎了他们的梦想。他们先是被从家中赶了出去,流浪到布拉格。他的父亲死在了集中营,弗莱德自己成天在街上玩耍,完全荒废了学业。二战后,当他再度回到学校时,他的成绩一塌糊涂,全部是 D,但是很快他就赶上了班上的同学。不过,他在小学时从来没有得过 A1949年,他的母亲带领全家移民美国。在美国,贾里尼克一家生活非常贫困,全家基本是靠母亲做点心卖钱为生,弗莱德自己十四五岁就进工厂打工补助全家。

贾里尼克最初想成为一个律师,为他父亲那样的冤屈者辩护,但他很快意识到他那浓厚的外国口音将使他在法庭上的辩护很吃力。贾里尼克的第二个理想是成为医生,他想进哈佛大学医学院,但经济上他无法承担医学院 8 年高昂的学费。与此同时麻省理工学院给于了他一份(为东欧移民设的)全额奖学金。贾里尼克决定到麻省理工学电机工程。在那里,他遇到了信息论的鼻祖香农博士,和语言学大师贾格布森 Roman Jakobson (他提出了著名的通信六功能)[注释一],后来贾里尼克又陪着太太听最伟大的语言学家乔姆斯基(Noam Chomsky)的课。这三位大师对贾里尼克今后的研究方向--利用信息论解决语言问题产生的重要影响。

贾里尼克从麻省理工获得博士学位后,在哈佛大学教了一年书,然后到康乃尔大学任教。他之所以选择康乃尔大学,是因为找工作时和那里的一位语言学家谈得颇为投机。当时那位教授表示愿意和贾里尼克在利用信息论解决语言问题上合作。但是,等贾里尼克到康乃尔以后,那位教授表示对语言学在没有兴趣而转向写歌剧了。贾里尼克对语言学家的坏印象从此开始。加上后来他在 IBM 时发现语言学家们嘴上头头是道,干起活来高不成低不就,对语言学家从此深恶痛绝。他甚至说:"我每开除一名语言学家,我的语音识别系统错误率就降低一个百分点。" 这句话后来在业界广为流传,为每一个搞语音识别和语言处理的人所熟知。

贾里尼克在康乃尔十年磨一剑,潜心研究信息论,终于悟出了自然语言处理的真谛。1972年,贾里尼克到IBM华生实验室(IBM T.G.Watson Labs)做学术休假,无意中领导了语音识别实验室,两年后他在康乃尔和IBM之间选择了留在IBM。在那里,贾里尼克组建了阵容空前绝后强大的研究队伍,其中包括他的著名搭档波尔(Bahl),著名的语音识别 Dragon 公司的创始人贝克夫妇,解决最大熵迭代算法的达拉皮垂(Della Pietra)孪生兄弟,BCJR 算法的另外两个共同提出者库克(Cocke)和拉维夫(Raviv),以及第一个提出机器翻译统计模型的布朗。

七十年代的 IBM 有点像九十年代的微软和今天的 Google, 给于杰出科学家作任何有兴趣研究的自由。在那种宽松的环境里,贾里尼克等人提出了统计语音识别的框架结构。在贾里尼克以前,科学家们把语音识别问题当作人工智能问题和模式匹配问题。而贾里尼克把它当成通信问题,并用两个隐含马尔可夫模型(声学模型和语言模型)把语音识别概括得清清楚楚。这个框架结构对至今的语音和语言处理有着深远的影响,它从根本上使得语音识别有实用的可能。贾里尼克本人后来也因此当选美国工程院院士。

贾里尼克和波尔,库克以及拉维夫对人类的另一大贡献是 BCJR 算法,这是今天数字通信中应用的最广的两个算法之一(另一个是维特比算法)。有趣的是,这个算法发明了二十年后,才得以广泛应用。IBM 于是把它列为了 IBM 有史以来对人类最大贡献之一,并贴在加州 Amaden 实现室墙上。遗憾的是 BCJR 四个人已经全部离开 IBM,有一次IBM 的通信部门需要用这个算法,还得从斯坦福大学请一位专家去讲解,这位专家看到 IBM 橱窗里的成就榜,感慨万分。

贾里尼克和 IBM 一批最杰出的科学家在九十年代初离开了 IBM,他们大多数在华尔街取得了巨大的成功。贾里尼克的书生气很浓,于是去约翰霍普金斯大学建立了世界著名的 CLSP 实验室。每年夏天,贾里尼克邀请世界上 20-30 名顶级的科学家和学生到 CLSP 一起工作,使得 CLSP 成为世界上语音和语言处理的中心之一。

贾里尼克治学极为严谨,对学生要求也极严。他淘汰学生的比例极高,即使留下来的,毕业时间也极长。但是,另一方面,贾里尼克也千方百计利用自己的影响力为学生的学习和事业创造方便。贾里尼克为组里的每一位学生提供从进组第一天到离开组最后一天全部的学费和生活费。他还为每一位学生联系实习机会,并保证每位学生在博士生阶段至少在大公司实习一次。从他那里拿到博士学位的学生,全部任职于著名实验室,比如IBM, 微软,AT&T Google 的实验室。为了提高外国人的英语水平,贾里尼克用自己的经费为他们请私人英语教师。

贾里尼克生活俭朴,一辆老式丰田车开了二十多年,比组里学生的车都破。他每年都邀请组里的学生和教授到家里做客,很多毕业了的学生也专程赶来聚会。在那里,他不再谈论学术问题,而会谈些巩俐的电影(他太太是哥伦比亚大学电影专业的教授),或是某著名教授被拉斯韦加斯的赌馆定为不受欢迎的人等等。但是他聚会的食物实在难吃,无非是些生胡萝卜和芹菜。后来贾里尼克掏钱让系里另一个教授承办聚会,那个教授每次请专业大厨在家作出极丰盛的晚宴,并准备许多美酒,从此这种聚会就转移到那个教授家了。

除了巩俐的电影,贾里尼克对中国的了解就是清华大学和青岛啤酒了。他有时会把两个名字搞混,有两次被香港科技大学的 Pascale 冯教授抓住。

贾里尼克说话心直口快,不留余地。在他面前谈论学术一定要十分严谨,否则很容易被他抓住辫子。除了刚才提到的对语言学家略有偏见的评论,他对许多世界级的大师都有过很多刻薄但又实事求是的评论,这些评论在业界广为流传。贾里尼克在四十多年的学术生涯中居然没有得罪太多的人,可以说是一个奇迹。

注释一:

贾格布森的通信模型
1
上下文
2
信息
3

发送着 --------------- 4 接收者
5

信道
6
编码

数学之美系列九 -- 如何确定网页和查询的相关性

2006627上午 09:53:00

发表者:吴军,Google 研究员

[
我们已经谈过了如何自动下载网页如何建立索引如何衡量网页的质量(Page Rank)。我们今天谈谈如何确定一个网页和某个查询的相关性。了解了这四个方面,一个有一定编程基础的读者应该可以写一个简单的搜索引擎了,比如为您所在的学校或院系建立一个小的搜索引擎。]

我们还是看上回的例子,查找关于原子能的应用的网页。我们第一步是在索引中找到包含这三个词的网页(详见关于布尔运算的系列)。现在任何一个搜索引擎都包含几十万甚至是上百万个多少有点关系的网页。那么哪个应该排在前面呢?显然我们应该根据网页和查询原子能的应用的相关性对这些网页进行排序。因此,这里的关键问题是如何度量网页和查询的相关性。

我们知道,短语原子能的应用可以分成三个关键词:原子能、的、应用。根据我们的直觉,我们知道,包含这三个词多的网页应该比包含它们少的网页相关。当然,这个办法有一个明显的漏洞,就是长的网页比短的网页占便宜,因为长的网页总的来讲包含的关键词要多些。因此我们需要根据网页的长度,对关键词的次数进行归一化,也就是用关键词的次数除以网页的总字数。我们把这个商称为关键词的频率,或者单文本词汇频率Term Frequency),比如,在某个一共有一千词的网页中原子能应用分别出现了 2 次、35 5 次,那么它们的词频就分别是 0.0020.035 0.005我们将这三个数相加,其和 0.042 就是相应网页和查询原子能的应用
相关性的一个简单的度量。概括地讲,如果一个查询包含关键词 w1,w2,...,wN, 它们在一篇特定网页中的词频分别是: TF1, TF2, ..., TFNTF: term frequency)那么,这个查询和该网页的相关性就是:
TF1 + TF2 + ... + TFN


读者可能已经发现了又一个漏洞。在上面的例子中,词站了总词频的 80% 以上,而它对确定网页的主题几乎没有用。我们称这种词叫应删除词Stopwords),也就是说在度量相关性是不应考虑它们的频率。在汉语中,应删除词还有等等几十个。忽略这些应删除词后,上述网页的相似度就变成了0.007,其中原子能贡献了0.002应用贡献了 0.005

细心的读者可能还会发现另一个小的漏洞。在汉语中,应用是个很通用的词,而原子能是个很专业的词,后者在相关性排名中比前者重要。因此我们需要给汉语中的每一个词给一个权重,这个权重的设定必须满足下面两个条件:

1.
一个词预测主题能力越强,权重就越大,反之,权重就越小。我们在网页中看到原子能这个词,或多或少地能了解网页的主题。我们看到应用一次,对主题基本上还是一无所知。因此,原子能的权重就应该比应用大。

2.
应删除词的权重应该是零。

我们很容易发现,如果一个关键词只在很少的网页中出现,我们通过它就容易锁定搜索目标,它的权重也就应该大。反之如果一个词在大量网页中出现,我们看到它仍然不很清楚要找什么内容,因此它应该小。概括地讲,假定一个关键词Dw个网页中出现过,那么Dw越大,w的权重越小,反之亦然。在信息检索中,使用最多的权重是逆文本频率指数Inverse document frequency 缩写为IDF),它的公式为log(D/Dw)其中D是全部网页数。比如,我们假定中文网页数是D=10亿,应删除词在所有的网页中都出现,即Dw=10亿,那么它的IDF=log(10亿/10亿)= log (1) = 0。假如专用词原子能在两百万个网页中出现,即Dw=200万,则它的权重IDF=log(500) =6.2。又假定通用词应用,出现在五亿个网页中,它的权重IDF = log(2)
则只有 0.7。也就只说,在网页中找到一个原子能的比配相当于找到九个应用的匹配。利用 IDF,上述相关性计算个公式就由词频的简单求和变成了加权求和,即 TF1*IDF1 + TF2*IDF2 ... + TFN*IDFN。在上面的例子中,该网页和原子能的应用的相关性为 0.0161,其中原子能贡献了 0.0126,而应用只贡献了0.0035。这个比例和我们的直觉比较一致了。

TF/IDF(term frequency/inverse document frequency) 的概念被公认为信息检索中最重要的发明。在搜索、文献分类和其他相关领域有广泛的应用。讲起 TF/IDF 的历史蛮有意思。IDF 的概念最早是剑桥大学的斯巴克-琼斯[注:她有两个姓] (Karen Sparck Jones)提出来的。斯巴克-琼斯1972年在一篇题为关键词特殊性的统计解释和她在文献检索中的应用的论文中提出IDF。遗憾的是,她既没有从理论上解释为什么权重IDF应该是对数函数log(D/Dw)(而不是其它的函数,比如平方根),也没有在这个题目上作进一步深入研究,以至于在以后的很多文献中人们提到TF/IDF时没有引用她的论文,绝大多数人甚至不知道斯巴克-琼斯的贡献。同年罗宾逊写了个两页纸的解释,解释得很不好。倒是后来康乃尔大学的萨尔顿(Salton)多次写文章、写书讨论 TF/IDF 在信息检索中的用途,加上萨尔顿本人的大名(信息检索的世界大奖就是以萨尔顿的名字命名的)。很多人都引用萨尔顿的书,甚至以为这个信息检索中最重要的概念是他提出的。当然,世界并没有忘记斯巴克-琼斯的贡献,2004年,在纪念文献学学报创刊 60 周年之际,该学报重印了斯巴克-琼斯的大作。罗宾逊在同期期刊上写了篇文章,用香农的信息论解释 IDF,这回的解释是对的,但文章写的并不好、非常冗长(足足十八页),把一个简单问题搞复杂了。其实,信息论的学者们已经发现并指出,其实 IDF 的概念就是一个特定条件下、关键词的概率分布的交叉熵(Kullback-Leibler Divergence)(详见上一系列)。这样,信息检索相关性的度量,又回到了信息论。

现在的搜索引擎对 TF/IDF 进行了不少细微的优化,使得相关性的度量更加准确了。当然,对有兴趣写一个搜索引擎的爱好者来讲,使用 TF/IDF 就足够了。如果我们结合上网页排名(Page Rank),那么给定一个查询,有关网页综合排名大致由相关性和网页排名乘积决定。

数学之美系列十有限状态机和地址识别

200675上午 09:09:00

发表者:吴军,Google 研究员

地址的识别和分析是本地搜索必不可少的技术,尽管有许多识别和分析地址的方法,最有效的是有限状态机。

一个有限状态机是一个特殊的有向图(参见有关图论的系列),它包括一些状态(节点)和连接这些状态的有向弧。下图是一个识别中国地址的有限状态机的简单的例子。



每一个有限状态机都有一个启始状态和一个终止状态和若干中间状态。每一条弧上带有从一个状态进入下一个状态的条件。比如,在上图中,当前的状态是,如果遇到一个词组和(区)县名有关,我们就进入状态区县;如果遇到的下一个词组和城市有关,那么我们就进入的状态,如此等等。如果一条地址能从状态机的起始状态经过状态机的若干中间状态,走到终止状态,那么这条地址则有效,否则无效。比如说,北京市双清路83对于上面的有限状态来讲有效,而上海市辽宁省马家庄则无效(因为无法从市走回到省)。
 
使用有限状态机识别地址,关键要解决两个问题,即通过一些有效的地址建立状态机,以及给定一个有限状态机后,地址字串的匹配算法。好在这两个问题都有现成的算法。有了关于地址的有限状态机后,我们就可又用它分析网页,找出网页中的地址部分,建立本地搜索的数据库。同样,我们也可以对用户输入的查询进行分析,挑出其中描述地址的部分,当然,剩下的关键词就是用户要找的内容。比如,对于用户输入的北京市双清路附近的酒家Google 本地会自动识别出地址北京市双清路和要找的对象酒家

上述基于有限状态机的地址识别方法在实用中会有一些问题:当用户输入的地址不太标准或者有错别字时,有限状态机会束手无策,因为它只能进行严格匹配。(其实,有限状态机在计算机科学中早期的成功应用是在程序语言编译器的设计中。一个能运行的程序在语法上必须是没有错的,所以不需要模糊匹配。而自然语言则很随意,无法用简单的语法描述。)

为了解决这个问题,我们希望有一个能进行模糊匹配、并给出一个字串为正确地址的可能性。为了实现这一目的,科学家们提出了基于概率的有限状态机。这种基于概率的有限状态机和离散的马尔可夫链(详见前面关于马尔可夫模型的系列)基本上等效。

在八十年代以前,尽管有不少人使用基于概率的有限状态机,但都是为自己的应用设计专用的有限状态机的程序。九十年代以后,随着有限状态机在自然语言处理的广泛应用,不少科学家致力于编写通用的有限状态机程序库。其中,最成功的是前 AT&T 实验室的三位科学家,莫瑞(Mohri, 皮瑞尔(Pereira和瑞利(Riley)。他们三人花了很多年时间,编写成一个通用的基于概率的有限状态机 C 语言工具库。由于 AT&T 有对学术界免费提供各种编程工具的好传统,他们三人也把自己多年的心血拿出来和同行们共享。可惜好景不长,AT&T 实验室风光不再,这三个人都离开了 AT&T,莫瑞成了纽约大学的教授,皮瑞尔当了宾西法尼亚大学计算机系系主任,而瑞利成了 Google 的研究员,AT&T 实验室的新东家不再免费提供有限状态机 C 语言工具库。虽然此前莫瑞等人公布了他们的详细算法,但是省略了实现的细节。因此在学术界,不少科学家能够重写同样功能的工具库,但是很难达到 AT&T 工具库的效率(即运算速度),这的确是一件令人遗憾的事。