词嵌入(Word Embedding)是自然语言处理(NLP)中的一种技术,用于将词语或短语映射为具有固定维度的实数向量。这些向量(嵌入向量)能够捕捉词语之间的语义相似性,即将语义相近的词映射到向量空间中距离较近的位置,而语义相异的词会被映射到较远的位置。词嵌入是文本表示学习的核心,广泛应用于文本分类、机器翻译、文本生成、问答系统等任务中。
1. 词嵌入的基本概念
词嵌入将离散的词语转换为稠密的低维向量表示,这些向量通常在100到300维之间。相比于传统的词袋模型(Bag-of-Words,BOW)或词频-逆文档频率(TF-IDF)模型生成的高维稀疏向量,词嵌入模型生成的向量更加紧凑且具有语义信息。
例如,词袋模型会将每个词表示为一个非常高维的向量,每个维度对应一个词汇表中的词,而词嵌入则将每个词用一个低维稠密向量表示。通过这种方式,模型能够捕捉到词语之间的语义关系。
2. 词嵌入的表示
每个词语被表示为一个向量。例如,假设我们使用300维度的词嵌入,那么词“苹果”可能会被表示为如下的300维向量:
v 苹果 = [ 0.21 , − 0.56 , 0.87 , … , 0.34 ] \mathbf{v_{\text{苹果}}} = [0.21, -0.56, 0.87, \dots, 0.34] v苹果=[0.21,−0.56,0.87,…,0.34]
而词“香蕉”也会被映射到一个向量,如果“苹果”和“香蕉”在语义上相似,那么它们的嵌入向量(Embedding Vector)在向量空间(vector space)中的距离就会较近。
3. 词嵌入的原理
词嵌入模型的基本思想是:语义相似的词通常会出现在相似的上下文中。这种观点源自于“分布式语义学”(distributional semantics),即词语的语义可以通过它们的上下文来确定。基于这个思想,词嵌入模型会通过上下文中的词语共现关系来学习每个词的嵌入向量。
通过学习,模型能够将语义相似的词语映射到向量空间中相近的点。例如,在大规模文本语料中,“苹果”和“香蕉”可能频繁出现在类似的上下文中,例如“我喜欢吃___”,因此它们会具有相似的嵌入向量。
4. 常见的词嵌入模型
a. Word2Vec
Word2Vec 是一种经典的词嵌入模型,由Google的Mikolov等人提出。它通过神经网络学习词语的嵌入向量,目标是让语义相似的词语具有相似的向量表示。Word2Vec 提供了两种训练方法:
- CBOW(Continuous Bag of Words):通过预测上下文来推测目标词。例如,给定句子“我喜欢吃苹果”,模型使用“我”、“喜欢”和“吃”预测目标词“苹果”。
- Skip-Gram:反过来,通过目标词预测上下文。例如,使用“苹果”预测“我”、“喜欢”和“吃”。
Word2Vec 的输出是一个固定维度的词嵌入向量,它能够很好地捕捉词语之间的语义关系。例如,向量 v 国王 − v 男人 + v 女人 \mathbf{v_{\text{国王}}} - \mathbf{v_{\text{男人}}} + \mathbf{v_{\text{女人}}} v国王<