N-gram 原理

基本概念

N-gram 是基于统计的语言模型,通过计算文本中连续出现的 n 个词语(token)的联合概率来预测语言序列。其核心假设为 ​马尔可夫假设:当前词的概率仅依赖于前 n-1 个词。

数学表示

对于句子 ,其概率计算为:

  • Unigram (1-gram):
  • Bigram (2-gram):
  • Trigram (3-gram):

2-gram图示:

训练过程

  1. 统计词频:计算语料库中每个 n-gram 的出现次数。

  2. 概率估计:使用最大似然估计(MLE)。

平滑技术

解决零概率问题(单词表中未出现单词)。

加一平滑(Laplace)

  • 原理:所有 n-gram 计数加 1

  • 公式

    • :词汇表大小

    • 缺点:

      • 所有未出现的n-gram被赋予完全相同的概率(即加1后的固定值),而实际中不同未出现n-gram的潜在概率可能差异很大。
      • 加一平滑对所有n-gram(无论是否出现)统一调整,未考虑不同n-gram的统计特性。

Good-Turing 平滑

  • 核心思想:用出现 r 次的 n-gram 数量估计出现 r+1 次的概率。

  • 调整公式

    • :出现 r 次的 n-gram 数量

Kneser-Ney 平滑

  • 创新点:考虑词语的上下文多样性。

  • 公式

    • :折扣系数(通常 0.75)
    • :归一化因子

方法对比

方法优点缺点
加一平滑实现简单高维数据效果差
Good-Turing自适应调整低频词概率需要精确统计 N_r
Kneser-Ney处理OOV效果最佳计算复杂度高

选词策略

  • 贪心搜索(Greedy Search)

  • 束搜索(Beam Search)

  • Top-k 采样

  • Nucleus 采样(Top-p)

优缺点分析

优势

  1. 计算高效:基于统计无需复杂训练。

  2. 可解释性强:概率计算透明。

  3. 小数据友好:适合资源受限场景。

局限性

  1. 数据稀疏:高阶n-gram需要海量语料。

  2. 上下文限制:无法捕捉长距离依赖。

  3. 泛化能力弱:无法处理未见语言模式。