完整版 · 分步教学

词向量 Word2Vec

为什么「国王 − 男人 + 女人 ≈ 女王」?把每个词变成一串数字,看「意思」如何在空间里变成可计算的坐标。

目标实验目标

看清上一课 N-gram 留下的那个伤口——它把词当成互不相干的符号,所以「猫」的统计帮不了「小猫」。本实验亲手给词打上数字坐标,把「相似」变成可以测量的距离与夹角。

课堂问题机器不懂「动物性」,也不懂「体型」,它凭什么知道该把哪些词放得近一些?
1先给词的意思「打分」

最朴素的念头:挑几个语义属性当维度,给每个词在每个属性上打个分。下面这张表就是我们手工填出来的词向量。

词维度① 男性 ↔ 女性维度② 平凡 ↔ 尊贵
注意真实语料里这两个维度并没有名字——机器的每一维都是自己摸索出来的、说不清但很好用的语义方向。这里为了让你一眼看懂,才给它们取了名字。
2画到平面上:谁离谁近?

每个词的这串数字,就是平面上的一个点。意思相近的词,点就挨得近。点击任意一个词,看它的邻居是谁。

当前选中的词

点击左侧任意一个词…

与它最相似的词

按余弦相似度排序…

余弦相似度两个向量的夹角越小,方向越一致,就越相似。注意它只看方向,不看长短——这正是我们量「词义」时要的尺子。
3意外惊喜:向量运算有语义

训练完成后,研究者发现了一个没人设计过、却自然浮现的规律:国王 − 男人 + 女人 ≈ 女王。这里的减号和加号就是普通的向量加减,逐个维度地算。

—

落点最接近的词

点上方按钮计算…

看懂这张图从「男人」指向「国王」的箭头,就是「尊贵」这个方向。把同一个箭头从「女人」出发,落点恰好压在「女王」附近——语义关系被编码成了空间里的方向和距离。

挑战实验课挑战

挑战 1 · 找邻居
点击「猫」,它的邻居里有「飞机」吗?N-gram 做不到的事,词向量凭什么做到了?
挑战 2 · 自己造类比
把三个下拉框改成「王子 − 男人 + 女人」。落点最接近谁?你预测对了吗?
挑战 3 · 反着减
试试「国王 − 女人 + 男人」。结果跑到哪里去了?这说明每个维度在表达什么?
挑战 4 · 想想局限
「我去银行取钱」和「我坐在河岸边」里的「银行」,词向量能给出两个不同的坐标吗?为什么这是它的天花板?