自然语言处理:分布语义学

Distributed Semantics

Posted by R1NG on November 8, 2022 Viewed Times

分布语义学

本章我们讨论分布语义学的相关定义和模型.

基本概念和相关定义

在自然语言处理任务中, 一项至关重要的任务是: 如何让计算机 “理解” 给定上下文中字词的 含义, 这个步骤被称为 语义处理 (Semantic Processing).

而分布语义学就是用来完成 语义处理 步骤的一种方法. 它基于下面的几个假设组成的 分布假设 (Distributional Hypothesis):

  1. 单纯依赖字词出现的上下文 即可推断出它的含义.
  2. 在类似的上下文中出现的字词共享 相似的含义.
  3. 字词的特征由它在上下文中的出现位置附近的其他字词刻画.

20221108234337

换言之, 分布假设认为, 文本的 上下文信息足够形成 对某个 语言项目 (Linguistic item, 如字词) 的表示.

分布语义学模型的基本思想

分布语义学模型的基本思想是:

  1. 构造 高维特征向量 (High-dimensional feature vector) 来描述某个语言项目.
  2. 语言项目间的 语义学上的相似性特征向量的相似程度 所刻画.

注意: 此处提及的 语言项目 是一个正式的语言学名词, 它用于指代 语言中任一个层次中的一个或一组单位, 如字词, 句子, 文本片段, 段落等.

为了描述语言项目所构造的高维向量所处的空间被称为 语义空间 (Semantic Space), 也称 嵌入空间 (Embedding Space), 潜在表示空间 (Latent Representation Space).

在语义空间中, 我们考虑 高维特征向量相似性差异性. 它们分别由 距离函数 (Distance Function) 和 相似函数 (Similarity Function) 所刻画:

20221108235111

而常用的距离函数和相似函数分别是 欧氏距离向量内积或向量余弦距离:

20221108235149

最简单的分布语义学模型

最简单的分布语义学模型使用 向量空间模型 (Vector Space Model) 和 字词权重计算 (Term Weighting) 编码特征向量.

向量空间模型, Vector Space Model

向量空间模型基于 对字词出现次数的统计 (Count based), 是将一段文本个体 (a piece of text object)表示为 存储由一系列预先给定的索引项的出现次数的高维向量代数模型.

我们称涉及的 “一段文本个体” 为 文档 (document), 描述文档的高维向量称为 文档向量. 在文档向量中, 每个维度对应一个索引项 (Index Term) 在相关文档中的 出现次数.

显然, 如果对语料库中的每篇文档都统计和收集它们的文档向量, 我们最终就会得到 文档频数矩阵 (Document Frequency Matrix).

20221109000017

字词权重计算

下面考虑对 字词权重的计算 (Term Weighting). 一般地, 在进行计算时我们考虑下列的三个因素:

20221109000126

其中, Binary Weighting 就是一个可能取值为 $0$ 或 $1$, 表示 这个字词是否在文档中出现 的指标:

20221109000242

Term Frequency 词频和 TF-IDF 的定义就不再赘述:

20221109000340

20221109000428

基于向量空间模型的字词相似度计算

下面我们考虑如何 基于向量空间模型 计算 字词的相似度.

显然, 首先需要使用向量空间模型构造相关的 Word Vector. 然后, 就可以使用 某种描述向量间相似程度的测度, 比如 向量的余弦相似函数, 计算 Word Vectors 之间的相似程度.

而两种常规的构造 Word Vector 的方式是: 基于文档的方法基于上下文的方法.

20221109113321

基于文档的方法

该方法基于 文档频率 的统计构造 Word Vector.

20221109113455

基于上下文的方法

该方法基于对 给定单词表中每个单词, 不同项 (Term) 的解释文本中出现的次数 构造 Word Vecor.

20221109115051

进一步地, 对包含目标字词的文本的选择有多种方式:

  1. 选择包含目标字词的 整个文档.
  2. 在文档中, 以目标文本为中心, 以某个窗宽为范围内的所有单词.
  3. 在文档中, 以目标文本为中心, 以某个窗宽为范围内的所有 具有实际含义 (如: 不为 Stop Word) 的单词.

注意此处窗宽一般有两种选择: 或者选定一个 很大 的窗宽, 或者选择一个 更小的 窗宽:

20221109115355

对文本的选择过程也就是所谓的 Context Engineering.

基于奇异值分解的稀疏向量转化

在生成 Word Vector 时, 不难注意到一个问题: 基于上下文方法和向量空间模型所生成的 Word Vector 实际上是 稀疏向量: 它们具有很大的维度, 但向量中绝大多数的维度上都为 $0$.

由于稀疏向量和稀疏矩阵一样, 在计算和存储上都存在效率不高的问题, 我们需要将 Word Vector 降维.

20221109131436

此处我们介绍一种常用且有效的数据降维方法: 基于 矩阵奇异值分解潜在语义索引 (Latent Semantic Indexing).

20221109131733

通过矩阵奇异值分解, 可将规模庞大的文档矩阵 (Document Matrix) 分解为三个较小的行列式的 乘积. 此处还有下列的结论:

20221109131858

注意 Document | Term Vector 的表示方式.

这里使用的奇异值分解可被 单独视为一种通用的数据降维方法:

20221109132005

预测性的词编码 (Predictive Word Embedding)

预测性词编码模型的主要任务是: 基于 单词的出现信息, 如 “在目标词对应的内容文本中, 某个另外的词出现了多少次”, 或 “某个词是否在目标词对应的内容文本中出现过”, 对单词本身的含义进行预测.

20221117204944

我们可以使用词典中关于文字本身和其所处上下文的信息作为模型输入的一部分, 对模型进行训练. 下面我们介绍三种典型的预测性词编码模型: 连续词袋模型, Skip-GramGloVe.

连续词袋模型和 Skip-Gram 模型

连续词袋模型和 Skip-Gram 模型同属 Word2Vec 类的模型: 为了将文字转换为可被计算机处理的形式, Word2Vec 类模型将 词映射到实数域上的向量, 而这个从词到向量的过程被称为 编码 过程, 也就是 Word Embedding.

连续词袋模型

连续词袋模型使用上下文的信息预测中心词, 它既可被训练为 给定上下文信息预测中心词到底是哪个, 也可被训练为 给定上下文信息, 对中心词基于其词性进行分类. 它的处理管线主要由稠密化编码和 Logistic Regression 分类器组成.

连续词袋模型的输入被编码成 One-Hot 向量, 下图中的 $V$ 为词典 (Vocabulary) 中的总词数.

20221117213911

作为输入的 One-Hot 向量经过中间维度为 $V \cdot N$ ($N$ 为超参数) 的压缩矩阵后被压缩为只有 $N$ 个元素的向量 $h$. 也就是:

\[h_i = \frac{1}{C} \cdot \sum_{j = 1, \cdots, C} x_{j, k} \cdot W_{\text{V} \times \text{N}}.\]

20221117213924

这是为了实现使用 由多个词组成的上下文 预测目标词的目的, 因此使用了 上下文词向量的平均.

随后经过 Logistic Regression的权重矩阵 $W’$ 并使用 Sigmoid 函数得到概率形式的输出, 取最大概率对应的类, 这就是模型的预测结果.

20221117214014

Skip-Gram 模型

Skip-Gram 模型的处理管线大致形态和连续词袋模型正好相反, 它需要解决的问题也大致恰好是反过来的: 给定目标词, 预测目标词的上下文.

20221117215138

GloVe 模型

20221117234330