词义消歧有哪些方法?从词典重叠到上下文向量的技术路线
词义消歧是判断多义词在具体语境中含义的任务,本站另有词条介绍它的基本概念和意义。这里重点梳理词义消歧的主要技术路线、常用的资源和评测方法,以及实践中的一些经验规律。
一、基于知识的方法
这类方法不需要专门标注的训练数据,而是利用词典、知识库等已有的语言资源。Lesk 算法:由 Michael Lesk 在 1986 年提出,比较多义词每个义项在词典中的释义,与上下文中的词语或者上下文中其他词的释义有多少重叠,选择重叠最多的义项。后来的改进版本会把 WordNet 中相关词语的释义也纳入比较的范围,以缓解词典释义过于简短的问题。基于语义关系的方法:利用 WordNet 等词汇网络中词义之间的上下位、整体部分等关系,计算多义词的各个义项与上下文中其他词语在语义网络上的距离,选择与上下文整体最相关的义项。基于图的方法:把上下文中所有词语的候选义项构建成一张图,再用 PageRank 等图算法找出最核心、相互关联最紧密的那组义项。此外,最简单而有效的一条基线是“最常用义项”:总是选择这个词在语料中最常见的那个意思,它往往能达到相当高的准确率,很多复杂的方法都难以大幅超越它。
二、有监督的方法
把词义消歧看作一个分类问题:对每个多义词,用人工标注了义项的语料训练一个分类器。常用的特征包括:上下文窗口中的词语、相邻词语的词性、固定的搭配,以及句法上的依存关系。早期使用朴素贝叶斯、决策列表、支持向量机等分类器。最常用的英文标注语料是 SemCor,它根据 WordNet 的义项标注了约二十多万个词。有监督方法的效果通常较好,但最大的困难是数据:需要为大量多义词的每一个义项都准备足够的标注样本,这个代价非常高,被称为“知识获取瓶颈”。
三、无监督的方法
不依赖人工标注和事先定义好的义项列表,而是直接从大量的文本中发现多义词有几种不同的用法,这也叫词义归纳。基本的做法是收集一个词出现的所有上下文,把相似的上下文聚成若干类,每一类就对应着这个词的一种用法。这类方法能够发现词典中没有收录的新义,但得到的“义项”不一定与词典的划分一致,评价起来也比较困难。David Yarowsky 在 1995 年提出了一种著名的半监督方法:从少量的种子搭配出发,利用两条经验规律迭代地扩充标注数据。这两条规律是:“一个搭配一个词义”,同一个固定搭配中的多义词通常意思相同;“一个语篇一个词义”,同一篇文章中多次出现的同一个多义词,通常表达的是同一个意思。
四、基于预训练语言模型的方法
BERT 等预训练模型能够为同一个词在不同的语境中生成不同的上下文向量,为词义消歧带来了很大的进步。一种简单的做法是:用标注语料中每个义项的例句计算出这个义项的平均向量,预测时把待判断的词的上下文向量与各个义项的向量进行比较,选择最接近的那个。也可以把词典的释义一并输入模型,让模型判断上下文与哪一条释义最匹配,比如 GlossBERT 等方法,这样还能更好地处理训练数据中很少出现的义项。如今的大语言模型可以直接根据上下文和词典释义回答“这里是哪个意思”,在很多场景下表现良好。
评测
词义消歧的评测通常使用 Senseval 和后来的 SemEval 系列评测任务提供的基准数据集,分为只针对少数几个词的“词汇样本”任务,以及对文本中所有实词进行消歧的“全词”任务。2017 年,Raganato 等人整合了多个评测数据集,建立了统一的评测框架,便于不同方法之间的比较。