《自然语言处理综论》学习笔记

ZhuYuanxiang 2019-06-06 00:00:00
Categories: Tags:

计算词汇语义学

语境的相似性可以用于计算语义的相似性。

计算词汇语义学(computational lexical semantics):词义计算。

  1. 词义排歧(word sense disambiguation,WSD):检查语境中的词例,并决定每个单词在该语境下的义项。
  2. 词语相似性(word similarity)计算以及词语之间的关系(上位词、下位词、部分词)。依靠语料相似性以及依靠类似 WordNet 的结构化资源。
  3. 语义角色标注(semantic role labeling),也叫格角色指派(case role assignment)或者题旨角色指派(thematic roles assignment)。从句法分析中得到的特征去指派语义角色。

词义排歧(WSD):综述

两种不同的 WSD 任务:

词汇采样(lexical
sample):一小组预先定好的词语被选择出来,同时每一个词语在特定词典中的目标语义集合也被选择出来。因为词的集合和词义的集合都很小,可以使用监督机器学习算法来处理。先手工标注选出的词语,然后训练分类系统,接着就可以标注没有手工处理的词语。

全词排歧(all-word
disambiguation):系统输入为整个文本,以及对每个单词都标注了对应词义目录的词典,系统对文本中每一个词都需要排歧。问题是标记集很大,因为数据稀疏问题无法构建大量可用的训练数据,。

有监督词义排歧

使用监督学习方法解决词义排歧的问题:从文本中抽取对于预测特定词义有帮助的特征,然后利用这些特征训练一个分类器用来给词语指定一个正确的词义,训练的结果是使用分类器给文本中未标注词语指定词义标签。

对于词汇采样任务,面向单个词语的标注语料库。语料包含目标词语的上下文句子及该目标词语的正确语义标注。

对于全词排歧任务,使用 semantic
concordance 语料,语料中每一个句子中的开放性词语都标注有来自特定字典或者同义词词典的正确语义。

监督学习的特征抽取

监督训练需要抽取对词义具有预测性质的特征。特征向量(feature
vector)由数值构成,编码了语言学信息,是机器学习算法的输入。从邻近的上下文中可以抽取两类特征:搭配特征和词袋特征。词义排歧方法同时使用了搭配特征和词袋特征。

搭配特征(collocational
feature)是指与目标词语有特定位置关系的词语或短语,包含了目标词语左右特定位置的信息。从这些上下文词语中抽取的典型特征包括:单词本身、单词的原形以及该单词的词性。这些特征能够有效地包含局部词汇和语法信息,而这些信息通常能准确地区分给定的词义。

词袋特征(bag-of-words
feature)包含了邻近词语的词袋的信息。词袋是词语的无序集合,忽略了词语的位置信息。采用将目标词语的上下文表示为特征向量。词汇集从训练集中预先选择词语的有用子集。目标词语附近的上下文区域是以目标词语为中心的对称的固定大小的窗口。词袋特征能够有效地捕捉目标词语所在的上下文的一般主题信息,很容易地确定属于特定领域词语的意思。

朴素贝叶斯分类器 和 决策表分类器

相互贝叶斯分类器是基于特征独立假设(朴素地(naively)假设各特征之间相互独立),即给定词义特征之间是条件独立的。使用朴素贝叶斯分类器进行词义排歧时通常利用拉普拉斯平滑方法将概率平滑。

决策表分类器(decision list classifiers):产生了一系列选择条件。

WSD 评价:方法、基准线、上限

评价 WSD 这样的组件技术是很复杂的,目标是对 WSD 在端到端应用中的效果评价。

评价嵌入到端到端应用的组件 NLP 任务称为外在评价(extrinsic
evaluation)、基于任务(task-based)的评价、端到端(end-to-end)的评价或体内(in
vivo)评价。

由于外在评价非常困难,并且对应用来说非常耗时,不易推广,因此 WSD 系统通过采用内在评价。内在(intrinsic)评价或体外(in
vitro)评价。将 WSD 组件看成一个独立于任何给定应用的单独系统。系统通过其精确匹配词义准确率(sense
accuracy)来评价,即在测试集中系统标注与人工标注一致的词义所占的百分比。

SENSEVAL 已经对语义评价进行了标准化。提供了共享任务以及该任务的训练和测试语料,并建立了多种语言下的词汇采样和全词排歧任务的语义清单(sense
inventories)。

基准线(baseline)标准、上限(ceiling)标准。

WSD:字典方法和同义词库方法

使用字典或同义词库的非直接监督方法

Lesk 算法

