IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 第3章 形式语言与自动机 -> 正文阅读

[人工智能]第3章 形式语言与自动机

形式语言

语言概述

语言描述(该语言是什么样的,句子是否属于该语言)的三种途径:

  1. 穷举法(把语言中的所有句子都枚举出来)——只适合句子数目有限的语言;
  2. 文法描述(语言中的每个句子用严格定义的规则来构造)——生成语言中合格的句子;
  3. 自动机(对输入的句子进行合法性检验) ——区别哪些是语言中的句子,哪些不是语言中的句子。

文法描述:给予语言中的句子以结构,各成分之间的结构关系清楚、明了。运用文法描述判断句子是否属于该语言较为困难。

自动机:机械刻画对输入字符串的识别过程,结构关系不清楚。判断句子是否属于该语言较为简单。

形式语言是用来精确地描述语言极其结构的手段。

形式语法(文法)的定义

形式语法的定义:
形式语法是一个4元组 G = ( N , Σ , P , S ) G=(N,\Sigma,P,S) G=N,Σ,P,S
其中,N是非终结符的有限集合(变量集/句法种类集);
Σ \Sigma Σ是终结符的有限集合( N ∩ Σ = ? N\cap\Sigma=\oslash NΣ=?, V = N ∪ Σ V=N\cup\Sigma V=NΣ);
P是一组重写规则的有限集合( P = { α → β } P=\{\alpha\to\beta\} P={αβ},其中 α , β \alpha,\beta α,β都是V中元素构成的串,但 α \alpha α中至少应该含有一个非终结符号);
S ∈ N S\in N SN,成为句子符或初始符。

推导的定义:
设G是一个文法,在V上定义 ? G \Rightarrow_G ?G?(直接派生/推导)如下:如果 α β γ \alpha\beta\gamma αβγ是V中的符号串,且 β → δ \beta\to\delta βδ是P的产生式,那么 α β γ ? G α δ γ \alpha\beta\gamma\Rightarrow_G\alpha\delta\gamma αβγ?G?αδγ

推导是一个变化的操作。

需要补充的是:
? G + \Rightarrow_G^+ ?G+?(非平凡方式派生):直接派生的传递闭包,V上的符号串 ? i \epsilon_i ?i? ? i + 1 \epsilon_{i+1} ?i+1? n ( n ≥ 1 ) n(n\ge1) n(n1)步派生。

? G ? \Rightarrow_G^* ?G??(派生):直接派生的自反或传递闭包,V上的符号串 ? i \epsilon_i ?i? ? i + 1 \epsilon_{i+1} ?i+1? n ( n ≥ 0 ) n(n\ge0) n(n0)步派生。

如果明确某个推导是给定文法G产生的,那么可以省略G。

派生或非平凡方式派生中的每一个直接派生中只改写最左侧的非终结符号,称为“最左推导”,反之称为“最右推导”/“规范推导”。

举例:

请添加图片描述

句子的定义:
文法G的句子形式通过以下递归方式定义:
(1)S是一个句子形式;
(2)如果 γ β α \gamma\beta\alpha γβα是一个句子形式,且 β → δ \beta\to\delta βδ是P中的产生式,那么 γ δ α \gamma\delta\alpha γδα也是一个句子形式。

G生成的句子:不含非终结符的句子形式;

G识别的语言:G生成的句子集合,记为 L ( G ) = { x ∣ x ∈ Σ , S ? G ? x } L(G)=\{x|x\in\Sigma,S\Rightarrow_G^*x\} L(G)={xxΣ,S?G??x}

在这里插入图片描述
每一个符号都没有产生式。

形式语法的类型

3型文法:正则文法;2型文法:上下文无关文法;1型文法:上下文相关文法;0型文法:无约束文法。

正则文法

如果文法G的规则集P中所有则均满足如下形式: A → B x A\to Bx ABx,其中 A , B ∈ N , x ∈ Σ A,B\in N,x\in\Sigma A,BN,xΣ,则称该文法为正则文法。

如果非终结符号出现在最左边,称为左线性正则文法,反之,称为右线性正则文法。

请添加图片描述

上下文无关文法

如果文法G的规则集P中所有规则均满足如下形式: A → a A\to a Aa,其中, A ∈ N , α ∈ V ? A\in N,\alpha\in V^* AN,αV?,则称文法G为上下文无关文法(CFG context- free gramma)。

请添加图片描述

2型文法比3型文法少了一层限制,可以看到其规则右端的格式没有约束,那么规则左端可以改写为任何形式。

上下文有关文法

如果文法G的规则集P中所有规则满足如下形式: α A β → α γ β \alpha A\beta\to \alpha\gamma\beta αAβαγβ,其中 A ∈ N A\in N AN α , β , γ ∈ V ? \alpha,\beta,\gamma\in V^* α,β,γV?,且 γ \gamma γ至少包含一个字符,则称G为上下文有关文法(CSG context- sensitive grammar)。

