什么是词嵌入(Word Embedding)?
简单来说,词嵌入(Word Embedding) 是一种将文本中的词(Word) 转换成 数字向量(Vector) 的技术。它是自然语言处理(NLP)中最基础、最重要的概念之一。
为了让你更直观地理解,我们可以从“为什么要用它”、“它是什么”以及“它能做什么”三个方面来解释。
1. 为什么要用词嵌入?(解决什么问题)
计算机无法直接理解人类的语言(如“苹果”、“喜欢”),它只能处理数字。因此,我们需要把词变成数字。
传统方法的局限(独热编码 One-Hot Encoding):
在词嵌入出现之前,人们常用“独热编码”。假设字典里有10,000个词:
- “苹果”可能是:
[1, 0, 0, ..., 0] - “香蕉”可能是:
[0, 1, 0, ..., 0]
这种方法有两个大问题:
- 无法表示词义关系: 在计算机看来,“苹果”和“香蕉”这两个向量完全没有关系(正交的),计算机不知道它们都是水果,也不知道它们很相似。
- 太浪费空间(稀疏性): 如果字典有10万个词,每个词的向量长度就是10万,且里面只有一个1,其余全是0。这会造成极大的计算浪费(维度灾难)。
2. 词嵌入是什么?(核心概念)
词嵌入通过神经网络训练,将每个词映射到一个低维(比如50到300维)、稠密(不再全是0)的实数向量空间中。
举个例子:
如果我们把词变成一个 3维 的向量(实际上通常是几百维):
- 苹果
- 香蕉
- 汽车
你会发现:
- “苹果”和“香蕉”的数字非常接近(因为它们经常出现在相似的上下文中,比如“吃”、“买”、“甜”)。
- “苹果”和“汽车”的数字这就差得很远。
核心思想:
“一个词的含义,由它周围的词决定。”(Distributional Hypothesis)。如果两个词经常出现在相同的上下文中,它们的向量就会在空间中靠得很近。
3. 词嵌入的神奇特性
词嵌入最著名的特性是它能捕捉语义关系,甚至可以进行数学运算。
(1) 语义相似度
在向量空间中,意思相近的词,距离会很近。
- Distance(猫, 狗) < Distance(猫, 桌子)
(2) 词的类比运算(最经典的例子)
词嵌入能够捕捉词语之间的逻辑关系。最著名的公式是:
这在数学向量上是真的成立的!如果你把“国王”的向量减去“男人”的向量,再加上“女人”的向量,结果会落在“女王”的向量附近。这说明计算机“理解”了性别和皇室身份的概念。
4. 常见的词嵌入模型
词嵌入技术经历了几个发展阶段:
- Word2Vec (2013, Google):
- 里程碑式的技术。通过预测上下文(比如根据“我爱吃__”预测“苹果”),训练出高效的词向量。
- GloVe (2014, Stanford):
- 基于全局词频统计的方法,效果也很好。
- FastText (Facebook):
- 引入了子词(Subword)概念,比如把 "apple" 拆成 "ap", "pp", "le"。这使得它能处理拼写错误或没见过的词。
- BERT / GPT (现代,上下文相关):
- 这是目前的SOTA(最先进技术)。
- 传统的 Word2Vec 有个缺陷:多义词只有一个向量。比如“Bank”,既可以是“银行”,也可以是“河岸”。
- BERT 这类模型生成的嵌入是动态的。它会根据句子的不同,给同一个词生成不同的向量。
总结
词嵌入就是把人类语言翻译成计算机能理解的坐标系统。在这个坐标系里,意思相近的词住得近,意思相反的词住得远,甚至可以通过加减法来推导词与词之间的关系。它是现代人工智能理解语言的基石。
右滑查看面试常问