为了定义两个目标词v和w之间的相似性,我们需要一个度量来取两个这样的向量并给出向量相似性的度量。到目前为止,最常见的相似性度量是向量之间夹角的余弦值。
与nlp中使用的大多数向量相似性度量一样,余弦是基于线性代数中的点积算子,也称为内积:
如上,我们将看到的,大多数向量之间的相似性度量是基于点积的。点积作为一个相似度度量,因为当两个向量在相同的维度上具有较大的值时,它会趋于高。另外,在不同维数上为零的向量——正交向量——的点积为0,表示它们之间有很强的不相似性。
然而,这种原始的点积作为相似度度量有一个问题:它倾向于向量长度长的向量。向量长度定义为:
如果向量较长,则点积越大,在每个维度上的值也越大。更频繁的单词具有更长的向量,因为它们倾向于与更多的单词共现,并且与每个单词具有更高的共现值。因此,对于频繁出现的单词,原始点积会更高。但这是一个问题;我们想要一个相似度度量,告诉我们两个单词的相似程度,而不管它们的频率如何。
修改点积来使向量长度归一化的最简单方法是用点积除以两个向量的长度。这个归一化的点积就等于这两个向量夹角的余弦,根据向量a和b的点积的定义。