核心要点

  • 定义 unigram/bigram/trigram 及马尔可夫近似

  • 解释 n-gram LM 概率计算与平滑

  • 联系 perplexity 评估

  • 说明从 n-gram 到神经语言模型的演进

简要回答

n-gram 是连续 n 个 token 的片段。n-gram 语言模型 用马尔可夫假设 $P(w_t|w_{1:t-1})\approx P(w_t|w_{t-n+1:t-1})$ 估计下一个词概率,是统计 LM 基础;配合平滑(Kneser-Ney)可算 困惑度。

标准回答

定义:n-gram = 文本中长度 n 的连续词序列。unigram=词,bigram=词对,trigram=三连。

语言建模:估计序列概率 $P(w_1...w_T)=\prod_t P(w_t|context)$。n-gram LM 用 $(n-1)$ 阶马尔可夫近似上下文。

训练:统计语料中 n-gram 计数 → 最大似然 → 平滑(加一、Good-Turing、Kneser-Ney)处理零计数。

贡献

  1. 拼写纠错、输入法候选
  2. 机器翻译候选评分(传统 SMT)
  3. 语音识别语言模型分支
  4. 文本分类特征(bag-of-n-grams)

局限:数据稀疏(未见 n-gram);无法泛化到语义相似表达;n 增大指数爆炸。

评估:困惑度 Perplexity 越低越好。

现代 Transformer LM 用神经网络隐式建模任意长依赖,但 n-gram 思想仍见于 BPE token 与局部特征。详见 语言模型

常见误区

⚠️ 常见踩坑

不说平滑;混淆 n-gram 特征与 n-gram LM;声称 n-gram 能建模长距离依赖。

追问

追问 1Kneser-Ney 平滑解决什么问题?

普通加一平滑对「未见上下文」分配概率不合理。Kneser-Ney 用低级 n-gram 的延续概率做回退,使「Francisco」在「San」后概率高于孤立词频暗示。

追问 2字符 n-gram 有何用途?

适用于语言识别、拼写纠错、恶意 URL/垃圾文本检测,以及形态丰富、分词困难的语言。相对词级 n-gram 对 OOV 更鲁棒,但序列更长、特征更稀疏,需配合特征哈希或神经网络编码。

追问 3Perplexity 如何解释?

模型对测试集平均「分支因子」——困惑度 100 相当于每步在 100 个等概词中猜。要与词表大小、分词方式一起看,跨模型比较需统一 tokenization

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。