资讯

词嵌入是什么?把词变成能表达语义的向量

2026-11-053 分钟阅读百科
TL;DR词嵌入(Word Embedding)是把词语映射为稠密低维实数向量的表示方法,使语义相近的词向量也相近,并能做“国王−男人+女人≈女王”式的类比运算,代表方法有 2013 年的 Word2Vec、2014 年的 GloVe 和 FastText,后发展为 ELMo、BERT 等随上下文变化的动态词向量,是现代自然语言处理的基础。

词嵌入(Word Embedding),也叫词向量,是一种把词语表示为一个由实数组成的向量的方法,通常是几十到几百维。它的关键特点是:意思相近的词,对应的向量在空间中也彼此靠近。这让计算机能够以数学的方式来处理词语的“含义”,是现代自然语言处理的基础。

为什么需要词嵌入

计算机只能处理数字,要让它处理文字,首先要把词语变成数字。最简单的方法是独热编码:假设词表中有一万个词,就为每个词建立一个一万维的向量,这个词对应的那一位是 1,其余都是 0。这种表示有两个明显的缺点:一是向量维度非常高,而且绝大部分都是 0,非常浪费;二是它完全无法表示词语之间的关系,任意两个词的向量都是相互垂直的,“猫”和“狗”之间的距离,与“猫”和“汽车”之间的距离一模一样,计算机看不出“猫”和“狗”都是动物、意思比较接近。词嵌入用稠密的、低维的向量来表示词语,并让向量之间的距离反映词语之间语义的相近程度。

背后的思想:看一个词的“邻居”

词嵌入的理论基础是语言学中的“分布假说”:出现在相似上下文中的词,往往具有相似的含义。英国语言学家约翰·弗斯在 1957 年有一句名言:“观其伴,知其义”。比如“猫”和“狗”经常出现在“我家养了一只……”“……在沙发上睡觉”“给……喂食”这样相似的语境中,所以它们的意思应该相近。词嵌入的训练方法,就是让在相似上下文中出现的词,得到相似的向量。

代表性的方法

Word2Vec:2013 年,谷歌的 Tomas Mikolov 等人提出了 Word2Vec,它的训练效率很高,能够在海量的文本上快速地学到高质量的词向量,使词嵌入广为人知。它有两种训练方式:一种是根据上下文的词来预测中间的词,另一种是根据中间的词来预测它周围的上下文。Word2Vec 学到的词向量展现了令人惊讶的性质:向量之间可以进行有意义的运算,比如“国王”的向量减去“男人”再加上“女人”,得到的结果与“女王”的向量最接近;“北京”减去“中国”再加上“法国”,结果接近“巴黎”。这说明词向量在一定程度上捕捉到了词语之间的语义关系。GloVe:2014 年斯坦福大学提出的方法,基于整个语料库中词语共同出现的统计信息来学习词向量。FastText:Facebook 在 2016 年提出的方法,把词语拆分成更小的字符片段来学习,能够为训练时没有见过的新词生成向量,对形态丰富的语言效果更好。

从静态到动态

上述方法学到的都是“静态”的词向量:每个词只有一个固定的向量,无论它出现在什么语境中。这无法处理一词多义的问题,比如“苹果很甜”和“苹果发布了新手机”中的“苹果”会得到同样的向量。2018 年以后,ELMo、BERT 等预训练语言模型能够根据上下文,为同一个词在不同的句子中生成不同的向量,这被称为上下文相关的词向量或动态词向量。如今的大语言模型中,每个 token 首先通过一个嵌入层转换为向量,再经过多层 Transformer 的处理,得到包含丰富上下文信息的表示。词嵌入的思想也被推广到了句子、文档、图片、商品、用户等各种对象上,嵌入向量成为了检索、推荐和检索增强生成等应用的基础。