1. 词表示与词嵌入基础
1.1 从One-Hot到特征化表示
在传统自然语言处理中,我们常用one-hot向量来表示单词。假设词汇表有10,000个词,每个词就会被表示为一个10,000维的向量,其中只有对应词的位置是1,其余都是0。这种方法看似简单直接,却存在严重缺陷:
- 维度灾难:词汇量增长导致向量维度急剧膨胀
- 语义空白:所有词向量彼此正交,无法表达任何语义关系
- 计算低效:高维稀疏向量浪费存储和计算资源
更关键的是,这种表示法无法捕捉词语之间的语义关联。例如"apple"和"orange"都是水果,"man"和"woman"都表示人类性别,但它们的one-hot向量点积永远为0,无法体现这些内在联系。
实际工程中,当词汇量超过50万时,one-hot表示会消耗超过2GB内存仅存储词向量,而其中99.999%的空间都在存储0值。
1.2 词嵌入的核心思想
词嵌入(word embeddings)采用完全不同的思路:用低维稠密向量(通常50-300维)表示词语,向量的每个维度对应一个潜在语义特征。例如:
| 词语 | 性别维度 | 高贵维度 | 年龄维度 | 食物维度 |
|---|---|---|---|---|
| man | -0.95 | 0.01 | 0.30 | -0.02 |
| woman | 0.97 | 0.02 | 0.28 | -0.01 |
| king | -0.92 | 0.93 | 0.45 | -0.03 |
| queen | 0.96 | 0.95 | 0.40 | -0.02 |
| apple | 0.00 | -0.01 | -0.05 | 0.98 |
| orange | 0.01 | -0.02 | -0.04 | 0.97 |
这种表示具有以下优势:
- 维度固定:无论词汇量多大,每个词都是相同维度的向量
- 语义编码:相似词语在向量空间中距离相近
- 计算高效:稠密向量更适合现代硬件加速计算
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 词嵌入技术详解
2.1 特征维度设计原理
词嵌入的每个特征维度并非人工指定,而是通过神经网络自动学习得到的潜在语义特征。以300维词向量为例:
- 早期层特征:通常捕捉基础语法属性(词性、单复数等)
- 中间层特征:学习一般语义关系(同义、反义、上下位等)
- 深层特征:编码复杂语义和领域知识(专业术语、文化概
