论文题目:Making Sense of Word Embeddings
相关源码:https://github.com/uhh-lt/sensegram
论文地址:https://arxiv.org/abs/1708.03390

读后感

语义嵌入:从语料库和字典学习,或从已有词向量数据归纳学习

简介

论文是 2016 年发表于 ACL(Association for Computational Linguistics,自然语言处理顶会,一年召开一次,CCF 等级/JCR 分区:A 类) 的会议论文。

背景知识

论文介绍了一种简单有效的方法用于学习语义嵌入。文中方法既可以直接从语料库和字典学习,也可以根据已有的词向量数据通过自我网络聚类的方法归纳学习。它提升了下游应用的效果,与当时最好的模型效果类似。

词向量

  • 预处理时将词映射成稠密向量代入模型,降低稀疏性
  • 对比不同词的语义相似度,实现近义词的迁移
  • 表征不同语义单位:词向量 ->词组向量 ->短语向量
  • 通过词嵌入实现运算,比如:男 - 女=国王 - 王后,国王 - 男 + 女 ->王后,实现类比相关的逻辑推理功能,以及性质变换。

语义向量

无论是稠密的还是稀疏的表示,大部分的词嵌入方法都面临一词多义的问题。后来有人提出了意义向量(sense vector)的概念来解决这个问题,从而提升一些应用的效果,如成份标注、语义关系识别。

论文中提出了一种意义向量学习方法,它使用自我中心网络聚类,将已存在的词嵌入转换成意义嵌入。最终实现了利用上下文实现语义消歧机制(WSD)。

自我中心网络

自我中心网络 ego network,它的节点是由唯一的中心节点 (ego),以及这个节点的邻居 (alters) 组成的,它的边只包括了 ego 和 alter 之间,以及 alter 与 alter 之间的边。

image.png

词嵌入方法

请参考我之前的文档:几种词嵌入方法

Chinese_whisper 算法

话从第一个人传给第二个人,第二个人再传给第三个人,一直传下去,越传越走样。 Chinese_whisper 是一种图聚类算法:

  • 原则:构建无向图,将每个词做为无向图中的一个节点,词之间的相似度,作为节点之间的边,如果词之间的相似度小于设定的阈值那么,这两个词对应的节点之间就没有边。
  • 步骤一:迭代开始前,将每个词作为一个节点,每个词都被赋予一个 id 作为该词的类别。
  • 步骤二:遍历所有节点,把每个节点移动到邻居所属最多的类(在连接相等的情况下,从中随机选择一个)。
  • 步骤三:重复步骤二,直到达到预定的迭代次数或收敛。

前人的方法

一词多义

  • 聚类方法不断迭代,将簇心作为语义嵌入(词聚类/上下文聚类)
  • 稠密向量常使用神经网络方法
  • 基于知识的方法,如将知识库中的任何实体表实为稠密向量,以及利用 WordNet 和词嵌入来构建语义嵌入。

词义消歧

有监督学习,常常为每一个目标词建立一个模型,使用有监督方法训练,这需要大量标注。另外,还有基于知识的方法,比如从 WordNet 中导出意义的表示。

无监督学习,从数据中自动归纳语义清单,具体的方法有两种:分别是上下文聚类,和词 (自我中心网络) 聚类;是否为歧义由其上下文的重叠度来确定;计算上下文词与中心词的距离。

语义嵌入算法

算法具体包含四步

image

  • 学习词嵌入
  • 基于向量的相似度建立最近邻图
  • 使用 ego-network 聚类归纳语义向量(分组)
  • 用词向量计算语义向量

上述主要流程也是可以被替换的,比如:已经存在词嵌入,则可省略第一步;如果使用已经构建的词相似度图,可替代第二步;如果使用众包的方式构建语义列表,则可替代第二三步。

学习词嵌入

论文使用了 Word2Vec 的 CBOW 模型训练 100 维 (或 300 维) 的词向量,具体的上下文大小是 3,词出现的最小频率是 5。并在后面的评测阶段将其作为 baseline 模型。使用 Wikipedia 和 ukWaC 作为训练数据。

计算相似图

建立基于近义词的图,比如桌子和椅子近似度为 0.78,对每个词取其 200 个最近邻(对于绝大多数词来说是足够的)。这个图既可以基于上一步的词向量,也可以使用 JoBimText(JBT)架构提供的语义相似度。

  • 词向量相关性

使用 cosine 距离来计算词向量相似度最高的最近邻,具体使用矩阵乘法实现。

  • JBT 相关性

这是一种无监督的方法,每个词被表征为基于依赖关系的稀疏特征词袋,使用 MALT 解析器提取。特征使用 LM1 方法归一化。其剪枝方法是:对每个词保留 1000 个特征,每个特征与 1000 个词关联。两个词的相似度通过它们共有特征的个数计算。

JBT 有两个优点: (1) 基于依赖特征准确地估计词的相似度。 (2) 高效地计算语料库中所有词的最近邻域。 此外,即使次要意义在训练语料库中有显著的支持,单词嵌入的近邻往往也倾向于属于主要意义。

语义归纳(分组)

首先,对词 t 建立一个 ego-network G,然后使用网络聚类,用聚类去解释词 t 的各个语义(sense)。同样的语义一般会紧密相连,反之则认为语义不同。

具体算法如下:

