Logo
Section 1 / 8

词嵌入简介

在本节课中,我们将讨论词嵌入及其类型。

导入

词嵌入简介

在本节课中,我们将讨论词嵌入及其类型。

什么是词嵌入(word embedding)?

如果你了解或接触过自然语言处理(NLP),你可能已经为文本创建过向量,也就是使用两种最常用的技术将文本数据转换为数字:TF-IDF(词频-逆文档频率)和 CountVectorizer。我们来详细看看这两种技术。

TF-IDF

全称为 Term Frequency-Inverse Document Frequency(词频-逆文档频率)。它是一种统计方法,用于衡量一个词在文档集合中的某个文档里的相关性。其计算方式是将两个指标相乘:一个词在文档中出现的次数,以及该词在整个文档集合中的逆文档频率。

TF-IDF 的计算包含以下两个部分:

  • 词频(Term Frequency):指一个词在文档中出现的频率。计算方式有多种,最简单的是直接统计该词在文档中出现的次数。也可以根据文档长度或文档中最高频词的频率进行归一化调整。
  • 逆文档频率(Inverse Document Frequency):反映一个词在整个文档集合中是常见还是稀有。越接近 0 表示该词越常见。计算方式为:用总文档数除以包含该词的文档数量,再取对数值。
  • 因此,如果一个词非常常见并在多个文档中出现,这个值会趋近于 0;反之则趋近于 1。
  • 将这两个数值相乘,就得到了该词在特定文档中的 TF-IDF 分数。分数越高,说明这个词在该文档中越重要。

CountVectorizer()

该方法将一组文本文档转换为词项计数的矩阵。也就是说,把文本转化为向量,每个向量元素表示对应词语在句子中出现的次数。

但在之前的迁移学习章节中我们提到过,存在一些预训练的 NLP 模型可用于生成词向量。这些词向量其实就是词嵌入(word embedding)。目前最流行的两种词嵌入是:

  • word2vec
  • gloVe

本章我们将使用 word2vec 嵌入完成两个小项目,下一章则会使用 gloVe 嵌入构建一个情感分析模型。

为什么需要词嵌入?

人类可以直观地理解文本数据,但每天都会产生海量的文本信息,不可能依靠人工完成所有文本处理任务。那么,如何让计算机对文本执行聚类、分类等操作呢?我们知道,所有的机器学习模型都只能处理数值型数据。

计算机可以比较两个字符串是否相同,但它如何理解“美国”和“特朗普”之间存在关联?又如何判断在句子“Apple is a tasty fruit”中的“Apple”指的是水果而不是公司?

为了让计算机理解这些语义关系,我们需要构建一种能够捕捉以下信息的词语表示形式:

  1. 词语本身的含义,
  2. 词语之间的语义关系,
  3. 词语在不同上下文中的使用情况。

这正是**词嵌入(word embedding)**的作用所在。

词嵌入的类型

词嵌入大致可分为两类:

  • 基于频率的嵌入:使用 TF-IDF 和 CountVectorizer 等技术生成向量表示。这类方法所保留的上下文信息质量有限。而上下文信息正是 NLP 模型理解句子或文本语境、完成任务的关键。例如,“Apple”可能是水果也可能是公司,具体含义取决于其所在的句子语境。
  • 基于预测的嵌入:利用预训练模型,通过神经网络生成向量表示。这类模型适用于需要丰富上下文信息的场景。

本课程不会重点讲解基于频率的嵌入方法,因为它们较为基础且常见,你很可能已经有所了解。若尚未掌握,建议参考本课程末尾资源部分提供的补充材料。

请看下图,展示了某些词语的 4 维向量表示。图中可见,每个词语都被一组数字表示。每一个词由四个数值组成,即每个词对应一个 4 维向量。

...
Word embedding example

我们将使用 word2vec 来生成此类向量,不过 word2vec 通常将每个词表示为 300 维的向量。从技术上讲,你可以选择任意维度,如 10、100、300 甚至 1000。业界普遍采用 200–500 维,因为我们尝试过不同维度(200、300、400、500……1000 等),发现超过 300–400 维后性能提升并不显著(这也与训练数据有关)。显然,维度越高,计算开销越大。但如果维度设得太低,则无法充分表达整个训练语料所包含的信息。

项目:使用马尔可夫链进行文本生成

Word2vec