Michael Collins NLP Lecture 3
课程主页:http://www.cs.columbia.edu/~cs4705/
课程网盘地址:
链接:https://pan.baidu.com/s/1KijgO7yjL_MVCC9zKZ7Jdg
提取码:t1i3
这一讲主要介绍了标注问题和隐马尔可夫模型。
Chapter 2 标注问题和隐马尔可夫模型
2.1 介绍
在许多NLP问题中,我们希望对序列对进行建模。词性(POS)标注可能是此类问题中最早,最著名的例子。 在POS标注中,我们的目标是建立一个模型,其输入为句子,例如
其输出是标注序列
(这里我们使用D表示定冠词,N表示名词,V表示动词)。标签序列与输入句子的长度相同,因此为句子中的每个单词指定一个标签(在本例中D标注the,N标注dog,V标注saw,依此类推)。
我们将使用
我们使用
这种类型的问题,其任务是将句子
我们假设我们有一组训练样本,
2.2 两个标注问题的例子:词性标注和命名实体识别
我们首先讨论NLP中标注问题的两个重要例子,词性(POS)标注和命名实体识别。
图2.1给出了一个词性问题的例子。 问题的输入是一个句子。 输出是带标注的句子,其中句子中的每个单词都用其词性标注。 我们的目标是构建一个能够高精度地恢复句子POS标签的模型。 POS标注是NLP中最基本的问题之一,在许多自然语言问题中都很有用。
假设我们有一组训练样本:也就是说,我们有一组句子以及对应的正确POS标签序列。 作为一个示例,宾州树语料库包含大约
POS标注的主要挑战之一是歧义性。 英语中的许多单词可以采用几种可能的词性——对于许多其他语言也是如此。 图2.1中的例句有几个含糊不清的词。 例如,句子中的第一个词,profits,在这种情况下是名词,但也可以是动词(例如,in the company profits from its endeavors)。 单词topping在这个特定句子中的动词,但也可以是名词(例如the topping on the cake,)。 forecasts和results这两个词在句子中都是名词,但也可以是其他语境中的动词。 如果我们进一步观察,我们会看到该句子中的quarter是一个名词,但它也可以作为一个动词(只是使用频率低很多)。从这个例句我们可以看出,词性歧义性数量多的令人惊讶。
第二个挑战是存在罕见的单词,特别是在我们的训练样例中没有看到的单词。 即使训练数据有一百万个单词,新的句子中也会有很多单词在训练数据中没有出现过。 作为一个例子,诸如Mulally或topping之类的词语可能非常罕见,并且可能在我们的训练样例中未见过。 开发有效处理训练数据中未见过的单词的方法非常重要。
在恢复POS标签时,考虑两种不同的信息来源是有用的。 首先,单个单词对其词性具有统计偏好:例如,quarter可以是名词或动词,但更可能是名词。 其次,语境对单词的词性有重要影响。 特别是,一些POS标签序列比其他序列更可能。 如果我们考虑POS三元组,序列D N V将在英语中频繁出现(例如,the/D dog/N saw/V),而序列D V N则不太可能出现。
有时这两种来源的信息是冲突的:例如,在句子中
can的词性是名词——但是,也可以是一个语气动词,事实上它更常被看作英语中的一个语气动词。在这句话中,语境已经覆盖了可以成为动词而不是名词的倾向。
在本章的后面,我们将描述标注问题的模型,该模型在制定标注决策时同时考虑了局部和上下文两种信息来源。
第二个重要的示例标注问题是命名实体识别。 图2.2给出了一个例子。 对于这个问题,输入又是一个句子。 输出是标有实体边界的句子。 在此示例中,我们假设有三种可能的实体类型:PERSON,LOCATION和COMPANY。 本例中的输出表明波音公司是一家公司,华尔街是一个地方,艾伦·穆拉利是一个人。 认识到诸如人,地点和组织等实体有许多应用,并且命名实体识别已经在NLP领域中被广泛研究。
乍一看,命名实体问题与标注问题不同——在图2.2中,输出不包含句子中每个单词的标注。 但是,将命名实体识别映射到标注问题是很简单的。 基本方法如图2.3所示。 句子中的每个单词要么被标注为不是实体的一部分(标签NA),要么作为特定实体类型的开始(例如,标签SC对应Start Company),或作为特定实体类型的延续(例如,标签CC对应Continue Company)。
2.3 生成模型(Generative Models)和噪声信道模型(The Noisy Channel Model)
在本章中,我们将标注问题视为监督学习问题。 在本节中,我们描述了一种用于监督学习的重要模型:生成模型。 然后我们将继续描述一种特定类型的生成模型,隐马尔可夫模型,应用于标注问题。
监督学习问题的设置如下。 我们假设训练样本为
自然语言处理中的许多问题是监督学习问题。例如,在标注问题时,每个
定义函数
模型的参数根据训练样本来估计。 给定一个新的测试样本
因此,我们简单地将最可能的标签
通常用于机器学习和自然语言处理的生成模型是另一个选择。 在生成模型中,我们不是直接估计条件分布
模型
然后分别估计模型
是标签 的先验分布 是个给定标签 ,输出 的概率
我们将看到,在许多情况下以这种方式分解模型非常方便;例如,语音识别的经典方法基于这种类型的分解。
给定生成模型,我们可以使用贝叶斯法则来推导任何
其中
因此,联合概率模型非常通用,这是因为我们也可以推导出概率
我们在将联合模型应用于新的测试样本时直接使用贝叶斯法则。 给定输入
公式 2.3遵循贝叶斯法则。公式2.4成立因为分母
将联合概率分布分解为
综上所述:
我们的任务是学习从输入
映射到标签 的函数。 我们假设训练样本为在噪声信道(noisy channel)方法中,我们使用训练样本来估计模型
和 。 这些模型定义了一个联合(生成)模型给定一个新的测试样本
,我们预测标签找到输入
的输出 通常被称为解码问题。
2.4 生成标注模型
我们现在看看如何将生成模型应用于标注问题。 我们假设我们有一个有限的词汇表
定义 1 (生成标注模型)
假设一组有限的词汇表
1.对任意
2.此外,
因此,
给定生成标注模型,从句子
其中
引入生成标注模型后,有三个关键问题:
我们如何定义生成标注模型
?我们如何从训练样本中估计模型的参数?
对于任意输入
,我们如何有效地找到
下一节将介绍如何使用三元隐马尔可夫模型来回答这三个问题。
2.5 三元隐马尔可夫模型(Trigram HMMs)
在本节中,我们将介绍了一种重要的生成标注模型,三元隐马尔可夫模型,描述了如何从训练样本中估计模型的参数,并描述如何为任何句子找到最可能的标签序列。
2.5.1 三元隐马尔可夫模型的定义
我们现在将给出三元隐马尔可夫模型(Trigram HMMs)的正式定义。下一节将展示这种模型是如何推导的,并给出模型背后的一些直觉。
定义 2 (三元隐马尔可夫模型(Trigram HMMs))
一个三元隐马尔可夫模型由表示词汇表的有限集合
- 对任何满足
的三元组
该参数的值可以解释为在标签二元组
- 对任意
定义参数 的值可以解释为观测值 与状态 配对的概率。
将
然后我们定义任何
这里我们假设
举个例子,如果我们有
请注意,此模型形式是噪声通道模型。 如下乘积
是标签序列D N V STOP的先验概率,这里我们利用了二阶马尔可夫模型(三元模型),非常类似于我们在前一讲中得到的语言模型。如下乘积
可以解释为条件概率
2.5.2 三元隐马尔可夫模型的独立假设
我们现在描述如何导出三元隐马尔可夫模型:特别的,我们描述了在模型中做出的独立性假设。 考虑一对随机变量序列
长度
我们的任务是对于任何观察序列
其中每个
我们将发现定义一个额外的随机变量
隐马尔可夫模型的关键思想是以下定义:
其中
*是特殊的开始符号。
注意上式和我们对三元隐马尔可夫模型的定义的相似性。 在三元HMM中,我们假设联合概率如公式2.5所示,此外我们假设对于任何
以及对于任何
我们现在描述公式2.5是如何推导出来的,特别地,我们将关注模型中的独立假设。 首先,我们可以将联合概率写为
根据条件概率的定义,这一步是准确的。 因此,我们将联合概率分解为两个部分:第一个部分为选择标注序列
现在考虑看到标签序列
也就是说,我们假设序列
接下来,考虑给定标签序列,选择单词序列
由链式法则,上述推导的第一步是准确的。 第二步涉及独立性假设,即对于
因此,我们假设随机变量
考虑这个模型的一种有用的方法是考虑以下产生序列对
1.初始化
,以及2.从如下分布中生成
3.如果
,那么返回 。否则,从如下分布中产生令
,返回步骤2
2.5.3 估计三元隐马尔可夫模型的参数
假设我们有一些训练数据。 训练数据由一组样本构成,其中每个样本是句子
将
根据上述定义,最大似然估计是
以及
例如,我们将有估计
以及
因此,估计模型的参数很简单:我们只是从训练语料库中读取计数,然后如上所述计算最大似然估计。
在某些情况下,使用第一章描述的技术来平滑我们对
其中
这些估计的一个问题是,如果单词
2.5.4 对HMM解码:维特比算法
我们现在转向查找输入句子
其中
回想一下,我们在这个定义中假设
以及
解决该问题的蛮力算法为简单地枚举所有可能的标签序列
并假设可能的标签集是
在这种情况下,有
然而,对于较长的句子,这种方法的效率非常低下。 对于长度为
基本算法
相反,我们可以使用通常称为维特比算法的动态规划算法有效地找到最高概率对应的标签序列。算法的输入是句子
的序列
这只是公式2.8定义的
使用
以及
接下来,对于任何
因此,
我们现在发现可以按如下方式有效地计算所有
接下来,我们给出递归定义。
命题 1
对于任何
该定义是递归的,因为该定义使用了
我们怎样才能证明这种递归的合理性? 回想一下,
在公式2.12中我们只是关于
我们的第二个命题如下:
命题 2
上述命题从公式2.10可以直接推出。
图2.4展示了将这些想法放在一起的算法。 该算法将句子
该算法首先使用递归定义得到
上述算法一共要迭代
带有反向指针的维特比算法
我们刚刚描述的算法将句子
然而,我们真正想要的是返回最高概率序列的算法,即对任意
图2.5显示了实现此目标的修改算法。 关键步骤是在每一步存储反向指针
2.6 总结
我们在本章中已经介绍了许多重点,但最终结果相当简单:我们已经推导出一个从训练语料库中学习标注的完整方法,并将其应用于新的句子。 主要内容如下:
三元隐马尔可夫模型有参数
和 ,并且定义任何句子 与标签序列 (其中 ) 对应的联合概率给定一个训练语料库,我们可以从中得出计数,参数的最大似然估计是
以及
给定一个新的句子
,以及我们从训练语料库中估计的参数 和 ,我们可以使用图2.5中的算法(维特比算法)找到 的最高概率标签序列。
2.7 更进一步的材料
2.7.1 处理未知的单词
回忆一下,我们对HMM中概率的参数估计是
其中
该估计的一个主要问题是,对于训练数据中未见过的任何单词
因此,模型将在测试句子上完全失败。 特别的,对下式取
因为每个标签序列有同样的最大值
这是一个棘手的问题,因为无论我们的训练数据多么大,测试句中都不可避免地会出现训练数据中从未见过的单词。 例如,英语的词汇量非常大; 但在测试数据中总是遇到新单词。 以图2.2和2.3中使用的句子为例:
在这句话中,很可能在训练数据中没有看到Mulally这个词。 同样地,在英语中,topping是一个相对不常见的单词,在训练语料中可能没有看到过。
在本节中,我们将描述一个简单但非常有效的方法来解决这个问题。关键的想法是将训练数据中的低频词,以及在测试数据中看到但在训练中从未见过的词,映射到相对较小的一组伪单词,例如,我们可以将单词Mulally映射到伪单词initCap,将单词1990映射到伪单词fourDigitNum,依此类推。 这里伪单词initCap用于第一个字母是大写字母,其余字母是小写字母的任何单词。 伪单词fourDigitNum用于任何四位数字。
图2.6显示了一组伪单词的例子,它将HMM标注符应用于命名实体识别问题。 这组伪单词是手工选择的,并且是为了保留关于不同单词的拼写特征的一些有用信息而明确选择的:例如单词的大小写特征,以及不同数字类型的子分类(主要为了处理日期)。
一旦定义了从单词到伪单词的映射,我们进行如下操作。 将
将低频词映射到伪单词具有“关闭词汇表”的效果:通过这种映射,测试数据中的每个词在训练数据中至少会被看到一次(通常,我们可以假设每个伪单词在训练集中至少出现一次)。 因此,对于测试数据中的某些单词
该方法的缺点是在定义到伪词的映射时需要人为选择,并且该映射会根据所考虑的任务而变化(例如,不同的映射可以用于命名实体识别而不是POS标注)。 在后面的章节中,我们将看到基于对数线性模型的想法,可以说是低频率和未知单词问题的更清晰的解决方案。
本讲测验题
Coursera部分
1.
Jane为人名,所以选b(回顾课件的例子)
2.
利用乘法原理可得可能的标签序列数量为
3.
由转移概率参数可得,标签序列必然为
由发射参数可得,可能的序列有
4.
利用公式
此处
5.
只要将
修改为
所以选b
6.
由
可得,
7.
注意公式为
所以
8.
回顾公式为
因为
所以
9.
利用
可得
课内部分
1.
显然标注序列必然为
单词序列为
2.
part 1
初始化:
算法:
对
,- 对
,
- 对
返回
part 2
只要对每个
初始化:
算法:
对
,- 对
,
- 对
返回
3.
初始化:
算法:
对
,- 对
,
- 对
返回
4.
首先回顾维特比算法:
从训练数据的特点,前三个标签必然为(注意其余情形概率为
对于
第一个句子的
5.
考虑如下例子(来自参考解答):
最大似然估计为
因为