每一次迭代从相关图 T 中取一个词 t,首先,取与 t 语义最相近的 N 个词作为结点 V 构建 ego-network G(图中不含 t);然后,对于 G 中的每个结点 v 在 T 中寻找与之最相近的 n 个词 V',并建立 v 到 v' 的边;最后,使用 Chinese Whispers 算法(不需要超参数)对 ego-network 聚类。输出是多个簇,每个聚 St 包含它的 N 个最近邻。

算法中有三个超参数:N 是 ego-network 的大小;n 是 v 近邻的最大连接数,k 是簇中元素的最小个数。参数 n 决定了描述的细化程度 (n 越大关系越密)。经验值是 N=200, n 为 50,100 或 200,k 为 5 或 15(k 越小越细分)。

每个词在义群里都有权重,其权重是该词与歧义词 t 的距离。

综上,该方法是计算每个词 t 可能有几种意思,并对每种意思抽像成一个 sense vector(由其它词组成的 list)表示。

用词向量计算语义向量

为每一种词义归纳出一组语义向量。假设一个词义可能由多个词表示。

设 W 是训练语料中所有词的集合,Si={w1,...wn} ⊆W,Si 是从前一步计算得到的语义簇,设一个函数 vecw,用于将词映射到向量;函数γi 计算其在簇中的权重,分别使用两种方法计算语义向量。

不加权方法:

加权方法:

加权结果如表 1 所示:

“桌子”一词既与家具相关,又与数据相关,而词义向量的邻域拆分后不同时与家具和数据相关(通过语义向理计算而非词向量)。

词义消歧

此部分介绍语义向量的具体用法:利用上下文进行语义消歧。 设目标词为 w,其上下文为 C = {c1,...,ck}, 首先,将 w 映射成一系列的语义簇 S ={s1,...,sn},用两种方法来确定其在上下文中最确切的语义。

  • 方法一:计算基于上下文的语义概率

右侧的公式实际上是一个 sigmoid 函数——将具体值转换成概率:

sigmoid 函数图像:

公式中的 c 是上下文嵌入的均值,使用上下文均值来计算中心词的词义本身就类似于 CBOW 的基础方法。使用这种方法对随机词有较低的标量积,对上下文中出现的词有较高的标量积。

  • 方法二:基于计算中心词与上下文的相似度

公式中的 c 是上下文词嵌入的均值,与方法一不同的是它不需要使用上下文嵌入,而只需要每个词的词嵌入(Word2Vec 工具默认不保存上下文嵌入)。

为进一步提升效果,论文还使用了上下文过滤方法,比如上下文中一些词“chairs”"kitchen" 可能对“table”的词义起到更重要的作用,具体算法如下:

其中 f 是上述公式中的计算方法,i 为具体的语义簇,j 是上下文中词的位置,对每一个词 cj,计算它与各个词义的距离(如果 cj 有辨识度,上式的值就比较大),从而找到最具消歧能力的词。

实验

分别在两个数据集上对模型进行评价,一个是用众包方式收集的带上下文的语义标注;一个是公用的 SemEval 数据集。

TWSI 评测

主要评测不同参数对模型的影响。

TWSI 是一个众包系统,其中包含 1012 个高频名词,每个词平均 2.26 个语义,提供 145140 个标注的句子。另外,它还提供一个清单,其中列出了所有可以替代该单词语义的词表。

数据分布是有偏的,其中 79% 指向最常用的语义,因此除了 TWSI 数据全集以外,还构造了无偏子集(balanced subset),每个语义除它本身以外,有五个上下文词。

评价方法

创建一个映射表用于对比预测值和标注值。语义被表征为一袋词向量,可用余弦相似度进行比较。每个归纳的语义对应一个最相似 TWSI 语义作为预测值,对比预测值和 TWSI 标注值,即可使用准确率、召回率等指标给模型打分。

指标

为了方便比较,还定义了一些指标:

  • 归纳上界
    当该含义的映射存在时,定义归纳上界为理论上能达到的最佳值。
  • TWSI 最高频
    TWSI 数据集中某个词对应最高频的词义。
  • 归纳最高频
    某个词归纳后,最大的聚簇。
  • 随机语义
    从某个词语义中随机取一个作为 baseline。

结果

表 3 展示了基于不同底层模型,在不同粒度下模型的表现:

认为其能达到的最好情况是众包标注结果(TWSI);可以看到粒度越细,表现越好;同时也可以看到语义个数(Sense)与识别性能成反比。

表 4 展示了有偏数据与校正数据,以及过滤的效果,结果是使用上下文中的两个词 p=2 过滤时效果最好。

最终图 3 展示了实验结果:

实验对比了随机算法、基于概率的均值、加权重,基于相似度的加权值,加 p=2 过滤,最高频语义,以及理论最佳效果 (upper bound)。

SemEval 评测

国际语义评测 SemEval 是国际权威的词义消歧评测,文中使用了其中的任务 13,用于与其它模型对比效果。

提供 20 个名词、20 个动词和 10 个形容词。包含 20-100 个上下文单词,总共 4664 个上下文。

对比结果如下:

参考

超全word embedding论文总结
秒懂词向量Word2vec的本质
知识图谱之WordNet
ego-network概念
A Survey of Word Embeddings Evaluation
A Survey on Language Models
Chinese Whisper 人脸聚类算法实现