文章目录
形式语言
1 形式语言
1.1 语言的定义
《现代汉语词典》1996,对语言的定义为:人类所特有的用来表达意思、交流思想的工具、是一种特殊的社会现象,由语音、词汇和语法构成一定的系统。
乔姆斯基(Noam Chomsky),对语言的定义为:按照一定规律构成的句子和符号串的有限或无限的集合。根据这个定义,无论哪一种语言都是句子和符号串的集合。
我国学者吴蔚天认为:可以把语言看成一个抽象的数学系统。
无论把语言看作集合还是数学系统,我们都可以用数学的方法来进行刻画和描述。万物皆数嘛。
1.2 语言描述的三种途径
一般地,描述一种语言可以有三种途径:
- 穷举法:把语言中的所有句子都枚举出来。显然,这种方法只适合句子数目有限的语言,假设现在让你把汉语中的所有句子都举出来,这得花上几辈子吧。
- 语法(文法)描述:语言中的每个句子用严格定义的规则来构造,利用规则生成语言中合法的句子。
- 自动机法:通过对输入的句子进行合法性检验,区别哪些是语言中的句子,哪些不是语言中的句子。
第一种描述语言的方法想想就好了,现在也没人会去做。语法(文法)用来精确地描述语言及其结构,自动机则是用来机械地刻画对输入字符串的识别过程。这两种描述语言的方法各有所长,语法(文法)给予语言中的句子以结构,各成分之间的结构关系清楚明了;自动机用来识别一个字符串是否属于该语言则相对简单。自然语言处理中的识别和分析算法,大多兼取两者之长。
1.3 形式语言的直观意义
形式语言是用来精确地描述语言(包括人工语言和自然语言)及其结构的手段。形式语言学也称代数语言学。
以重写规则
α
→
β
\alpha \rightarrow \beta
α→β的形式表示,其中
α
,
β
\alpha, \beta
α,β均为字符串。意思就是,字符串
α
\alpha
α可以被改写成
β
\beta
β。一个初步的字符串通过不断地运用重写规则,就可以得到另一个字符串。通过选择不同的规则并以不同的顺序来运用这些规则就可以得到不同的新字符串。
1.4 形式语法(文法)的定义
形式语法(文法)是一个四元组 G = ( N , Σ , P , S ) G=(N,\Sigma,P,S) G=(N,Σ,P,S),以下是每个字符的含义:
- N是非终结符(non-terminal symbol)的有限集合(有时也叫变量集或句法种类集);
- Σ \Sigma Σ是终结符号(terminal symbol)的有限集合, N ∩ Σ = Φ N\cap \Sigma = \Phi N∩Σ=Φ, V = N ∪ Σ V=N\cup \Sigma V=N∪Σ称为总词汇表;
- P P P是一组重写规则的有限集合, P = { α → β } P=\{\alpha \rightarrow \beta\} P={α→β},其中 α , β \alpha, \beta α,β是由 V V V中元素构成的串,但是 α \alpha α中至少应含有一个非终结符号;
- S ∈ N S\in N S∈N,称为句子符或初始符。
1.5 推导的定义
设
G
=
(
N
,
Σ
,
P
,
S
)
G=(N,\Sigma,P,S)
G=(N,Σ,P,S)是一个语法,在
(
N
∪
Σ
)
∗
(N\cup \Sigma)^*
(N∪Σ)∗上定义关系
⇒
G
\mathop{\Rightarrow}\limits_G
G⇒(直接派生或推导)为:如果
α
β
γ
\alpha \beta \gamma
αβγ是
(
N
∪
Σ
)
∗
(N\cup \Sigma)^*
(N∪Σ)∗中的字符串,且
β
→
δ
\beta \rightarrow \delta
β→δ是
P
P
P的产生式,那么
α
β
γ
⇒
G
α
δ
γ
\alpha \beta \gamma \mathop{\Rightarrow}\limits_G \alpha \delta \gamma
αβγG⇒αδγ。
一般地,用
⇒
G
+
\mathop{\Rightarrow}\limits_G^+
G⇒+(按非平凡方式派生)表示
⇒
G
\mathop{\Rightarrow}\limits_G
G⇒的传递闭包,也就是
(
N
∪
Σ
)
∗
(N\cup \Sigma)^*
(N∪Σ)∗上的符号串
ξ
i
\xi_i
ξi到
ξ
i
+
1
\xi_{i+1}
ξi+1的
n
(
n
≥
1
)
n(n\ge 1)
n(n≥1)步推导或派生;用
⇒
G
∗
\mathop{\Rightarrow}\limits_G^*
G⇒∗(派生)表示
⇒
G
\mathop{\Rightarrow}\limits_G
G⇒的自反和传递闭包,即由
(
N
∪
Σ
)
∗
(N\cup \Sigma)^*
(N∪Σ)∗上的符号串
ξ
i
\xi_i
ξi到
ξ
i
+
1
\xi_{i+1}
ξi+1的
n
(
n
≥
0
)
n(n\ge 0)
n(n≥0)步推导或派生。如果清楚某个推导是语法(文法)
G
G
G所产生的,则上面两个符号中的
G
G
G可以省略不写。
1.6 最左、最右、规范推导
最左推导:约定每步推导中只改写最左边的那个非终结符。
最右推导:约定每步推导中只改写最右边的那个非终结符。
最右推导也称规范推导。
示例:设
G
=
(
{
E
,
T
,
F
}
,
{
a
,
+
,
∗
,
(
,
)
}
,
P
,
E
)
G=(\{E,T,F\},\{a,+,*,(,)\},P,E)
G=({E,T,F},{a,+,∗,(,)},P,E),其中
P
:
{
E
→
E
+
T
∣
T
,
T
→
T
∗
F
∣
F
,
F
→
(
E
)
∣
a
}
P:\{E\rightarrow E+T|T,T \rightarrow T*F|F,F \rightarrow (E)|a\}
P:{E→E+T∣T,T→T∗F∣F,F→(E)∣a},字符串
a
+
a
∗
a
a+a*a
a+a∗a的两种推导过程如下:
最左推导:
E
⇒
E
+
T
⇒
T
+
T
⇒
F
+
T
⇒
a
+
T
⇒
a
+
T
∗
F
⇒
a
+
F
∗
F
⇒
a
+
a
∗
F
⇒
a
+
a
∗
a
E\Rightarrow E+T \Rightarrow T+T \Rightarrow F+T \Rightarrow a+T \Rightarrow a+T*F\Rightarrow a+F*F \Rightarrow a+a*F \Rightarrow a+a*a
E⇒E+T⇒T+T⇒F+T⇒a+T⇒a+T∗F⇒a+F∗F⇒a+a∗F⇒a+a∗a
最右推导:
E
⇒
E
+
T
⇒
E
+
T
∗
F
⇒
E
+
T
∗
a
⇒
E
+
F
∗
a
⇒
E
+
a
∗
a
⇒
T
+
a
∗
a
⇒
F
+
a
∗
a
⇒
a
+
a
∗
a
E \Rightarrow E+T \Rightarrow E+T*F \Rightarrow E+T*a \Rightarrow E+F*a \Rightarrow E+a*a \Rightarrow T+a*a \Rightarrow F+a*a \Rightarrow a+a*a
E⇒E+T⇒E+T∗F⇒E+T∗a⇒E+F∗a⇒E+a∗a⇒T+a∗a⇒F+a∗a⇒a+a∗a
1.7 句型与句子
一些特殊类型的符号串为语法(文法) G = ( N , Σ , P , S ) G=(N,\Sigma,P,S) G=(N,Σ,P,S)的句子形式(句型),通过如下递归方式定义:
- S S S是一个句子形式;
- 如果 α β γ \alpha \beta \gamma αβγ是一个句子形式,且 β → δ \beta \rightarrow \delta β→δ是 P P P的产生式,则 α δ γ \alpha \delta \gamma αδγ也是一个句子形式。
语法(文法) G G G的不含非终结符的句子形式成为 G G G生成的句子。由文法 G G G生成的语言,记作 L ( G ) L(G) L(G),指生成的所有句子的集合。即: L ( G ) = { x ∣ x ∈ Σ , S ⇒ G + x } L(G)=\{x|x\in \Sigma,S\mathop{\Rightarrow}\limits_G^+x\} L(G)={x∣x∈Σ,SG⇒+x}
1.8 形式语法的类型
在乔姆斯基的语法理论中,语法(文法)被划分为4种类型,分别是3型语法(文法)、2型语法(文法)、1型语法(文法)和0型语法(文法),分别称为正则文法,上下文无关文法,上下文相关文法和无约束文法。
1.8.1 正则文法
定义:如果文法
G
=
(
N
,
Σ
,
P
,
S
)
G=(N,\Sigma,P,S)
G=(N,Σ,P,S)的
P
P
P中的规则满足如下形式:
A
→
B
x
A\rightarrow Bx
A→Bx或
A
→
x
A\rightarrow x
A→x,其中
A
,
B
∈
N
,
x
∈
Σ
A,B\in N,x\in \Sigma
A,B∈N,x∈Σ,则称该文法为正则文法或3型文法。
在这种书写格式中,由于规则右部的非终结符号(如果有的话)出现在最左边,所以这种形式的正则文法又叫左线性正则文法。类似地,如果一正则文法所有含非终结符号的形式规则位
A
→
x
B
A\rightarrow xB
A→xB,则该文法称为右线性正则文法。
1.8.2 上下文无关文法
定义:如果文法
G
G
G的规则集
P
P
P中所有规则均满足如下形式:
A
→
α
,
A
∈
N
,
α
∈
(
N
∪
Σ
)
∗
A\rightarrow \alpha,A\in N,\alpha \in(N\cup \Sigma)^*
A→α,A∈N,α∈(N∪Σ)∗,则称文法
G
G
G为上下文无关文法(context-free grammar,CFG),或称2型文法。
从定义中可以看出,2型文法比3型文法少了一层限制,其规则右端的格式没有约束。也就是说,规则左部的非终结符可以被改写成任何形式。
1.8.3 上下文有关文法
定义:如果
P
P
P中的规则满足如下形式:
α
A
β
→
α
γ
β
\alpha A \beta \rightarrow \alpha \gamma \beta
αAβ→αγβ,其中,
A
∈
N
A\in N
A∈N,
α
,
β
,
γ
∈
(
N
∪
Σ
)
∗
\alpha,\beta,\gamma \in (N\cup \Sigma)^*
α,β,γ∈(N∪Σ)∗,且
γ
\gamma
γ至少包含一个字符,则称该文法为上下文有关文法(context-sensitive grammar,CSG),或称1型文法。
另一种定义:
i
f
x
→
y
,
x
∈
(
N
∪
Σ
)
+
,
y
∈
(
N
∪
Σ
)
∗
if \ x\rightarrow y,x\in (N\cup \Sigma)^+,y\in (N\cup \Sigma)^*
if x→y,x∈(N∪Σ)+,y∈(N∪Σ)∗,并且
∣
y
∣
≥
∣
x
∣
|y| \ge |x|
∣y∣≥∣x∣。
1.8.4 无约束文法
定义:如果
P
P
P中的规则满足如下形式:
α
→
β
\alpha \rightarrow \beta
α→β其中
α
∈
(
N
∪
Σ
)
+
,
β
∈
(
N
∪
Σ
)
∗
\alpha \in (N\cup \Sigma)^+,\beta \in (N\cup \Sigma)^*
α∈(N∪Σ)+,β∈(N∪Σ)∗是字符串,则称
G
G
G为无约束文法或无限制重写系统,也称0型文法。
显然,每一个正则文法都是上下文无关文法,每一个上下文无关文法都是上下文有关文法,而每一个上下文有关文法都是无约束文法,即:
L
(
G
0
)
⊇
L
(
G
1
)
⊇
L
(
G
2
)
⊇
L
(
G
3
)
L(G0)\supseteq L(G1)\supseteq L(G2)\supseteq L(G3)
L(G0)⊇L(G1)⊇L(G2)⊇L(G3)
如果一种语言能够由几种文法所产生,则把这种语言称为在这几种文法中受限制最多的那种文法所产生的语言。
1.9 CFG产生的语言句子的派生树表示
一个上下文无关文法 G = ( N , Σ , P , S ) G=(N,\Sigma,P,S) G=(N,Σ,P,S)产生句子的过程可以由派生树表示。派生树又称语法树、分析树、推导树等。具体步骤如下:
- 对于 ∀ x ∈ N ∪ Σ \forall x \in N\cup \Sigma ∀x∈N∪Σ,给一个标记作为节点,令文法的初始符号 S S S作为数的根节点;
- 如果一个节点的标记为 A A A,并且它至少有一个除它自身以外的后裔,则 A ∈ N A\in N A∈N;
- 如果一个节点的标记为 A A A,它的 k ( k > 0 ) k(k\gt 0) k(k>0)个直接后裔节点按从左到右的词序一次标记为 A 1 , A 2 , ⋯ , A k A_1,A_2,\cdots,A_k A1,A2,⋯,Ak,则 A → A 1 A 2 ⋯ A k A\rightarrow A_1A_2\cdots A_k A→A1A2⋯Ak一定是 P P P中的一个产生式。
示例:
G
=
(
{
S
,
A
}
,
{
a
,
b
}
,
P
,
S
)
G=(\{S,A\},\{a,b\},P,S)
G=({S,A},{a,b},P,S),
P
{
S
→
b
A
,
A
→
b
A
A
,
A
→
a
}
P\{S\rightarrow bA,A\rightarrow bAA, A\rightarrow a\}
P{S→bA,A→bAA,A→a},则
G
G
G所产生的句子可以由下面的生成树表示:
S
⇒
b
A
⇒
b
b
A
A
⇒
b
b
a
A
⇒
b
b
a
a
S\Rightarrow bA \Rightarrow bbAA \Rightarrow bbaA \Rightarrow bbaa
S⇒bA⇒bbAA⇒bbaA⇒bbaa
![](https://i-blog.csdnimg.cn/blog_migrate/45ee3df625088d16d6827bddf3654bc8.png)
1.10 上下文无关文法的二义性
一个文法
G
G
G,如果存在某个句子有不止一棵派生树与之对应,那么称这个文法是二义的。
示例:给定文法
G
(
S
)
G(S)
G(S):
- S → P N P ∣ P P A u x N P S \rightarrow P\ \ NP|PP\ \ Aux \ \ NP S→P NP∣PP Aux NP
- P P → P N P PP\rightarrow P \ \ NP PP→P NP
- N P → N N ∣ N P A u x N P NP\rightarrow NN|NP\ \ Aux\ \ NP NP→NN∣NP Aux NP
- P → 关 于 P\rightarrow 关于 P→关于
- N N → 鲁 迅 ∣ 文 章 NN\rightarrow 鲁迅|文章 NN→鲁迅∣文章
- A u x → 的 Aux\rightarrow 的 Aux→的
短语”关于鲁迅的文章“的推导:
(1)
S
⇒
P
N
P
⇒
关
于
N
P
⇒
关
于
N
P
A
u
x
N
P
⇒
关
于
N
N
A
u
x
N
P
⇒
关
于
鲁
迅
A
u
x
N
P
⇒
关
于
鲁
迅
的
N
P
⇒
关
于
鲁
迅
的
N
N
⇒
关
于
鲁
迅
的
文
章
S\Rightarrow P\ \ NP\\ \Rightarrow 关于\ \ NP\\ \Rightarrow 关于\ \ NP\ \ Aux\ \ NP\\ \Rightarrow 关于\ \ NN\ \ Aux\ \ NP\\ \Rightarrow 关于鲁迅\ \ Aux\ \ NP\\ \Rightarrow关于鲁迅的\ \ NP\\ \Rightarrow 关于鲁迅的\ \ NN\\ \Rightarrow 关于鲁迅的文章
S⇒P NP⇒关于 NP⇒关于 NP Aux NP⇒关于 NN Aux NP⇒关于鲁迅 Aux NP⇒关于鲁迅的 NP⇒关于鲁迅的 NN⇒关于鲁迅的文章
(2)
S
⇒
P
P
A
u
x
N
P
⇒
P
N
P
A
u
x
N
P
⇒
关
于
N
P
A
u
x
N
P
⇒
关
于
N
N
A
u
x
N
P
⇒
关
于
鲁
迅
A
u
x
N
P
⇒
关
于
鲁
迅
的
N
P
⇒
关
于
鲁
迅
的
N
N
⇒
关
于
鲁
迅
的
文
章
S\Rightarrow PP\ \ Aux\ \ NP\\ \Rightarrow P\ \ NP\ \ Aux\ \ NP\\ \Rightarrow 关于\ \ NP\ \ Aux\ \ NP\\ \Rightarrow 关于\ \ NN\ \ Aux\ \ NP\\ \Rightarrow关于鲁迅\ \ Aux\ \ NP\\ \Rightarrow 关于鲁迅的\ \ NP\\ \Rightarrow 关于鲁迅的\ \ NN\\ \Rightarrow 关于鲁迅的文章
S⇒PP Aux NP⇒P NP Aux NP⇒关于 NP Aux NP⇒关于 NN Aux NP⇒关于鲁迅 Aux NP⇒关于鲁迅的 NP⇒关于鲁迅的 NN⇒关于鲁迅的文章
上面两种推导的方法对应的派生树如下:
![](https://i-blog.csdnimg.cn/blog_migrate/d1d8a7fc3c56e1bfb0c6ac5da7562b98.png)
参考资料:《统计自然语言处理》宗成庆