Skip to content

Lesson-1 词向量

首先,什么是词表示?

词表示就是把文本中的单词转换成数值向量,以便计算机来理解和处理文本。

具体来说,词向量就是把语义信息编码成向量。那么,我们希望:语义相似的文本在向量空间中的距离更近,而具有不同语义的本文在向量空间中的距离更远。

在这种情况下,我们希望通过词向量在向量空间中的位置来捕捉不同词之间的语义关系。

one-hot 编码是什么?

one-hot Encoding 被称为独热编码,是一种非常传统的词语表示方式。它将每个词语表示成一个非常稀疏的向量,向量的维度大小和词表的大小相同,每个向量中只有一个位置(这个位置就是该词在词表中的位置)取值为1,剩下位置取值都为0。

显然,它的缺点有:维度太大、表示稀疏,无法反映词与词之间的语义关系。

什么是 Word2vec?

具体内容参加我完整解读的博客:杂谈·Word2Vec

Word2vec 是一种用于自然语言处理中词嵌入的模型,通过将单词表示为低维稠密向量来保留词语之间的语义关系。

具体来说,对于文本中的每个单词,它都具有两个向量,一个是中心词向量,一个是文本词向量。然后,考虑全局文本,我们定义了 Likelihood:

\[L(\theta) = \prod_{i=1}^T\prod_{j=-w}^w P(u_{i+j}|v_i;\theta)\]

这个 Likelihood 刻画了全局文本中每个词作为中心词的时候,其 window 内其他文本词出现的概率,因此应该越大越好,于是我们定义了 Loss,即\(J(\theta)\)

\[J(\theta) = -\frac{1}{T}\log L(\theta)\]

如何计算\(P(o|c)\)呢?答案是是使用 Softmax:

\[P(o|c) = \frac{exp(u_o^T v_c)}{\sum_{w\in V} exp(u_w^T v_c)}\]

训练的时候,我们有两种方法:

  • CBOW:目标是通过上下文词预测中心词。输入上下文单词的词向量,将上下文单词的向量取平均,使用 Softmax 回归预测中心词的概率分布。优化目标是最大化正确中心词的概率。计算效率高,适合小型数据集。但是可能会忽略某些细粒度的上下文信息。
  • Skip-Gram:目标是通过中心词预测上下文词。输入为中心单词的词向量。通过模型预测窗口内每个上下文单词的概率分布,优化目标是最大化所有上下文单词的概率。表现更灵活,适合大型语料库。但是计算成本较高,因为需要为每个中心词预测多个上下文词。
如何评价词向量?

两种评价方法:

  • 内在评价:侧重于衡量词向量的语义和语言学质量,通常通过预定义的标准任务或数据集进行评估。

具体的方法有:

(1)语义相似性:测试词向量能否正确反映词语之间的语义相似性。可以计算词向量之间的余弦相似性,然后和人工标注的分数进行比较。

(2)词类聚类:测试词向量能否将语义相似的词划分为一类。可以使用聚类的方法划分词向量的类别,然后和原标签的类比进行比较。

(3)类比推理:测试词向量能否捕捉到词之间的语义关系。比如,我们可以给一个类比关系:king:queen = man:?

  • 外在评价:关注词向量在下游任务上的表现,通过将词向量作为特征输入到特定任务中,评估其对整体系统性能的贡献。

具体的方法有:

(1)文本分类:测试词向量在分类任务中的表现,如情感分析、主题分类等。

(2)命名实体识别:测试词向量是否能捕捉命名实体的信息。

(3)机器翻译:测试词向量对翻译任务的帮助。