5.3 简单的基于计数的嵌入
“三维向量最重要的属性是:位置、位置、位置。”——Randall Munroe,https://
xkcd .com /2358/ 的悬停文字
下面介绍第一种计算词向量嵌入的方法。这个最简单的意义向量模型基于共现矩阵(co-occurrence matrix),用于表示词共同出现的频率。这里定义一种特定的共现矩阵——词—语境矩阵(word-context matrix):每行表示词表中的一个词,每列表示词表中的另一个词在其附近出现的次数。因此矩阵维度为 ,每个单元格记录训练语料中行对应的目标词与列对应的语境词在附近共同出现的次数。
“附近”是什么意思?实现方式很多,先采用一种简单定义:目标词左右各 4 个词组成语境窗口(context window)。这样,每个单元格表示列词在行词周围这个 4 词窗口中出现的次数。
以 cherry、strawberry、digital 和 information 四个词为例,从语料中各取一个实例,并展示相应的 4 词窗口:
is traditionally followed by cherry pie, a traditional dessert
often mixed, such as strawberry rhubarb pie. Apple pie
computer peripherals and personal digital assistants. These devices usually
a computer. This includes information available on the internet
统计大型语料中每个词的所有出现及其上下文词,就得到词—语境共现矩阵。完整矩阵很大,因为必须对词表中每个词统计它与其他每个词共现的次数,维度为 。为便于演示,只考察这四个目标词和三个语境词 a、computer、pie,并只统计上面的小语料:
| a | computer | pie | |
| cherry | 1 | 0 | 1 |
| strawberry | 0 | 0 | 2 |
| digital | 0 | 1 | 0 |
| information | 1 | 1 | 0 |
图 5.2 四个词的共现向量,计数来自上述四个窗口,只展示三个可能的语境词维度。cherry 的向量用红框标出。真实向量的维度多得多,因而也更稀疏。
每个单元格表示特定词(由行定义)在特定语境(由列词定义)中出现的次数,而每一行就是表示一个词的向量。回顾基本线性代数:向量本质上只是一列或一组数字。因此,cherry 表示为 ,information 表示为 。
向量空间(vector space)是向量的集合,以维数为特征。三维向量空间中的向量在每个维度上都有一个元素。图 5.2 为了能在页面中展示而只采用三维;真实词—词矩阵中的向量维数是词表大小 。
向量中数字的次序对应词发生变化的不同维度。这里第三维是 pie 在语境中出现的次数,第二维是 computer 的出现次数。information 和 digital 在 computer 维度上的值相同,均为 1。
实际中不会只根据一个语境窗口计算词向量,而会使用整个语料。图 5.3 展示这四个词在维基百科语料(Davies, 2015)上的词—词共现矩阵子集。完整矩阵的 个语境词维度无法全部显示,因此这里只列出 6 个。
图中 cherry 与 strawberry 更相似:pie 和 sugar 都常出现在它们的窗口中;二者与 digital 等词则不太相似。相应地,digital 和 information 彼此之间比它们与 strawberry 更相似。
| aardvark | ... | computer | data | result | pie | sugar | ... | |
| cherry | 0 | ... | 2 | 8 | 9 | 442 | 25 | ... |
| strawberry | 0 | ... | 0 | 0 | 1 | 60 | 19 | ... |
| digital | 0 | ... | 1670 | 1683 | 85 | 5 | 4 | ... |
| information | 0 | ... | 3325 | 3982 | 378 | 5 | 13 | ... |
图 5.3 维基百科语料中四个词的共现向量,只展示为教学目的选出的六个维度。digital 的向量用红框标出。真实向量维度多得多,也更稀疏,即大多数维度为零。
可以把一个词的向量看作 维空间中的一个点。图 5.4 展示只取其中两个维度时的空间可视化。

图 5.4 digital 和 information 的词向量空间可视化,只展示分别对应 data 和 computer 的两个维度。
向量维度 通常等于词表大小,往往在 10,000 到 50,000 之间(使用训练语料中的最高频词;保留约 50,000 名之后的词通常帮助不大)。由于大多数数值为零,这些是稀疏向量表示(sparse vector representations);已有高效算法可以存储和计算稀疏矩阵。
还可以对单元格计数应用各种加权函数。最常用的是第 11 章将介绍的 tf-idf;历史上也曾使用许多其他权重方案。有了这些直觉,下面开始具体讨论词相似度的计算。