目标实验目标
看清上一课 N-gram 留下的那个伤口——它把词当成互不相干的符号,所以「猫」的统计帮不了「小猫」。本实验亲手给词打上数字坐标,把「相似」变成可以测量的距离与夹角。
- 理解词向量(word embedding)就是给每个词配一串数字
- 用余弦相似度衡量两个词的「意思有多像」
- 亲手复现那个意外惊喜:向量的加减,竟然在语义上也讲得通
课堂问题机器不懂「动物性」,也不懂「体型」,它凭什么知道该把哪些词放得近一些?
1先给词的意思「打分」
最朴素的念头:挑几个语义属性当维度,给每个词在每个属性上打个分。下面这张表就是我们手工填出来的词向量。
| 词 | 维度① 男性 ↔ 女性 | 维度② 平凡 ↔ 尊贵 |
|---|
注意真实语料里这两个维度并没有名字——机器的每一维都是自己摸索出来的、说不清但很好用的语义方向。这里为了让你一眼看懂,才给它们取了名字。
2画到平面上:谁离谁近?
每个词的这串数字,就是平面上的一个点。意思相近的词,点就挨得近。点击任意一个词,看它的邻居是谁。
当前选中的词
点击左侧任意一个词…
与它最相似的词
按余弦相似度排序…
余弦相似度两个向量的夹角越小,方向越一致,就越相似。注意它只看方向,不看长短——这正是我们量「词义」时要的尺子。
3意外惊喜:向量运算有语义
训练完成后,研究者发现了一个没人设计过、却自然浮现的规律:国王 − 男人 + 女人 ≈ 女王。这里的减号和加号就是普通的向量加减,逐个维度地算。
—
落点最接近的词
点上方按钮计算…
看懂这张图从「男人」指向「国王」的箭头,就是「尊贵」这个方向。把同一个箭头从「女人」出发,落点恰好压在「女王」附近——语义关系被编码成了空间里的方向和距离。
挑战实验课挑战
挑战 1 · 找邻居
点击「猫」,它的邻居里有「飞机」吗?N-gram 做不到的事,词向量凭什么做到了?
点击「猫」,它的邻居里有「飞机」吗?N-gram 做不到的事,词向量凭什么做到了?
挑战 2 · 自己造类比
把三个下拉框改成「王子 − 男人 + 女人」。落点最接近谁?你预测对了吗?
把三个下拉框改成「王子 − 男人 + 女人」。落点最接近谁?你预测对了吗?
挑战 3 · 反着减
试试「国王 − 女人 + 男人」。结果跑到哪里去了?这说明每个维度在表达什么?
试试「国王 − 女人 + 男人」。结果跑到哪里去了?这说明每个维度在表达什么?
挑战 4 · 想想局限
「我去银行取钱」和「我坐在河岸边」里的「银行」,词向量能给出两个不同的坐标吗?为什么这是它的天花板?
「我去银行取钱」和「我坐在河岸边」里的「银行」,词向量能给出两个不同的坐标吗?为什么这是它的天花板?