简化的 Lesk 算法:计算词义的字典注释或定义和目标词语邻近词语的次,然后把次最大的词义赋给目标词语。

Corpus
Lesk 算法:不仅仅计算重叠词语的个数,还为每个重叠词语赋予一个权重。权重是逆文档频率(inverse
document frequency,IDF)。

Lesk 算法与监督方法的结合可以通过添加类似 Lesk 词袋特征的方式实现。

选择限制和选择优先度

选择限制(Ref:Ch19)可以作为词义排歧的知识资源。谓词通过排除那些违背其某一选择限制的词义来判断歧义词语的正确意思。由于硬性限制导致合法的句子与选择限制的冲突,因此选择限制常常作为参考条件而不是必要条件。

在词义排歧方面,选择优先性的 Resnik 模型和其他无监督方法一样好,但是不如 Lesk 或有监督方法。

选择优先度(selectional preference
strength):谓词提供了关于其变量语义类别的大体信息量。可以定义为两个分布之间的信息差异:期望语义类别 P(c) 的分布(直接宾语落入到类别 c 的可能性)和给定特定怕期望语义类别 P(c|v) 的分布(动词 v 的直接宾主落入到类别 c 的可能性)。这两个分布的差异越大,动词提供关于其宾语的信息就越多。两个分布之间的差异可以用相对熵(relative
entropy)或者 Kullback-Leiber 散度距离来衡量。

特定类和动词的选择关联性(selectional
association)作为该类别对动词一般选择优先度的相对贡献,是一个概率度量,用来度量谓词和支配谓词变元的类别的关联程序。

半监督 WSD(最小化监督的 WSD):自举法

WSD 的有监督方法和基于字典的方法都需要大量的手工构建的资源,有监督方法需要监督训练集,基于字典的方法需要大规模的词典。

自举(bootstrapping)算法,也被称为半监督学习(semi-supervised
learning)或最低限度的监督学习(minimally supervised
learning),只需要非常小的人工标注训练集。

Yarowsky 算法的目标是为特定目标词语建立一个分类器(在词汇采样任务中)。具备是由小的种子集合构造较大训练集的能力。需要一个准确的初始种子集合以及一个好的置信度衡量,从而能够选出好的新例子添加到训练集中。产生初始种子的方法是手工标注一部分实例和启发式地选择正确的种子。

一个搭配一个词义(one sense per
collocation)假设:和目标词义有很强联系的特定词语或短语不可能与其他词义共现。

一段话语一个词义(one sense per
discourse)假设:一个特定词语在一段正文或一篇文章中多次出现,那么通常具有相同的意思。这个假设的有效性依赖于语义的粒度,大部分情况下语义粒度越粗越有效。

词语相似度:语义字典方法

词语相似度(word similarity)或语义距离(semantic
distance)度量来代替同义关系。两个词拥有的相同意思特征越多或两个词是近义词,则两个词的相似度就越高或语义距离越近。

度量词语相似度的两种算法:

词语相似度(word similarity)和词语相关度(word relatedness)的差别:

词语相似度是词语相关度的子情况。因此本节中算法统称为相似度度量。

基于语义字典的相似度评价(Evaluating Thesaurus-Based Similarity)

词语相似度:分布方法

分布(distributional)方法直接为 NLP 任务提供词语相关性度量,还可以用来自动生成语义字典(automatic
thesaurus
generation),以及自动地给在线语义字典添加新同义关系和其他关系(如:下位关系、部件关系等)。

一个词语的意思与它周围词语的分布相关(由词之伴可知其意!)

分布相似度度量方法需要确定三个参数:

定义词语的共现向量

使用和目标词语具有某种语法关系(grammatical relation)或依存关系(dependency
relation)的词语。

实体的意义以及实体间语法关系的意义,和这些实体相对于其他实体的结合限制相关。

度量与上下文的联系

目标词语和给定特征之间的权重(weights)或关联度(association)。

点间互信息(Pointwise Mutual
Information,PMI)用来度量两个事件的共现频数与假设二者互相独立时它们共现出现的期望频数的比值。

定义两个向量之间的相似度(向量计算)

两个向量之间的距离的度量方法:

相似度计算:点乘(dot product)或者内积(inner product)。

向量长度归一化。

Jaccard 度量方法,也称为 Tanimoto 度量方法,或者最小∕最大度量方法。

分布相似度度量方法:KL 散度距离或相对熵。

Jenson-Shannon 散度距离。

评价分布式词语相似度

分布式算法使用内在方式评价:与一个标准的语义字典进行比较。使用 t 检验对关联度进行加权,使用 Dice 或 Jaccard 算法去度量向量相似度。

