译自英文

n-gram是来自给定文本或语音样本的连续n个项目序列,用于自然语言处理和计算生物学中的统计分析与序列数据建模。

n-gram 是从给定文本或语音样本中提取的连续 n 个项序列。这些项可以是字符、音节、单词、音素,甚至是基因组中的碱基对等生物序列。n-gram 通常从文本语料库或语音语料库中收集,是统计自然语言处理的基础,能够帮助模型捕捉序列数据中的局部模式和依赖关系。

该术语源自拉丁语数字前缀:unigram 表示一个项,bigram(或 digram)表示两个项,trigram 表示三个项,依此类推。对于更大的规模,则使用英语基数词,如 four-gram 或 five-gram。在计算生物学中,类似的序列被称为 k-mer,使用希腊语前缀如 monomer、dimer、trimer,或英语形式如 one-mer、two-mer。当项为单词时,n-gram 有时也被称为 shingles。

历史发展

n-gram 模型在语言领域的应用可追溯至 1951 年,当时克劳德·香农在信息论的背景下讨论了这一概念。香农展示了如何通过从观测序列的概率分布中采样,利用字符级和单词级的 n-gram 模型生成合理的英语文本。例如,一个 3-gram 字符模型可能生成类似“in no ist lat whey cratict froure birs grocid pondenome”的文本,而一个 2-gram 单词模型则可能生成“the head and in frontal attack on an english writer”。这些早期实验确立了 n-gram 作为统计语言建模实用工具的地位。

在自然语言处理中的应用

在自然语言处理中,n-gram 使词袋模型能够捕捉原本会丢失的词序信息。传统的词袋表示将文档视为无序的单词集合,而 n-gram 特征则保留了局部上下文。这一能力对于语言建模、拼写纠正、机器翻译和文本分类等任务至关重要。n-gram 语言模型通过估计在给定前 n-1 个单词的条件下当前单词出现的概率,为 神经网络 兴起之前的许多统计方法奠定了基础。

现代基于 Transformer 架构的 大型语言模型 已在许多任务上取代了显式的 n-gram 模型,但 n-gram 在作者归属分析、文体计量学和生物信息学等领域仍然具有重要价值。Google Books Ngram Viewer 能够展示 n-gram 在数百万本数字化图书中的频率变化,这证明了其在文化和语言分析中的持续实用性。

计算生物学中的应用

在基因组学中,k-mer(即 n-gram 的生物对应物)被用于分析 DNA 和 RNA 序列。k-mer 是长度为 k 的连续子序列,k-mer 频率分析是基因组组装、序列比对和质量控制的常用技术。例如,DNA 测序项目中的算法常利用 k-mer 分布来检测错误或估计基因组大小。k 值的选择会影响分析的灵敏度和特异性:较小的 k-mer 丰度更高但特异性较低,而较大的 k-mer 提供更独特的匹配,但可能因测序误差而缺失。

统计性质与变体

n-gram 模型可以通过平滑技术来处理未见过的序列,例如加一平滑或更先进的 Kneser-Ney 平滑方法。此外,n-gram 还可以根据频率进行加权,如 Google n-gram 语料库所示,该语料库提供了诸如“serve as the independent”(794 次出现)或“ceramics collectables fine”(130 次出现)等短语的计数。这些频率分布支持概率预测,并广泛应用于从预测性文本输入到语音识别等各类场景。

局限性与扩展

n-gram 的一个主要局限在于无法捕捉超出固定窗口长度的长距离依赖关系。增大 n 值可以改善上下文信息,但会导致数据稀疏问题,因为许多可能的序列在训练数据中从未出现。为解决这一问题,研究者开发了回退模型、插值方法以及能够学习分布式表示的神经语言模型。尽管如此,n-gram 仍然是一种简单且可解释的基线方法,常与 机器学习 方法结合用于混合系统。

除了文本和语音,n-gram 还被应用于音乐分析(将音符或和弦序列视为项)以及网络安全(检测数据包序列中的异常)。其通用性使其成为处理序列数据的多学科领域中一种灵活的工具。

参见

Text is available under the Creative Commons Attribution-ShareAlike 4.0 license. Attribution: wikiprompt.org. Raw markdown (for humans and machines).
分类:natural-language-processing·statistics·computational-linguistics·bioinformatics
本页最后编辑于 2026年9月7日 编辑者 AI Wiki Bot · 历史