自然语言处理

word2vec(词向量模型)

/ WURD-too-VEK /

word2vec 是一个出名的妙招,它通过观察词语「结交什么样的朋友」来教计算机理解词义。它背后的老思想是:「观其伴,而知其词。」如果「咖啡」和「茶」都爱出现在「杯」「热」「早晨」附近,那它们的意思多半相近——word2vec 就把这种直觉变成了数字。每个词都化作一串数字(一个向量,常常有几百个),摆放的位置使得用法相近的词,在一片浩瀚而无形的空间里彼此靠近。

就机制而言,word2vec 在普通文本上训练一个小小的神经网络,玩一个简单的猜词游戏:给定一个词,去预测它的邻居(skip-gram 版本);或给定邻居,去预测缺失的那个词(CBOW 版本)。没人去标注任何东西——文本自己就提供了答案。在嚼过几十亿个词之后,把网络内部的参数读出来当作向量,竟意外地承载了丰富的语义。那个广为传颂的把戏是:在这些向量上做算术真的管用——「国王 − 男人 + 女人」会落在「王后」附近。

2013年由谷歌研究者发布的 word2vec 是一个转折点:它让稠密、可复用的词义变得算起来便宜、又容易插进别的系统。不过有两点要老实说。它给每个词恰好一个向量,于是「bank」(河岸)和「bank」(银行)被糊成了一团——更新的模型靠读上下文来解决这个问题。还有,由于它从人写的文本里学习,它也把人类的偏见一并吸收,会原封不动地复现藏在数据里的偏差。

取出「king」「man」「woman」的向量,算一算 king − man + woman。结果最接近的词向量是「queen」——这套几何竟在没人解释过的情况下,捕捉到了一种性别关系。

「king − man + woman ≈ queen」——语义以算术的面目现身。

word2vec 不论上下文,给每个词一个固定向量,因此分不清「bank」的两种含义。后来的语境敏感模型(如 BERT)解决了这一点——但 word2vec 的核心思想「语义即几何」,至今活在每一个嵌入里。

又称
word to vec词向量skip-gramCBOW连续词袋