# N-Gram 语言模型

# 基本概念

N-Gram 指的是在一段文本或语音中,连续出现的 nn 个词

# 马尔可夫假设与概率计算

N-Gram 语言模型基于 马尔可夫假设,即一个词 xt+1x^{t+1} 的出现只依赖于它前面紧邻的 n1n-1 个词,而不是整个历史序列。

因此,条件概率可以表示为:

P(xt+1xt,xt1,,x1)=P(xt+1xt,xt1,,xtn+2)P(x^{t+1} | x^t, x^{t-1}, \cdots, x^{1}) = P(x^{t+1} | x^t, x^{t-1}, \cdots, x^{t-n+2})

这个概率可以通过语料库中词频来近似计算:

P(xt+1xt,,xtn+2)count(xt+1,xt,,xtn+2)count(xt,,xtn+2)P(x^{t+1} | x^t, \cdots, x^{t-n+2}) \approx \frac{\text{count}(x^{t+1}, x^t, \cdots, x^{t-n+2})}{\text{count}(x^t, \cdots, x^{t-n+2})}

# 局限性

随着 nn 增大,可能的 n-gram 组合数量呈 指数增长,导致数据稀疏性问题日益严重。因此,在实际应用中,n 的值通常不能大于 5。


# 单词嵌入(Word Embeddings)

# 传统方法

# WordNet

WordNet 是一个包含同义词集(synsets)和上位词(hypernyms,即更广义的词)列表的词典。

  • 缺点:
    • 缺乏上下文敏感性:无法区分一个词在不同语境下的含义。
    • 缺少新词或新含义:无法收录不断涌现的新词或现有词的新用法。
    • 主观性:词语关系定义依赖于人工标注,具有主观性。
    • 关系类型受限:只表示少数几种预定义的关系,无法量化词语之间的相似度。

# 单词作为离散符号

将每个单词表示为一个 one-hot 向量

  • 缺点: 单词向量之间彼此正交,无法体现词语间的“相似性”或“关联性”概念。

# 基于上下文的表示:词向量

# 分布式语义学

分布式语义学(Distributional Semantics) 理论认为,“一个词的意义由其附近频繁出现的词语所决定”。因此,通过单词的上下文来表示单词,可以构建出 词向量(embeddings)。

  • 基本思想: 为每个单词构建一个 稠密向量,使得在相似上下文中出现的单词,它们的向量也相似。通常使用 向量点积 来衡量向量之间的相似度。
  • 上下文定义: 一个单词的上下文是其在文本中附近(在一个固定大小的 窗口 内)的词语。

# Word2vec

Word2vec 是一种学习词向量的框架,包括两种主要的模型架构:

  • Skip-gram:
    • 目标: 根据一个 中心词 wtw_t 来预测其 上下文词 wt+jw_{t+j}
    • 损失函数: 最小化负对数似然,通过随机梯度下降进行训练。

      J(θ)=1Tt=1Tmjm,j0logP(wt+jwt;θ)J(\theta) = -\frac{1}{T} \sum_{t=1}^{T} \sum_{-m \leq j \leq m, j \neq 0} \log P(w_{t+j} | w_t; \theta)

  • CBOW(Continuous Bag-of-Words):
    • 目标: 根据上下文词来预测中心词。

# Skip-gram 模型的概率计算与训练

# 概率计算

对于一个中心词 cc 和一个上下文词 oo,其条件概率 P(oc)P(o | c) 的计算方法是:

  • 为每个单词 ww 学习两个向量:
    • vwv_w:表示 ww 作为 中心词 时的向量。
    • uwu_w:表示 ww 作为 上下文词 时的向量。
  • 概率公式为:

    P(oc)=exp(uoTvc)wVexp(uwTvc)P(o | c) = \frac{\exp(u_o^T v_c)}{\sum_{w \in V} \exp(u_w^T v_c)}

# 参数学习

  • 对于一个 dd 维向量和总词汇量 VV,需要学习的参数 θ\theta 是一个 2dV2dV 维的向量,包含所有单词作为中心词和上下文词时的向量。

    θ=[vw1vwVuw1uwV]R2dV\theta = \begin{bmatrix} v_{w_1} \\ \vdots \\ v_{w_V} \\ u_{w_1} \\ \vdots \\ u_{w_V} \end{bmatrix} \in \mathbb{R}^{2dV}

# 最终词向量

训练结束后,通常会取 vwv_wuwu_w 的平均值 作为该单词最终的词向量。