字符串 α A β \alpha A\beta αAβ中的A被改写为 γ \gamma γ时需要有上下文语境 α , β \alpha,\beta α,β

如果上下文语境为空字符串,则1型文法转变为了2型文法。在上下文无关文法中,规则左侧不一定只是一个非终结符。
请添加图片描述

无约束文法

如果文法G的规则集P中所有规则满足如下形式: α → β \alpha\to\beta αβ,其中 α ∈ V + , β ∈ V ? \alpha\in V^+,\beta\in V^* αV+,βV?,则称G为无约束文法。

从0型文法到3型文法,约束越来越多,所识别的语言集合 L ( G ) L(G) L(G)也越来越小。

CFG识别句子的派生树表示

G所识别的句子的派生树的构造步骤(构成):

  1. 对于 ? x ∈ N ∪ Σ \forall x\in N\cup\Sigma ?xNΣ,给定一个标记作为结点,令文法的初始符号S作为树的根节点。
  2. 如果一个结点标记为A,且至少有一个除它自身以外的后裔,那么 A ∈ N A\in N AN
  3. 如果一个结点标记为A,它的 k ( k > 0 ) k(k\gt 0) k(k>0)个直接后裔结点按从左到右的顺序依次标记为 A 1 , A 2 , . . . , A k A_1,A_2,...,A_k A1?,A2?,...,Ak?,则 A → A 1 , . . . , A k A\to A_1,...,A_k AA1?,...,Ak?一定是P中的一个产生式。

请添加图片描述

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

请添加图片描述

自动机理论

有限自动机

确定的有限自动机(definite automata DFA)

DFA M是一个五元组: M = ( Σ , Q , δ , q 0 , F ) M=(\Sigma,Q,\delta,q_0,F) M=(Σ,Q,δ,q0?,F)
Σ \Sigma Σ是输入符号的有穷集合,
Q是状态的有限集合,
q 0 ∈ Q q_0\in Q q0?Q是初始状态,
F是终止状态集合, F ? Q F\subseteq Q F?Q,
δ \delta δ Q Q Q Σ \Sigma Σ的直积 Q × Σ Q\times\Sigma Q×Σ到Q(下一个状态)的映射,它支配着有限状态控制的行为,有时也称为转移函数。
(直积: X × Y = { ( x , y ) ∣ x ∈ A ∧ y ∈ B } X\times Y=\{(x,y)|x\in A\land y\in B\} X×Y={(x,y)xAyB})

DFA是状态、映射、输入的结合体,文法描述是符号、规则的结合体。

DFA接受的语言:如果一个句子x对于有限自动机M有 δ ( q 0 , x ) = p , p ∈ F \delta(q_0,x)=p,p\in F δ(q0?,x)=p,pF,那么称句子x被M接受。被M接受的句子的全集称为由M定义的语言,或称M所接受的语言,记为 T ( M ) = { x ∣ δ ( q 0 , x ) ∈ F } T(M)=\{x|\delta(q_0,x)\in F\} T(M)={xδ(q0?,x)F}

状态变换图:
请添加图片描述

即,存在一系列映射,使得输入句子x能与 q 0 q_0 q0? 在最后映射到F中。

请添加图片描述
请添加图片描述

不确定的有限自动机(non- definite automata NFA)

DFA M是一个五元组: M = ( Σ , Q , δ , q 0 , F ) M=(\Sigma,Q,\delta,q_0,F) M=(Σ,Q,δ,q0?,F)
Σ \Sigma Σ是输入符号的有穷集合,
Q是状态的有限集合,
q 0 ∈ Q q_0\in Q q0?Q是初始状态,
F是终止状态集合, F ? Q F\subseteq Q F?Q,
δ \delta δ Q Q Q Σ \Sigma Σ的直积 Q × Σ Q\times\Sigma Q×Σ到Q的幂集 2 Q 2^Q 2Q映射。(幂集:原集合中所有的子集)

NFA与DFA的区别是:在NFA中 δ ( q , a ) \delta(q,a) δ(q,a)是一个状态集合,而在DFA中 δ ( q , a ) \delta(q,a) δ(q,a)是一个状态。

也就是说,NFA M在状态q时,接受输入符号a时,M可以选择状态集合中的任何一个状态作为下一个状态,并将输入头向右边移动一个字符的位置。

NFA接受的语言:
如果存在一个状态p,有 p ∈ δ ( q 0 , x ) p\in\delta(q_0,x) pδ(q0?,x) p ∈ F p\in F pF,则称句子x被NFA M所接受。被NFA M接受的所有句子的集合称为NFA M定义的语言,记作 T ( M ) = { x ∣ p ∈ δ ( q 0 , x ) 且 p ∈ F } T(M)=\{x|p\in\delta(q_0,x)且p\in F\} T(M)={xpδ(q0?,x)pF}

