核心要点
定义 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)处理零计数。
贡献
- 拼写纠错、输入法候选
- 机器翻译候选评分(传统 SMT)
- 语音识别语言模型分支
- 文本分类特征(bag-of-n-grams)
局限:数据稀疏(未见 n-gram);无法泛化到语义相似表达;n 增大指数爆炸。
评估:困惑度 Perplexity 越低越好。
现代 Transformer LM 用神经网络隐式建模任意长依赖,但 n-gram 思想仍见于 BPE token 与局部特征。详见 语言模型。
常见误区
⚠️ 常见踩坑
不说平滑;混淆 n-gram 特征与 n-gram LM;声称 n-gram 能建模长距离依赖。
追问
追问 1:Kneser-Ney 平滑解决什么问题?
普通加一平滑对「未见上下文」分配概率不合理。Kneser-Ney 用低级 n-gram 的延续概率做回退,使「Francisco」在「San」后概率高于孤立词频暗示。
追问 2:字符 n-gram 有何用途?
适用于语言识别、拼写纠错、恶意 URL/垃圾文本检测,以及形态丰富、分词困难的语言。相对词级 n-gram 对 OOV 更鲁棒,但序列更长、特征更稀疏,需配合特征哈希或神经网络编码。
追问 3:Perplexity 如何解释?
模型对测试集平均「分支因子」——困惑度 100 相当于每步在 100 个等概词中猜。要与词表大小、分词方式一起看,跨模型比较需统一 tokenization。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。
📰 AI 资讯
🛠️ AI 工具
- spaCy
工业级 Python NLP 库,33K+ stars。提供高效的文本分词、命名实体识别、依存句法分析等能力,内置预训练模型支持 70+ 语言,是生产环境 NLP 任务的标准选择