形式语言

无向图G定义为一个二元组 $G = (N, E)$,其中N是顶点的非空有限集合,$N=\lbrace n_i | i = 0, 1, ..., k \rbrace$,E是边的有限集合,$E = \lbrace (n_i, n_j) | n_i, n_j \in N \rbrace$

有向图D定义为一个二元组 $D= (N, E), \quad N=\lbrace n_i | i = 0, 1, ..., k \rbrace , \quad E = \lbrace (n_i, n_j) | n_i, n_j \in N \rbrace , \quad (n_i, n_j) \neq (n_j,n_i) $。$(n_i,n_j) \in E$ 是顶点$n_i$的出边,是顶点$n_j$的入边。

连通图是一个无向图G或有向图D,对顶点集合N中的任意两个顶点$n_s$和$n_t$,存在一个顶点序列P,$P=(n_s = n_{i0}, n_{i1},...,n_{ik}=n_t)$,其中$n_{ij} \in N, \forall j = 0, 1, 2, ..., k$,且 $e_j=(n_{ij}, n_{i(j+1)}) \in E, \forall j = 0, 1, 2, ..., k-1$,P也被称为一条路径或通路。

回路:设P是有向图D的一条路径,$P=(n_{i0}, n_{i1},...,n_{ik})$,如果$n_{i0} = n_{ik}$,则称P是D的一条回路,即开始和终结于同一顶点的通路称为回路。如果$k=0$,则称P为自回路。若P是无向图G的一条路径,$P=(n_{i0}, n_{i1},...,n_{ik})$,且$k > 0$,则称P是G的一条回路。若图中无任何回路,称该图为无回路图。

一个无回路的无向图称为森林。一个无回路的连通无向图称为树(或自由树),如果树中某一个结点被特别地标记为根结点,则这棵树称为根树。

树是包含n个结点的有穷集合S(n > 0),在S上定义一个关系R,R满足如下三个条件:

  1. 有且仅有一个结点$t_0 \in S$,该结点对R 来说没有前驱,结点$t_0$称为树根
  2. 除结点$t_0$外,每个结点都有且仅有一个直接前驱(否则出现回路)
  3. 除结点$t_0$外任意结点$t \in S$,都存在一个结点序列$t_0, t_1, ... , t_k$,使得 $t_0$为树的根, $t_k = t$,有序对$<t_{i-1}, t_i > \in R (1 \leq i \leq k)$,则该结点序列称为从根结点$t_0$到结点 $t$的一条路径(连通性)

根树中,自上而下的路径末端结点称为树的叶结点,根结点与叶结点之间的结点称为中间结点(内结点)。

 字符串

假设$\Sigma$是字符的有限集合(字符表),由$\Sigma$中字符相连而成的有限序列称为字符串,不包含任何字符的字符串称为空串,记作$\epsilon$。包括空串在内的$\Sigma$上的字符串全体记作$\Sigma^*$。

连接

假设x和y是$\Sigma$上的字符串,则把y的各个字符依次写在x之后得到的符号序列称为x与y的连接,记作xy。

假设x是$\Sigma$上的字符串,把x自身连接n($n \geq 0$)次得到的字符串

$$z=xx...x$$

称为x的n次方幂,记作$x^n$。当 n =0 时,$x^0 = \sigma$,当 $n \geq 1$时,$x^n = xx^{n-1} = x^{n-1}x$。

乘积

假设A和B是字符表$\Sigma$上的符号串的集合,则A和B的乘积定义为

$$AB=\lbrace xy|x \in A, y \in B \rbrace$$

其中,$A^0 = \lbrace \sigma \rbrace$。当$n \geq 1$时,$A^n = A^{n-1}A = AA^{n-1}$。

闭包

$\Sigma$上的符号串集合V的闭包定义为:

$$V^* = V^0 \cup V^1 \cup V^2 \cup ..., \quad V^+ = V^* - \lbrace \epsilon \rbrace$$

|x|表示字符串x的长度,即字符个数。

字符串与语言

定义:

  1. 一个字符集是符号的一个有限集合
  2. 字符集A上的一个字符串是由A中的字符所组成的有序序列,其中允许字符重复出现,字符串的长度就是序列中字符的个数(包括重复字符)
  3. 空字符串为$\epsilon$,且是唯一的,其长度为0。注意与空集$\emptyset$区分
  4. 如果S 和 T 是两个字符串的集合,那么$ST = \lbrace xy | x \in S and y \in T \rbrace$
  5. 字符集A 上的语言L 是闭包$A^*$的子集,$L \subset A^*$

定义自然数如下:

$0 = \emptyset$