定理:设L是被NFA所接受的语言,则存在一个DFA,它能够接受L。

因为该定理,所以无需区分NFA和DFA,统称为有限自动机(FA)

正则文法与自动机的关系

定理:若 G = ( V N , V T , P , S ) G=(V_N,V_T,P,S) G=(VN?,VT?,P,S)是一个正则文法,则存在一个 F A ? M = ( Σ , Q , δ , q 0 , F ) FA~M=(\Sigma,Q,\delta,q_0,F) FA?M=Σ,Q,δ,q0?,F使得 T ( M ) = L ( G ) T(M)=L(G) T(M)=L(G)

定理:若 M = ( Σ , Q , δ , q 0 , F M=(\Sigma,Q,\delta,q_0,F M=Σ,Q,δ,q0?,F是一个有限自动机,则存在正则文法 G = ( V N , V T , P , S ) G=(V_N,V_T,P,S) G=(VN?,VT?,P,S),使得 L ( G ) = T ( M ) L(G)=T(M) L(G)=T(M)

其他自动机

图灵机:

  1. 与0型文法等价;
  2. 与FA的区别在于:图灵机可以通过其读/写头改变输入带的字符。

线性带限自动机:

  1. 与1型文法等价;
  2. 是一个确定的单带图灵机。

自动机在自然语言处理中的应用

单词拼写检查

找到和输入最接近的词汇。

编辑距离

Edit distance:两个字符串之间的编辑距离等于使一个字符串变成另外一个字符串而进行的插入、删除、替换或相邻字符交换位置而进行操作的最少次数。

其计算方式如下:
在这里插入图片描述

FSM的应用方式

F A ?? R = ( Q , A , δ , q 0 , F ) FA~~R=(Q,A,\delta,q_0,F) FA??R=(Q,A,δ,q0?,F),如果 L ? A ? L\subseteq A^* L?A?表示有限状态机R定义的语言, t > 0 t\gt0 t>0为编辑距离的阈值,那么一个字符串 X [ m ] ? L X[m]\notin L X[m]/?L能够被R识别的条件为存在非空集合:
C = { Y [ n ] ∣ Y [ n ] ∈ L , e d ( X [ m ] , Y [ n ] ) ≤ t } C=\{Y[n]|Y[n]\in L,ed(X[m],Y[n])\le t\} C={Y[n]Y[n]L,ed(X[m],Y[n])t}

FA/FSM(有限状态机)可以视为有向图(键树/数字查找树):

请添加图片描述
对一个输入串进行拼写检查的过程是在给定阈值内,寻找所有与输入串编辑距离小于t的路径。

FSM剪枝

剪除距离:请添加图片描述

c u t e d ( X [ m ] , Y [ n ] ) = min ? l ≤ i ≤ u { e d ( X [ i ] , Y [ n ] ) } cuted(X[m],Y[n])=\min_{l\le i\le u}\{ed(X[i],Y[n])\} cuted(X[m],Y[n])=liumin?{ed(X[i],Y[n])}
其中, l = max ? ( 1 , n ? t ) , u = min ? ( m , n + t ) l=\max(1,n-t),u=\min(m,n+t) l=max(1,n?t),u=min(m,n+t)
函数 c u t e d ( ? ) cuted(\cdot) cuted(?)从X字符串中截取长度范围在l~u之间的字符串,并计算这些字符串与Y的编辑距离,取最小距离。
请添加图片描述

局部候选字符串Y由自动机从初始状态出发的一些连续弧上所对应的标记符号构成。

深度优先搜索:

  1. 每当扩展Y时,需要检测X、Y之间的cuted是否在门限值t所限定的范围内;
  2. 如果剪除距离超过了t值,就要放弃最后一步转移弧,回溯到上一状态(同时缩短候选串),尝试其他的候选串;
  3. 如果找不到其他可能的转移弧,开始递归地执行回溯操作。

如果没有违背剪除距离的限制且达到Y的末端时,编辑距离也满足条件,那么Y就是X的一个有效的候选拼写方式。

单词形态分析

FST(有限状态转换机,finite state transducer):与FSM相比,FST完成状态转移的同时产生一个输出,FSM只是状态的转移,不产生任何输出。

该应用举例如下:形容词heavy在英文句子中可能以三种不同的形式出现:原型、比较级和最高级。对于变形后的heavy,为了正确分析出其原型,可以通过构造FST的方法实现。

请添加图片描述
请添加图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-10-20 12:29:39  更:2021-10-20 12:30:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 8:23:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码