我们前面说过自然语言处理的历史,说在乔姆斯基之前所有关于自然语言处理的研究都是基于经验主义的,到了乔姆斯基后所有的研究开始变得规则话了,也就是在乔姆斯基的语法理论出现之后
乔姆斯基曾经把语言定义为:按照一定规律构成的句子和符号串的有限或无限的集合。根据这个定义,无论哪一种语言都是句子和符号串的集合,当然自然语言也不例外,汉语、英语等所有自然语言,都是一个无限集合。构成这些集合的是句子、单词或其他符号。我国学者吴蔚天认为,可以把语言看成一个抽象的数学系统。无论把语言看作集合还是数学系统,我们都可以用数学的方法来进行刻画和描述
那么一般地,描述一种语言可以有三种途径:
1.穷举法:把语言中的所有句子都枚举出来。显然,这种方法只适合句子数目有限的语言。(这种方法显然不太靠谱啊,我们所使用的语言实在是太多了)
2.文法(产生式系统)描述:语言中的每个句子用严格定义的规则来构造,利用规则生成语言中合法的句子。(这个听起来靠谱多了啊,实际上也就是我们今天要说的形式语言,用严格定义的规则来构造语言)
3.自动机法:通过对输入的句子进行合法性检验,区别哪些是语言中的句子,哪些不是语言中的句子。(自动机是和形式语言配合其作用的,后面我们会说到每一种形式语言对应着一个自动机)
文法用来精确地描述语言和其结构,自动机则是用来机械地刻画对输入字符串的识别过程。用文法来定义语言的优点是:由文法给予语言中的句子以结构,各成分之间的结构关系清楚、明了。但是,如果要直接用这些规则来确定一个字符串是否属于这套规则所定义的语言似乎并不十分明确。而由自动机来识别一个字符串是否属于该语言则相对简单,但自动机很难描述语言的结构。所以自然语言处理中的识别和分析算法,大多兼取两者之长,下面我们说一下形式语言的四种形式,都是很严格同时也很简单的规则
形式语法的定义
如果我们用重写规则α→β的形式表示,其中,α,β均为字符串。那么,这条规则表示字符串α可以被改写成β。一个初始的字符串通过不断地运用重写规则,就可以得到另一个字符串。如果通过选择多个不同的规则并以不同的顺序来运用这些规则的话,就可以得到不同的新字符串
从这个严格的定义上来看,形式语言分为四部分,或者叫四元组,N叫做非终结符,非终结符的意思就是可以向后继续演化,派生出其他字符,终结符就是到这里就不能往后面派生了,P是重写规则,重写规则的意思就是说非终结符和终结符都要按照这个定义好的语言规则往后面派生,最后的S就是个开始按钮的意思
正则文法(或称3型文法)
我们这里的大写B往往代表非终结符,用非终结符可以往后面派生其他字符,小写字母往往代表终结符,遇到终结符我们这个字符就终止了,所以这个正则文法就是两条派生规则,非常简单但也非常强大的给的啊,用它可以产品很多符号集合
上下文无关文法(对的,还有上下文有关文法)
这个文法也叫2型文法,承接3型文法啊,这个重写规则只有一个,限制更少了,举个例子:
从定义中我们可以看出,2型文法比3型文法少了一层限制,其规则右端的格式没有约束。也就是说,规则左部的非终结符可以被改写成任何形式,从例子中我们也可以看的出来啊
上下文有关文法(1型文法)
为啥叫上下文有关文法,从上述定义也可以看出,字符串αAβ中的A被改写成γ时需要有上文语境α和下文语境β,就是因为这个
当然,α和β可以为空字符ε,如果α和β同时为空时,1型文法变成了2型文法。也就是说,2型文法是1型文法的特例。因此,1型文法可识别的语言集合比2型文法可识别的语言集合更大,很明显1型文法限制更加少了,包括了2型文法
无约束文法(0型文法,这个没啥用,就是凑数的)
从0型文法到3型文法,对规则的约束越来越多,每一个正则文法都是上下文无关文法,每一个上下无关文法都是上下文有关文法,而每一个上下文有关文法都可以认为是0型文法。因此,从0型文法到3型文法所识别的语言集合越来越小
自动机
根据不同的构成和功能,自动机分成以下4种类型:有限自动机(finite automata, FA)、下推自动机(push-down automata, PDA)、线性界限自动机(linear-bounded automata)和图灵机(Turing machine)
这个自动集合形式语言的四种文法有一一对应的关系
0型文法对应图灵机
1型文法对应线性有界自动机
2型文法对应下推自动机
3型文法对应正则文法
自动机也是研究自然语言处理的重要工具,不过今年大家用的比较多的是经验主义那一套,所以自动机相对来说用的比较少了,我们后面也用不到自动机这个工具,所以有兴趣的同学可以找资料看看
END