发表者:吴军,Google 研究员
地址的识别和分析是本地搜索必不可少的技术,尽管有许多识别和分析地址的方法,最有效的是有限状态机。
一个有限状态机是一个特殊的有向图(参见有关图论的系列),它包括一些状态(节点)和连接这些状态的有向弧。下图是一个识别中国地址的有限状态机的简单的例子。
每一个有限状态机都有一个启始状态和一个终止状态和若干中间状态。每一条弧上带有从一个状态进入下一个状态的条件。比如,在上图中,当前的状态是“省”,如果遇到一个词组和(区)县名有关,我们就进入状态“区县”;如果遇到的下一个词组和城市有关,那么我们就进入“市”的状态,如此等等。如果一条地址能从状态机的起始状态经过状态机的若干中间状态,走到终止状态,那么这条地址则有效,否则无效。比如说,“北京市双清路83号”对于上面的有限状态来讲有效,而“上海市辽宁省马家庄”则无效(因为无法从市走回到省)。
使用有限状态机识别地址,关键要解决两个问题,即通过一些有效的地址建立状态机,以及给定一个有限状态机后,地址字串的匹配算法。好在这两个问题都有现成的算法。有了关于地址的有限状态机后,我们就可又用它分析网页,找出网页中的地址部分,建立本地搜索的数据库。同样,我们也可以对用户输入的查询进行分析,挑出其中描述地址的部分,当然,剩下的关键词就是用户要找的内容。比如,对于用户输入的“北京市双清路附近的酒家”,Google 本地会自动识别出地址“北京市双清路”和要找的对象“酒家”。
上述基于有限状态机的地址识别方法在实用中会有一些问题:当用户输入的地址不太标准或者有错别字时,有限状态机会束手无策,因为它只能进行严格匹配。(其实,有限状态机在计算机科学中早期的成功应用是在程序语言编译器的设计中。一个能运行的程序在语法上必须是没有错的,所以不需要模糊匹配。而自然语言则很随意,无法用简单的语法描述。)
为了解决这个问题,我们希望有一个能进行模糊匹配、并给出一个字串为正确地址的可能性。为了实现这一目的,科学家们提出了基于概率的有限状态机。这种基于概率的有限状态机和离散的马尔可夫链(详见前面关于马尔可夫模型的系列)基本上等效。
在八十年代以前,尽管有不少人使用基于概率的有限状态机,但都是为自己的应用设计专用的有限状态机的程序。九十年代以后,随着有限状态机在自然语言处理的广泛应用,不少科学家致力于编写通用的有限状态机程序库。其中,最成功的是前 AT&T 实验室的三位科学家,莫瑞(Mohri), 皮瑞尔(Pereira) 和瑞利(Riley)。他们三人花了很多年时间,编写成一个通用的基于概率的有限状态机 C 语言工具库。由于 AT&T 有对学术界免费提供各种编程工具的好传统,他们三人也把自己多年的心血拿出来和同行们共享。可惜好景不长,AT&T 实验室风光不再,这三个人都离开了 AT&T,莫瑞成了纽约大学的教授,皮瑞尔当了宾西法尼亚大学计算机系系主任,而瑞利成了 Google 的研究员,AT&T 实验室的新东家不再免费提供有限状态机 C 语言工具库。虽然此前莫瑞等人公布了他们的详细算法,但是省略了实现的细节。因此在学术界,不少科学家能够重写同样功能的工具库,但是很难达到 AT&T 工具库的效率(即运算速度),这的确是一件令人遗憾的事。
分享到:
相关推荐
有限状态机(Finite State Machine, FSM)是一种在计算机科学、软件工程、电子工程等领域广泛应用的模型,它通过定义一系列的状态以及这些状态之间的转换来描述系统的动态行为。在软件设计中,有限状态机可以帮助...
有限状态机(Finite State Machine, FSM)是一种数学模型,它被广泛应用于计算机科学、软件工程、电子工程等领域,尤其在处理具有明确步骤和状态转换的系统时显得尤为有用。有限状态机通过定义不同的状态和状态之间...
有限状态机是一种数学模型,用于描述具有离散输入和输出的系统。FSM由有限个不同状态组成,系统在不同输入的作用下会从一个状态迁移到另一个状态。FSM在编程中常用于建模和实现算法,其能够实时跟踪莫尔斯报文的发报...
有限状态机是一种数学模型,它由有限个状态、条件、动作和次态组成。在按键识别的过程中,每个状态对应按键操作过程中的不同阶段,比如“按键按下”、“按键释放”等;条件则对应触发状态转换的事件或条件,例如按键...
基于有限状态机的Web漏洞扫描器,可以有效地识别和分析这些应用中可能存在的安全问题,从而为构建安全可靠的移动互联网环境提供重要的技术支撑。 总结来说,网络安全研究中针对Web漏洞的自动识别是一个复杂而重要的...
有限状态机(FSM,Finite State Machine)是一种用于控制程序行为的数学模型,它被广泛应用于单片机编程中。有限状态机的基本原理是通过有限个状态和在这些状态间转移的规则来处理逻辑和控制程序流程。在单片机这种...
状态机(Finite State Machine, FSM)是计算机科学和软件工程中的一个重要概念,它是一种数学模型,用于描述系统或程序在不同条件下的行为变化。在IT领域,FSM被广泛应用于硬件设计、软件开发、网络协议、游戏编程等...
状态机是一种数学模型,用于描述系统随时间可能经历的一系列状态以及状态之间的转移条件。在日志中,状态机变化可能表现为特定事件序列,例如,服务器从运行状态变为暂停状态,然后再恢复。通过识别这些变化,我们...
有限状态机(Finite State Machine, FSM)作为一种数学模型,被广泛应用于计算机科学、电子工程、语言学等多个学科领域,用于描述系统在不同状态下的行为以及状态之间的转换。本文将深入探讨有限状态机的原理、设计...
1. **有限状态机**:有限状态机是一种数学模型,由一组状态、一个初始状态、一组转换规则(触发状态变化的事件或条件)以及一个输出函数组成。在键盘程序中,每个按键的按下和释放可以视为不同的状态,状态之间的...
状态机是一种重要的软件和硬件设计模型,用于描述和实现具有特定行为或功能的系统。在“FSM.rar_状态机_状态机设计”这个压缩包中,主要包含了一个名为“FSM.pdf”的文件,该文件可能详细阐述了状态机的设计方法、...
有限状态机(Finite State Machine, FSM)是一种数学模型,常被用在计算机科学、电子工程、自动控制等领域,用于描述和分析系统的行为。它通过一组有限的状态和输入,以及定义状态间转换的规则来实现计算或决策过程...
**状态机的概念**:状态机是一种数学模型,用于描述系统的行为,该行为由一系列的状态和这些状态间的转换组成。例如,在日常生活中,我们可以将水的状态变化过程(固态→液态→气态)视为一个简单状态机的例子。对于...
本文将从统计语言模型、中文分词、隐含马尔可夫模型、信息度量、布尔代数、图论、信息论、贾里尼克公式、相关性计算、有限状态机、地址识别、余弦定理、信息指纹、数学模型的重要性、最大熵模型、搜索引擎反垃圾技术...
状态机是一种数学模型,常用于描述和设计具有多种工作状态的系统。在按键处理中,状态机通过跟踪系统在不同时间点的状态,来识别按键的不同事件。例如,一个简单的状态机可能包括以下几个状态: 1. **空闲状态**:...
有限状态机(Finite State Machine, FSM)是一种数学模型,用于描述对象或系统的状态变化过程。它由一系列的状态、触发状态变化的事件、以及从一个状态到另一个状态的转换规则组成。 ##### 2.2 FSM要素 ###### ...
状态机设计是软件工程、硬件设计以及自动化领域中不可或缺的一部分,尤其在嵌入式系统、协议解析、控制逻辑和游戏编程等场景中广泛应用。本文将详细介绍状态机设计的基本步骤,帮助初学者掌握这一实用技术。 一、...
有限状态机(Finite State Machine, FSM)是一种数学模型,它被广泛应用于计算机科学、软件工程、电子工程等领域,用于描述和分析系统的行为。在C++中实现有限状态机,可以利用面向对象编程特性,如类和继承,以及...