N-gram 是从文本中提取的n个连续的项目(单词、字符或符号)序列。 在 NLP 中,它们最常用于通过将文本分解成更小的块来分析或建模文本。 例如,unigram (n=1) 是一个单独的词,如“猫”,bigram (n=2) 是一对词,如“黑猫”,而 trigram (n=3) 可能是“那只黑猫”。 N-gram 有助于捕捉文本中的局部模式,例如常见短语或单词之间的上下文关系。 它们计算简单,并且是许多 NLP 任务的基础构建块。
在实践中,n-gram 用于构建统计语言模型,以预测单词序列的可能性。 例如,bigram 模型计算给定单词的直接前导词的概率(例如,“黑猫”之后是“猫”)。 这些模型支持诸如自动完成、拼写校正和文本生成之类的应用程序。 N-gram 还在机器学习管道中充当特征。 将文本转换为数字数据时,词袋模型通常包括 n-gram 以保留一些上下文。 例如,在情感分析中,像“不好”或“非常高兴”这样的 bigram 可以通过编码单个单词可能遗漏的否定或强度来提高准确性。
一个具体的例子是训练垃圾邮件分类器。 通过从电子邮件中提取 n-gram(例如,“免费资金”作为 bigram),该模型学习哪些短语在垃圾邮件中比在合法邮件中更常见。 同样,搜索引擎使用 n-gram 进行查询建议——输入“如何”可能会触发像“如何烹饪”或“如何编程”这样的 trigram。 但是,较大的 n-gram(例如,n=4 或更高)可能导致稀疏数据,因为许多组合很少出现。 为了缓解这种情况,应用了诸如平滑或回退(在数据不足时使用较小的 n)之类的技术。 虽然 n-gram 缺乏深刻的语义理解,但它们的简单性和有效性使它们成为 NLP 工作流程中的主流。