词嵌入:Word2Vec 到 Embedding

词嵌入把离散的符号变成连续向量,使「国王减男人加女人近似女王」这类语义运算成为可能。它把语言变成模型可计算的对象,是 NLP 从特征工程走向表示学习的转折。

Word2Vec 思路

Word2Vec 有两个训练范式:CBOW 用上下文预测中心词,Skip-gram 用中心词预测上下文。它假设上下文相近的词语义相近,在大规模语料上训练出低维向量。虽简单,却捕获了丰富语法与语义关系。

from gensim.models import Word2Vec

model = Word2Vec(sentences, vector_size=100, window=5, min_count=1)
vec = model.wv["king"]

到 Embedding 层

现代神经网络多用可学习的 Embedding 层,把词 ID 查表映射为向量,随任务端到端训练。它等价于一个仅查表、无偏置的全连接首层,是 Transformer、RNN 的标准输入入口。

import torch.nn as nn

emb = nn.Embedding(num_embeddings=10000, embedding_dim=256)
x = emb(torch.tensor([42, 7, 999]))     # 词 ID 到向量

注意点

预训练词向量可迁移,但会冻结旧语料的语义;下游任务再训练的 Embedding 更贴合当前数据。未登录词需要特殊标记或子词(如 BPE)处理。

小结

词嵌入用稠密向量表达词义,Word2Vec 是经典无监督范式,Embedding 层则把查表变成可训练模块。二者把符号变成几何,是 NLP 表示学习的起点。

参考与延伸阅读

本文累计阅读