句法分析
句法分析是指对于输入的单词序列判断其构成是否合乎给定的语法,如果是,继续分析出句子的结构,常用树状数据结构表示。
基于规则的句法分析方法
基本思路是由人工组织语法规则,建立语法知识库,通过条件约束和检查来实现语法结构歧义的消除。
根据语法分析树形成方向的区别,分析方法可以划分成为三个类型:自顶向下的分析方法、自底向上的分析方法和两者相结合的分析方法。
前者的劣势在于穷尽式拓展非终结符节点、难以充分利用输入句子中词汇提供的信息知道推导过程中的弱点;
后者的劣势在于盲目规约当前节点寻找父节点,有时候误入歧途。
统计句法分析
语法驱动的分析方法
在句法分析过程中,统计数据用来对多种分析结果的排序或者是选择。
基于概率的上下文无关文法 PCFG
规则表示形式为:
A
→
α
p
A\to \alpha \quad p
A→αp
其中,A为非终结符,p为推导公式的概率。
三个基本假设:
- 概率计算的上下文无关性
子树的概率不依赖于子树控制范围之外的单词 - 祖先无关性
子树的概率不依赖于推导出子树的祖先节点 - 位置无关性
子树的概率不依赖于子树所管辖的单词在句子当中的位置
三个基本问题:
- 给定一个句子W和文法G,如何快速计算概率 P ( W ∣ G ) P(W|G) P(W∣G)
- 给定一个句子W和文法G,如何找到最可能的句子结构。用数学公式表示即为 a r g m a x t P ( t ∣ W , G ) argmax_t P(t|W,G) argmaxtP(t∣W,G)
- 给定一个句子W,如何调整文法G的概率参数,使得句子的概率最大。用数学公式表示即为 a r g m a x G P ( W ∣ G ) argmax_G P(W|G) argmaxGP(W∣G)
以下为三个基本问题的求解:
- 给定文法,求某个句子产生的概率
主要思路类似于HMM的求解,使用动态规划思想;也有两种算法,内向算法和外向算法,分别类似于自顶向下和自底向上,以下仅仅介绍内向算法。
核心定义为非终结符A推导出句子W中的子串 w i . . . w j w_i...w_j wi...wj的概率, α i j ( A ) \alpha_{ij}(A) αij(A)
核心状态转移公式为: α i i ( A ) = P ( A → w i ) \alpha_{ii}(A)=P(A\to w_i) αii(A)=P(A→wi)、 α i j ( A ) = ∑ B , C ∑ i ≤ k ≤ j P ( A → B C ) α i k ( B ) α ( k + 1 ) j ( C ) \alpha_{ij}(A)=\sum_{B,C}\sum_{i\leq k\leq j}P(A\to BC)\alpha_{ik}(B)\alpha_{(k+1)j}(C) αij(A)=∑B,C∑i≤k≤jP(A→BC)αik(B)α(k+1)j(C)
式子的结果为 α 1 n ( S ) \alpha_{1n}(S) α1n(S) - 给定句子和文法,求出句子的最佳结构
维特比算法
核心定义为维特比变量 γ i j ( A ) \gamma_{ij}(A) γij(A),由非终结符A推导出字串 w i . . . w j w_i...w_j wi...wj的最大概率。
核心状态转移公式为: γ i j = m a x B . C ∈ N , i ≤ k ≤ j P ( A → B C ) γ i k ( B ) γ k j ( C ) \gamma_{ij}=max_{B.C\in N,i\leq k\leq j}P(A\to BC)\gamma_{ik}(B)\gamma_{kj}(C) γij=maxB.C∈N,i≤k≤jP(A→BC)γik(B)γkj(C) - 文法的概率参数估计
EM迭代算法
上下文依存的概率模型
比起上下文无关文法来看,该概率模型引入了消歧所需的上下文信息,具体方式是将规则右部每个非终结符被拓展时候可能使用的产生式概率被记了下来。
以下为上下文依存的概率模型典型示例:
- 基于历史的文法及其改进。产生式的概率依赖于句子中当前分析点的整个分析历史。
- PCFG的改进。
- 引入结构描述信息
词汇化的概率模型
传统的句法分析模型当中,句法分析算法的输入是分析句子对应的词类的序列,而不是单词序列。而词汇化的概率模型,纳入了词汇本身对于结构消歧所产生的作用。
- 统计无歧义的附加成分附加于特定的名词或者是动词的概率,利用这些统计信息来对于句法分析中有歧义的附加成分进行消歧。
- 中心词驱动的概率模型。考虑跟随介词短语的名词短语的中心词的作用。规则中的每一个非终结符节点与核心词相联系,通过规则之间的概率体现核心词之间的依存关系。
- 词汇化的树链接语法。
- PCFG引入复杂特征。
数据驱动的分析方法
与语法驱动的分析方法相比,好处是不需要人工制定规则、耗费大量人力物力,也不需要准备很大规则的标注语料、进行大量的运算、以推导规则;坏处是句子的分析结果完全受到训练树库中标识模式的限制。
- APRIL句法分析器。
对于句子进行句法分析的时候,搜索与树库中标记的树最可能相似的结构。
相似的评判标准是基于“似然率”这一指标,是通过收集的统计信息建立的评分方法得到的,定义为局部子树似然率的联合概率。 - SPATTER分析器。
利用基于历史的语法结构,结合了词汇和结构关系数据。 - 面向数据的句法分析技术。
把经过标注的树库看作一个语法,从树库中抽取部分树并且构造一个部分树的数据库。
处理新的语言现象的时候,把部分树重新进行组合。
其他方法
引入语义信息、词义信息、有限状态自动机、基于转换的错误驱动的技术等等
句法分析系统评测
句法分析器的性能:
满意程度和效率
满意系统评测是测试句法分析器能否胜任某个特定的自然语言处理任务,主要任务是评测句法分析系统生成的树结构和手工标注的树结构之间的相似度。
效率指的是运行时间和参考系统执行时间之间的差别。
使用较为广泛的句法分析器评价方法是PARSEVAL:
精度:句法分析结果中正确的短语个数占分析结果中所有的短语个数的比例
召回率:句法分析结果中正确的短语个数占标准分析中全部短语个数的比例
交叉括号数:句法分析产生的分析树与标准分析中边界相交叉的成分个数
汉语句法结构特点
- 汉语分词
- 汉语词性兼类的普遍性和词性作用的灵活性导致的歧义消歧错误
- 汉语句子结构的特点
- 更少的使用功能词和形态变化。
- 英语短语绝大多数以左部为中心,汉语短语绝大多数以右部为中心。
- 汉语句子中不做主语的先行代词的情况普遍存在。
汉语作为表意型的语言,句子通常受到语义的牵引,一个句子是表达一个完整意义的语言单元,特点在长句中表现的非常明显;而不是一个完整的句法结构即为一个完整的句子。
层次化汉语长句结构分析
分析难点:
一是效率,二是子句边界界定。
子句边界界定错误常常会使得子句的句法关系破裂,导致整个长句的句法分析结果出问题。
基本思想:
借助汉语标点符号切分子句。
更具体来说,是切分子句之后,对于每个单元进行分别处理,得到各个部分的分析子树,最后将子树合并即可形成完整的句法分析树。
标点符号的作用:
- B.Jones 集成文法
构造通用标点规则集,将标点符号分成两类,连接标点和依附标点。前者表示并列成分之间的并列关系,后者认为标点依附于临近的句子成分。
缺点在于分析未涵盖标点语法的复杂句子时,有很多的句子得不到分析结果。 - E.Briscoe
将标点看作独立的句子成分
汉语中标点符号的分类:
分割标点,定义为分割开的句子单元,相互之间的句法关系是整体的。
汉语中冒号和分号为分割标点,逗号在发挥“复句中各个分句之间”的作用时充当的角色和分号类似。
但是由于逗号的作用比较复杂,可能会导致两个问题,一是第一级分析失败,二是多个逗号分开的短语构成并列短语结构时。
句法规则提取方法:
从树库中提取包含标点的PCFG句法规则,结合语言学分析得到的标点用法规则。
书名号、方括号等确定的句法规则,设置概率为1;其他句法规则,概率采用极大似然估计的方法求得。
HP分析算法:
- 长句分割——对于包含分割标点的长句进行分割。
使用逗号、分号和冒号三类分割标记把长句分割成为一系列的子句片段。 - 第一级分析——对于分割后的各个子句分别进行句法分析,得到各个最大概率的子树。
输入每个子句的线性词性序列,经线图分析算法分析之后,利用维特比算法,求得每个子句最大概率的分析树。 - 子树合并。
针对并列的短语,包括探测和合并两个步骤。
探测,检验逗号分割的子句结构是否完全相同;要是完全相同,那么认为是并列的短语;
合并,子树粘结操作,用数学符号表示如下:
Z [ . . . Y X ] [ , X ] + = > Z [ . . . Y X [ X [ , X ] + ] ] Z[...Y X][,X]^+=>Z[...YX[X[,X]^+]] Z[...YX][,X]+=>Z[...YX[X[,X]+]] - 第二级分析——第二遍分析子句之间的结构关系,获得整句的最大概率分析树。
浅层句法结构分析
核心思想:
只识别句子中的某些结构相对简单的独立成分,使得句法分析的任务得到了简化。
与之相对的完全句法结构分析要求得到完整的句法分析树。
任务划分:
- 语块的识别与分析
- 语块之间的依存关系分析
由于名词短语在句子结构中占到了举足轻重的位置,因此,目前的基本短语识别研究主要是集中在基本名词短语的识别分析。
基本名词短语识别问题
定义:
简单的、非嵌套的名词短语,称之为Base NP。
特点包括,短语的中心词为名词;短语中不含与其他子项短语。
base NP的识别问题,可以认为是一个分类问题。
表示法:
- 括号分割法
- IOB标注办法,B表示当前词语位于base NP的开端,I表示内,O表示外。
- IOE表示法
- Start/End表示法
基于支持向量机的base NP识别方法
采用B-VP和I-VP作为base NP词性标注,分别代表为VP的首词或者是内部词。
此时base NP标注问题可以看作是多分类问题。
通过配对策略或者是一比其余策略可以将多分类问题转化为是二分类问题,此时可以通过SVM进行分类求解。
将词的前后各两个词位置上的词以及他们的词性标记,以及前边两个词的base NP标记作为共同选取的特征。
SVM算法在处理大规模数据时候具有很好的一致性、收敛性和推广性能。但是无法融入短语内部结构特点的规则属性,而且训练时间比较长。
基于WINNOW的base NP识别方法
分为训练阶段和测试开发两个过程。
训练阶段主要是确定base NP的权重,而测试开发阶段运用特征的特征的权重来确认最后的base NP标识。
测试开发阶段的公式推导还没有看懂
基于条件场的base NP识别方法
与其他模型的比较
常见的统计模型包括以HMM为代表的生成模型和以MEMM为代表的区分模型。
前者隐含各个观测值是独立的条件,很难达到;后者会出现标识偏置问题,不能有效的利用整个序列内部的信息和外部观测信息。
而条件随机场解决了以上两个问题。
条件随机场CRF的建立
- 定义特征函数集合,每一个特征函数都以整个句子s、当前位置i、当前位置和之前位置的标签作为输入,可以对于标注序列进行评分。
- 为每个特征函数赋予权重,针对每一个标注序列,对所有的特征函数进行加权求和。也可以将其转化为概率值,概率值最大的即为最可能的标注序列。
更详尽的解释参见以下链接(写的真心详细)!
概率图模型学习笔记
依存句法理论与依存句法分析
依存依法理论
用词与词之间的依存关系来描述语言结构的框架称之为是依存语法。
“依存”指的是词与词之间的支配与被支配之间的关系,这种关系是有方向的;处于支配地位的成分称之为支配者,处于被支配地方的成分称之为从属者。
可以使用有向图和树来描述依存句法结构。
最大的优势是直接按照词语之间的依存关系进行工作,几乎不使用词性和短语类的句法语义范畴。
依存句法分析
生成式的分析方法
基本思想
生成式的句法分析采用联合概率模型生成一系列的依存句法树并且赋予其概率分值,采用相关算法找到概率打分最高的分析结果作为最后输出。
优缺点分析
使用方便,因为参数训练只在训练集中找相关成分的计数。
在进行概率乘积分解时作了近似的假设和估计。
采用全局搜索,算法复杂度较高,准确率也较高。
判别式的分析方法
采用条件概率模型,其代表性工作是最大跨度树。
最大跨度树模型就是将最佳句法分析结果转换为了寻找待分析句子最高打分的句法依存树问题。
句法树的打分定义为树中各条边打分的加权和,用数学公式表示为
s
(
x
,
y
)
=
∑
(
i
,
j
)
∈
y
w
.
F
(
i
,
j
)
s(x,y)=\sum_{(i,j)\in y}w.F(i,j)
s(x,y)=∑(i,j)∈yw.F(i,j)
具体训练和求解暂时不展开。
决策式的分析方法
决策式的含义是以特定的方向逐步取一个分析的词,为每个分析的词即时产生一个单一的分析结果,直到词序列的最后一个词。
很明显这本质上是一种贪婪决策的方法,所以优势很明显,时间复杂度为线性、效率高、算法直观,并且特征选取灵活多样;缺点也很明显,难以利用全局的信息,导致在处理长距离依存问题上没有优势,分析准确率低。
类似于编译器中的分析算法。
基于约束满足的分析算法
采用形式化语言表达的描述性约束来表达,如何才是一棵合理的依存树。
根据已经规定好的约束进行裁剪,把不符合约束的分析去掉,从而留下来一棵合法的依存树。
补充
维特比算法
典型的动态规划算法,常用来寻找最可能产生观测事件序列的维特比路径(状态路径),用来求解HMM的基本问题。
目标:求解从开始状态到k+1层最大概率发生的路径
符号:S 开始符号;P(A,B) 从A到B的最大概率; x i j x_{ij} xij指的是第i层的第j个状态; n k n_k nk指的是第k层的状态数
状态转移公式: P ( S , x ( k + 1 ) i ) = m a x 1 ≤ j ≤ n k P ( S , x k j ) P ( x k j , x ( k + 1 ) i ) P(S,x_{(k+1)i})=max_{1\leq j\leq n_k}P(S,x_{kj})P(x_{kj},x_{(k+1)i}) P(S,x(k+1)i)=max1≤j≤nkP(S,xkj)P(xkj,x(k+1)i)
时间复杂度:
由上述公式可以知道,若想求第k+1层状态的最大概率路径,向上迭代一层需要的时间复杂度是
O
(
n
k
∗
n
k
+
1
)
O(n_k*n_{k+1})
O(nk∗nk+1)
因此,设一共有N层,隐含马尔可夫链中结点最多的状态有D个结点,那么算法的时间复杂度为
O
(
N
∗
D
2
)
O(N*D^2 )
O(N∗D2)
EM算法
EM算法是从不完全数据或有数据丢失的数据集(存在隐含变量)中求解概率模型参数的最大似然估计方法。
所谓隐变量,经常代表表面输出结果之后对应的状态或者是类别;举例说硬币的正反面是表面输出结果,而硬币本身的类别就是之下的状态。
全称Expectation Maximization Algorithm,译作最大期望化算法或期望最大算法,它是一种迭代算法。
粗略的求解步骤如下:
- 为概率模型参数赋初始值。
- 利用模型求解隐变量的概率分布。
- 将获得的隐变量作为已知,重新估计概率模型参数直到收敛。
以上理解主要参考至:
如何感性的理解EM算法?
这篇文章主要是从理解层面上来写的。
至于EM算法的推导,可以参考以下这篇文章:
EM算法-数学原理及其证明
等以后有机会自己整理一遍。
Winnow算法
WINNOW算法是解决二分问题的错误驱动的机器学习算法;相当于训练一个正例和负例之间的边界;优势在于可以从大量不相关的特征中快速学习。
训练步骤如下:
- 初始化权重值 w 1 . . . w n w_1...w_n w1...wn以及阈值 θ \theta θ
- 对于给定的特征向量x,若 w 1 x 1 . . . w n x n > θ w_1x_1...w_nx_n>\theta w1x1...wnxn>θ,那么判断为正例,否则,判断为负例。
- 若是正例判断为负例,那么将权值扩大;若是负例判断为整理,那么将权值缩小。一般采用的数学计算公式为 w j = w j e x p ( η x j i y i ) w_j=w_jexp(\eta x_j^iy^i) wj=wjexp(ηxjiyi)
- 转到步骤2
生成式、判别式和决策式的区分
生成式和判别式之间的区别直观上来说,前者是使用联合概率分布,主要反应同类之间的相似性;后者是使用条件概率分布,主要反映不同类别之间的区分度。
在操作上,判别式只有一个模型,输入样本,直接就能输出标签结果;生成式有多个模型,将样本输入判断哪个结果更好,最后比较其结果,选择最好的作为label。