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)
在实际应用中,最常见的 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 的原理和使用方法,是构建高质量文本模型的第一步。