N-gram

将文本分割为 N 个连续字符或单词子序列的方法,用于搜索和文本相似度计算。

N-gram 是从文本中提取 N 个连续字符或单词子序列的方法。N=1 称为一元组 (unigram),N=2 称为二元组 (bigram),N=3 称为三元组 (trigram)。"你好世界"的字符二元组为"你好""好世""世界"。

N-gram 不需要形态素分析,适合与语言无关的文本搜索。Elasticsearch 和 Solr 等全文搜索引擎提供了 N-gram 分词器。全文搜索引擎书籍解释了 N-gram 索引的原理。

在文本相似度计算中,通过比较两段文本的 N-gram 集合重叠度 (如 Jaccard 系数) 来衡量相似性。N-gram 还用于拼写检查和模糊搜索。

N-gram 的缺点是 N 值较大时索引会非常庞大,且语义无关的子串可能会匹配。信息检索算法书籍深入介绍了 N-gram 理论。