1. 引言

在本文中,我们将解释一个在自然语言处理(NLP)中常见的概念:n-gram。这个概念是大多数 NLP 课程和讲座都会涵盖的基础知识点。不仅如此,数据科学家、机器学习工程师以及开发者也常常在他们的 NLP 项目中使用 n-gram。

除了给出定义,我们还会介绍它在实际项目中的典型应用场景。


2. 自然语言处理(NLP)

自然语言处理(Natural Language Processing, NLP)是人工智能的一个分支,专注于计算机与人类语言之间的交互。✅它的目标是让计算机具备理解人类语言的能力,就像人类之间交流那样。

NLP 涉及多种子领域,从语言语义研究到统计机器翻译、语音识别、问答系统等都有涵盖。一些常见的 NLP 任务包括:

  • 垃圾邮件过滤
  • 情感分析
  • 机器翻译
  • 文本摘要
  • 语音识别
  • 聊天机器人
  • 命名实体识别(NER)

这些任务虽然目标不同,但都依赖于各种算法和模型来实现。NLP 的发展也得益于硬件和软件技术的进步。


3. NLP 是如何工作的?

计算机本质上并不擅长理解自然语言。因此,我们需要将文本转换为数字形式,才能进行数学处理。即使如此,计算机也只能识别词语及其顺序,而无法真正“理解”其含义。

当然,现在也有一些复杂的基于 Transformer 的系统(如 LaMDA)可以与人类进行对话,但它们需要大量数据和训练时间。而且,即使输出看起来“有逻辑”,也只是基于统计模型的预测,而非真正理解。

3.1 NLP 系统开发流程

NLP 系统的核心步骤之一是文本预处理。这个阶段通常包括以下操作:

  • 文本清洗:转小写、去除 HTML 标签、特殊符号、数字等无意义内容
  • 停用词移除:去掉一些常见但无实际意义的词,如 "the"、"is" 等
  • 词干提取(Stemming)与词形还原(Lemmatization):将词还原为基本形式
  • 分词(Tokenization):将文本切分为词、字符或其组合

完成预处理后,接下来是将文本转换为计算机可理解的向量形式,即所谓的词嵌入(Word Embedding)。常见方法包括:

  • One-hot 编码
  • TF-IDF
  • Word2Vec

此外,除了单个词(unigram),我们还可以将连续的多个词组合起来,形成 n-gram,用于更复杂的语言建模。


4. 什么是 N-Gram?

一句话总结:n-gram 是从一段文本中提取出的连续 N 个词或字符组成的序列。

举个例子,假设我们有句子:

The quick brown fox jumps over the lazy dog.

如果我们提取所有 5-gram(即 N=5),那么结果如下:

  • The quick brown fox jumps
  • quick brown fox jumps over
  • brown fox jumps over the
  • fox jumps over the lazy
  • jumps over the lazy dog

一个包含 K 个词的句子中,可以提取的 n-gram 数量为:

(1)   \begin{align*} \text{N-Grams}_{K} = K - (N - 1). \end{align*}

在实际应用中,最常见的 n-gram 是:

  • 1-gram(unigram)
  • 2-gram(bigram)
  • 3-gram(trigram)

⚠️ 虽然 n-gram 概念简单,但在文本挖掘和 NLP 中用途广泛。

4.1 Skip-gram(跳字模型)

skip-gram 是 n-gram 的一种变体,允许词之间有“跳跃”间隔。例如,2-skip-2-gram 会每隔一个词选取一个词,组成一个两词序列。

Skip-gram 在语言建模中常用于降低困惑度(perplexity),也是 Word2Vec 中的一个关键技术。


5. N-Gram 的应用场景

n-gram 最常见的用途之一是构建基于词频的概率模型。比如,如果我们要预测“United”之后最可能的词,很可能是“States”,因为在大量语料中,“United States”是一个高频 bigram。

基于这个逻辑,我们可以构建自动补全系统,比如 Gmail 或 Google Docs 中的智能提示功能。

除此之外,n-gram 还可以用于:

  • 拼写纠错
  • 文本摘要
  • 词性标注(POS tagging)

✅举个例子:情感分析中的 n-gram 差异

考虑以下两句话:

No, this service is good.
This service is no good.

如果使用 unigram,两句话的词向量几乎一样,模型可能无法区分情感差异。但使用 bigram 后,就能识别出:

  • “No, this” vs “no good”
  • 从而更好地区分否定语气

这说明,n-gram 能捕捉词语之间的顺序关系,提升模型表现力。

⚠️ 注意:n-gram 也存在局限性,比如随着 N 增大,数据稀疏性问题会加剧,模型复杂度上升。

其他应用

除了文本处理,n-gram 还可用于:

  • 分析蛋白质序列
  • DNA 序列分析

这些领域也利用了 n-gram 对序列建模的能力。


6. 总结

本文我们介绍了 NLP 的基本概念及其工作流程,重点讲解了 n-gram 的定义及其在实际中的应用。无论是构建语言模型、情感分析还是自动补全系统,n-gram 都是一个基础但非常实用的工具。

✅如果你是 NLP 开发者,掌握 n-gram 的原理和使用方法,是构建高质量文本模型的第一步。


原始标题:What Exactly Is an N-Gram?