$1 = \lbrace \emptyset \rbrace$

$2 = \lbrace \emptyset, \lbrace \emptyset \rbrace \rbrace$

一般地

$n+1 = \lbrace 0,1,2...n \rbrace$

整个自然数集合$\Bbb N$

$\Bbb N = \lbrace 0,1,2,... \rbrace$

集合大小与可数性

  1. 给定两个集合S, T,如果存在一个 一对一的满射(或称双射)函数 $f: S \rightarrow T$,那么S 和 T 的大小相等,$|S|=|T|$
  2. 如果存在一个 一对一的函数(单射,但不一定是满射)函数 $f: S \rightarrow T$,那么$|S| \le |T|$
  3. 如果存在一个 一对一的函数 $f: S \rightarrow T$,但是不存在满射函数,那么 $|S| \lt |T|$

我们称集合S:

  1. 是有限的,如果 $|S| \lt |\Bbb N|$
  2. 是可数的,如果 $|S| \le |\Bbb N|$
  3. 是可数无限的,如果 $|S| = |\Bbb N|$
  4. 是不可数的,如果 $|S| \gt |\Bbb N|$

例:

  • 整数集合$\Bbb Z = \lbrace 0, 1, -1, 2, -2, ... \rbrace$是可数的
  • 有理数集合$\Bbb Q = \lbrace q /q | p, q \in \Bbb Z , q \neq 0 \rbrace$ 是可数的
  • 如果S 是可数的,那么S的笛卡尔乘积 $S^n, \forall n < \infty$ 也是可数的
  • 对任意非空字符集A,$A^*$ 是可数无限的

集合S的幂集是S的所有子集所组成的集合:

$P(S) = \lbrace T | T \subset S \rbrace$

且有关系:

$|S| \lt |P(S)|$

所以对任何可数无限集合S,其幂集P(S) 是不可数的。比如,$P(\Bbb N)$就是不可数的,不难发现,实数集合$\Bbb R$与$P(S)$大小相等,$|\Bbb R|=|P(\Bbb N)|$

形式语言

形式语言用来描述一个语言。

形式语法

形式语法是一个四元组$G = (N, \Sigma, P, S)$,N是非终结符的有限集合,$\Sigma$是终结符的有限集合,$N \bigcap \Sigma = \varnothing $,$V=N \cup \Sigma$称为总词汇表。P是一组重写规则的有限集合$P=\lbrace \alpha \rightarrow \beta \rbrace$,其中$\alpha, \beta$是词汇表V中元素构成的字符串,且$\alpha$至少包含一个非终结符,$S \in N$称为句子符或初始符。

注意:这里不是以字符为单位,而是以词汇为单位,词汇包含一个或多个字符。

推导

$G=(N, \Sigma, P, S)$是一个文法,在$(N \cup \Sigma)^*$上定义关系$\Rightarrow \\ G$(直接派生或推导):如果$\alpha \beta \gamma$ 是$(N \cup \Sigma)^*$中的符号串,且$\lbrace \beta \rightarrow \delta \rbrace$是 P 中的一个产生式,那么,$\alpha \beta \gamma$ $\Rightarrow \\ G$ $\alpha \delta \gamma$。

形式语法的类型

(约定以英文大写表示非终结符,英文小写表示终结符,希腊小写表示由非终结符和终结符组成的符号串)

3型文法

又称正则文法:文法G的规则集P中所有规则均满足:$A \rightarrow Bx | x$,其中$A, B \in N, \quad x \in \Sigma$。

由于规则右端如果有非终结符的话,都是出现在最左边,所以又称左线性正则文法。类似的如果:$A \rightarrow xB$,则称为右线性正则文法。

例如:

$G=(N, \Sigma, P, S), \quad N=\lbrace S, A, B \rbrace, \quad \Sigma=\lbrace a, b \rbrace$

$P: (1) S \rightarrow aA $

$(2) A \rightarrow aA $

$(3) A \rightarrow bbB $

$(4) B \rightarrow bB $

$(5) B \rightarrow b $

上面第三条规则可以改写为,

$$ A \rightarrow bB'$$

$$ B' \rightarrow bB $$

于是,可以看出该文法为右线性正则文法,所识别的语言为$L(G) = \lbrace a^n b^m, \quad n \geq 1, m \geq 3 \rbrace$

 

2型文法:

又称上下文无关文法:如果文法G的规则集P中所有规则均满足如下形式:$A \rightarrow \alpha$,其中$A \in N, \quad \alpha \in (N \cup \Sigma)^*$

例如:

