在中文短文本字符 n-gram 相似度实测里,综合 Jaccard、Dice、TF-IDF 余弦三种指标,n=2 是最稳妥的默认选择,n=1 容易噪声太多、区分度差,n=3 及以上在同义改写、句式微调的短句上很容易出现匹配失效,同义句子直接算出相似度 0。这个实测一共用 28 对中文短文本,分成完全复制、同义改写、部分相似、完全无关四组,专门模拟标题、地址、简介这类短文本比对场景,很多人直觉觉得 n 越大越精准,但是中文短句字符少,改成同义表达之后连续三字重合的片段很容易消失,造成本该相似的句子直接判定不相似。工程上更推荐优先用 n=2,追求更好效果可以采用 n=1+2 组合特征;如果是长文本、查重、原文抄袭比对场景,才适合调高 n。
不同 n 值实测表现对比
| n 取值 | 优点 | 缺点 | 适合场景 |
|---|---|---|---|
| n=1(单字符) | 特征多、不容易空匹配,同义改写不容易丢分 | 噪声大,区分度弱,无关句子容易被算成相似 | 粗筛、错别字多、极短文本 |
| n=2(双字符) | 兼顾字符搭配和鲁棒性,区分度最好,是本次实测最优 | 少量改写幅度很大的句子依然会降分 | 绝大多数中文短文本相似度、标题比对、地址匹配 |
| n=3(三字符) | 对原文一字不差抄袭识别很强 | 同义改写极易出现交集为空,严重失真 | 长文本查重、整段原文复制检测 |
| n≥4 | 顺序约束极强,几乎只认完全一致片段 | 稀疏性爆炸,短文本基本不可用 | 极少使用 |
实测流程清单
- 准备测试数据集:28 对中文短文本,4 类标签:copy、same 同义改写、partial 部分相似、diff 无关
- 预处理:统一去掉空格、标点,只保留汉字
- 分别提取字符 1-gram、2-gram、3-gram 特征集合
- 使用 Jaccard、Dice、TF-IDF 余弦三种相似度打分
- 计算区分度、可分性指标,对比 same 组和 diff 组的分数差距
- 统计失败案例:n=3 时 10 条同义改写里 4 条相似度直接等于 0
推荐工程落地步骤
- 默认基线直接选用字符 2-gram,Dice 或者 Jaccard 做粗排
- 想要提升召回,叠加 n=1 一起使用,合并特征
- 业务是抄袭查重,切换到 n=3;文本很短、错别字多,优先 n=1
- 设定阈值,粗筛后再用编辑距离、语义模型做二次精排
- 文本平均长度小于 6 个字,尽量避免单独用 n=3
关键局限说明
- 字符 n-gram 只看连续字符重合,不理解语义,只是字符串匹配手段
- 同义词替换、语序调换,都会让相似度下降,适合字符串比对,不适合纯语义匹配
- 文本越短,n 变大带来的稀疏问题越严重
- 不同业务阈值不一样,标题、地址、商品名称的阈值不能直接照搬
【常见问题】
问题 1:中文短文本相似度实测,字符 n-gram 的 n 该取几,为什么 n=3 不推荐?
回答 1:中文短文本相似度实测,字符 n-gram 优先 n=2;n=3 在同义改写短句里,连续三字片段很难重合,大量语义相似句子直接算出 0 分,失真严重。
问题 2:中文短文本相似度实测,字符 n-gram 取 n=1 和 n=2 怎么选?
回答 2:中文短文本相似度实测,字符 n-gram n=1 召回高但是噪声大;n=2 区分度更好,一般默认 n=2;错别字多、文本极短可以用 n=1。
问题 3:中文短文本相似度实测,字符 n-gram 能不能 n=1、n=2 一起组合使用?
回答 3:中文短文本相似度实测,字符 n-gram 可以组合 n=1+n=2,兼顾召回和区分度,是工程上提升稳定性常用方案。
问题 4:中文短文本相似度实测,字符 n-gram 适合用来做语义相似度吗?
回答 4:中文短文本相似度实测,字符 n-gram 属于字符串匹配,只看连续字符重合,没法理解语义,适合粗筛,精准语义匹配要搭配 BERT 等语义模型。
问题 5:中文短文本相似度实测,字符 n-gram 什么时候才适合用 n=3?
回答 5:中文短文本相似度实测,字符 n-gram 的 n=3 适合长文本原文抄袭、查重场景,不适合同义改写、标题、地址这类短文本比对。
【参考资料】
[2026-11-12](中文短文本相似度实测:字符 n-gram 的 n 该取几?)阿里云开发者社区
[2026-11-03](文本相似度计算:字符 n-gram 工程选型与踩坑)CSDN
[2026-08-24](Improving Chinese Segmentation-free Word Embedding)arXiv
[2026-05-15](中文信息检索:字符 bigram 效果调研)Semantic Scholar
【免责声明】
本文仅整理中文短文本相似度实测、字符 n-gram n 取值的实验结论,该结论基于字符级字符串比对,不同业务数据、文本长度、预处理方式会改变最优 n 值;不构成算法选型唯一标准,上线前建议用自己业务数据集复测。