词语关系:下位关系及其他关系

词语语义关系:相似关系、下位关系、上位关系、反义关系、部件关系。

自动学习语义关系利用词汇——句法模式(lexico-syntactic
pattern)。用来推断下位关系的五种模式:图 20.14(P547)

在关系模式挖掘中发现新模式的方法有:

自举法:在大规模语料中具备某种关系的词语能够同时出现在这种关系的多种不同模式中。因此,仅仅需要从一小部分准确的模式去获取具备给定关系的词语集合。然后,这些词语可以用来在大规模语料中查询以某种依赖关系包含这些词语的句子;新的模式可以从这些新的句子中抽取出来。这个过程可以一直重复直到模式集合足够大。使用自举法时需要避免语义漂移。(Ref:Ch22)

大规模的词汇资源(如 WordNet)作为训练信息的来源,每一对上位∕下位关系提供关系中词语的某些信息,然后训练分类器用来寻找具备这种关系的词语。

选择未知词语在一个完整层次结构中的插入位置。

类似命名实体识别的标注任务。使用 WordNet 中的广义分类标签,抽取特征,使感知器分类器。

寻找部分关系(meronyms)很困难,因为表示该关系的词汇——句法模式极具歧义。

学习词语之间的关系是字典归纳(thesaurus
induction)任务的重要组成部分。在字典归纳中,词语间的相似度估计、上下位关系和其他关系被整合起来构造成一个完全的知识本体或者字典。

两阶段字典归纳算法:

自底向上的聚类(clustering)算法,将语义上类似的词语聚集到不带标签的词语层次结构中;

给定不带标签的层次结构,使用基于模式的下位关系分类器去为每一类中的词语指定上位关系标签。

语义角色标注

语义角色标注(semantic role labeling),也称为主题角色标注(thematic role
labeling)或者格角色赋值(case role assignment)或者浅层语义分析(shallow
semantic
parsing):将词语的意义与句子的语义进行链接。目的是自动发现句子中谓语的语义角色。即找出句子中给定谓语的语义变元,为每个变元选择合适的角色。能够改善所有语言理解应用的质量。

主要的语义角色标注方法:基于有监督机器学习,需要大量的训练和测试资源,主要利用 FrameNet 和 PropBank 资源。

语义角色标注都从句法分析开始,通过遍历句法分析的结果来寻找所有的谓语承接语。遍历句法分析树来确定成分与谓语角色的对应,从而将句法成分描述成谓语对应的特征集合,然后利用训练得到的分类器来基于这些特征做出判断。常用特征有:

特征按照上面提到的顺序进行排列。

多阶段分类器:剪枝、识别、分类。

语义角色标注需要注意成分重叠问题,因为成分的语义角色是相互依赖的,因此可以采用 N-best 重打分技术。先利用分类器为每个成分指定多个标签,每个标签都有一定的概率,然后再使用全局最优的算法从中挑选最好的标签序列。

利用组块技术可以直接对原始(或者带有词性标注)文本进行语义角色标注。

在评价语义角色标注系统时要求把每个变元正确地指派到相应的词语序列或句法分析成分上。因此可以计算准确率、召回率和 F 值。

一个简单的基于规则的系统可以用来作为基准系统。

无监督语义排歧

在语言应用中使用较多的是凝聚式聚类(agglomerative clustering)算法。

评价无监督的词义排歧方法,最好做外在或体内测试。

小结

词义排歧(Word-Sense
Disambiguation,WSD)判定特定上下文中词语的正确义项。监督方法利用单个词语(单词任务)或所有词语(全词任务)出现的句子,这些句子使用 WordNet 中的义项进行了标注。监督 WSD 使用朴素贝叶斯分类器、决策列表分类器以及其他分类器进行训练和预测,分类器是在描述词语上下文的词中的搭配特征和词袋特征上进行训练。

WSD 的重要基准系统是选用最频繁词义,等价于 WordNet 中取词语的第一个意义。

Lesk 算法选择字典定义中和目标词语的上下文重叠词语最多的义项作为目标词语的词义。

词语相似度可以通过度量语义字典中的链接距离或者语义字典中的信息含量,使用语料中的分布相似度或者通过使用信息论方法来计算。

分布式相似度的关联度度量方法包括:PMI、Lin 和 t-test。向量相似度的度量方法包括:余弦、Jaccard、Dice 和 Jiang-Conrath。

词汇间的关系(如:下位关系)可以通过词汇——句法模式发现并识别。

语义角色标注通常从对句子进行句法分析开始,然后自动地为句法分析树中的每个结点标识语义角色。