$G=(N, \Sigma, P, S), \quad N=\lbrace S, A, B, C \rbrace, \Sigma = \lbrace a, b, c \rbrace,$

$P:(1) S \rightarrow ABC$

$(2) A \rightarrow aA|a$

$(3) B \rightarrow bB|b$

$(4) C \rightarrow BA|c$

该文法为上下文无关文法,可识别语言为$L(G)=\lbrace a^n b^m a^k c^{\alpha}, \quad n \geq 1, m \ge1, \alpha \in \lbrace 0, 1 \rbrace$

从定义可见,2型文法比3型文法少了一层限制,其规则右端格式没有约束,即规则左端的非终结符可以被改写成任何形式。3型文法是2型文法的特例,即此时$\alpha$为$Bx|x$。

1型文法

又称上下文有关文法:如果文法G的规则集P中所有规则均满足如下形式:$\alpha A \beta \rightarrow \alpha \gamma \beta$,其中$A \in N, \quad \alpha, \beta, \gamma \in (N \cup \Sigma)^*$,且$\gamma$至少包含一个字符。

从上述定义可知,字符串$\alpha A \beta$中的A 可以被改写为$\gamma$需要有上文语境$\alpha$和下文语境$\beta$,即上下文含义所在。当$\alpha, \beta$均为$\epsilon$时,1型文法变成了2型文法,也就是说,2型文法是1型文法的特例,1型文法可识别的语言比2型文法识别的语言集合更大。

上下文有关文法的另一种定义:如果文法G为上下文有关文法,当且仅当$x \rightarrow y, \quad x \in (N \cup \Sigma)^+, y \in (N \cup \Sigma)^*$,并且$|y| \ge |x|$。

0型文法

又称无约束文法:如果文法G的规则集P中所有规则满足:$\alpha \rightarrow \beta$,其中$\alpha \in (N \cup \Sigma)^+, \beta \in (N \cup \Sigma)^*$。0型文法比1型文法少了$|y| \ge \x|$的约束。

从上面定义可见,从0型文法到3型文法,约束越来越多,所识别的语言集合越来越小,$L(G_0) \supset L(G_1) \supset L(G_2) \supset L(G_3)$

CRG识别句子的派生树表示

CRG(Context Free Grammar)上下文无关文法$G=(N, \Sigma, P, S)$产生句子的过程可以由派生树(语法树、分析树、推导树)表示。构造步骤如下:

  1. 对$\forall x \in N \cup \Sigma$,给一个标记作为结点,令文法的初始符号S作为树的根结点
  2. 如果一个结点的标记为A,且至少有一个除它自身之外的后裔结点,那么$A \in N$
  3. 如果一个结点的标记为A,它的k(k > 0)个直接后裔结点按从左到右的顺序依次标记为$A_1,A_2,...A_k$,那么$A \rightarrow A_1,A_2,...A_k$一定是P中的一个产生式

二义性文法

如果文法G对于同一句子存在两棵或以上的不同分析树,那么,该句子是二义性的,文法G为二义性文法。

例:

给定文法G(S)的一组规则:

$S \rightarrow P  NP$  (S表示文法的初始符Start,而不是句子 Sentence)

$NP \rightarrow NN | NP Aux  NP$     $P \rightarrow 关于$

$NN \rightarrow 鲁迅|文章$     $Aux \rightarrow 的$

其中NP =Noun Phrase, Aux = Auxiliary, NN = Noun, P=proposition

于是,字符串“关于鲁迅的文章”最左推导为

$S \Rightarrow P NP \Rightarrow 关于NP \Rightarrow 关于 NP Aux NP \Rightarrow 关于 NN Aux NP \Rightarrow 关于鲁迅 Aux NP \Rightarrow 关于鲁迅的 NP \Rightarrow 关于鲁迅的 NN \Rightarrow 关于鲁迅的文章$

派生树为

从上到下,从左到右,可见与上面的推导过程是一致的。

如果对上面的那组规则增加一条规则$S \rightarrow PP Aux NP$,那么规则集变为

$S \rightarrow P  NP | PP Aux NP$     $PP  \rightarrow P NP$  

$NP \rightarrow NN | NP Aux  NP$     $P \rightarrow 关于$

$NN \rightarrow 鲁迅|文章$     $Aux \rightarrow 的$

其中 PP = prepositional phrase(介词短语)

那么句子“关于鲁迅的文章”除了有上面那棵分析树,还可能是下面这棵分析树

于是,增加规则后文法变成二义性文法。

ref

统计自然语言处理,宗成庆

posted @ 2017-07-04 11:12  gaoshoufenmu  阅读(1357)  评论(0编辑  收藏  举报