NLP基础
大约 2 分钟
1. 词表示
在NLP任务中,首先要考虑词如何在计算机中表示。
1.1 one-hot
one-hot根据词语的数量N,生成长度为N的序列,只需要在当前词的位置标记为1即可。
- 缺点:
- 维度灾难:词数量大,导致维度过大
- 无法度量相似性:词之间的cos计算均为0

1.2 词向量
词向量用有限的维度,表示无限的词语。
评估词向量:人工评估,类比实验。国王-王后 = 男人-女人

词向量模型
2.1 word2vec
假设: 文本中离得越近的词语相似度越高。有两种计算方法,CBOW
和skip-gram
。
- CBOW:用附近的词,预测中心词,类似完形填空,适合小数据集。
- skip-gram:用中心词,预测周围的词,类似造句,适合大数据集。 通过规定窗口的大小,来计算中心词和周围词共同出现的概率,来生成词向量。
缺点
- 没有考虑多义词:每个词语和词向量一一对应
- 无法处理复杂任务:基于局部的上下文,无法捕捉长距离的依赖关系
- 词向量是静态的:在不同的上下文中,词向量相同
2.2 ELMo(Embeddings from Language Models)
ELMo主要基于双向语言模型(Bidirectional Language Model, BiLM),其核心思想是:
- 使用深度双向 LSTM 生成上下文相关的词向量。
- 基于整个句子的上下文,动态调整每个单词的表示。
- 可以与其他 NLP 任务模型结合,提高性能。
- ELMo 不像 Word2Vec 那样为每个单词生成一个固定的词向量,而是根据上下文生成动态的表示。
2.3 BERT
2.4 多种词向量模型对比
模型 | 架构 | 词向量类型 | 适合任务 |
---|---|---|---|
Word2Vec | 静态 | 固定 | 适用于简单 NLP 任务 |
ELMo | 双向 LSTM | 动态(基于上下文) | 适用于语义复杂的任务 |
BERT | Transformer | 动态 | 更强,适用于所有 NLP 任务 |