文本相似度计算器

本地处理
  • 打赏支持
  • 分享链接
  • 反馈建议
不同算法关注的维度不同:编辑距离看字符层面的改动量,Dice 看相邻两字的共现情况(对中文最敏感),余弦看词频分布。综合看四个数值才能准确判断。
-
编辑距离
-
编辑相似度
-
Jaccard
-
Dice(二元组)
-
余弦相似度
算法计算口径相似度适用场景
编辑距离:把 A 改成 B 所需的最少单字符增删改次数;编辑相似度 = 1 − 编辑距离 ÷ 两文本长度较大者。Jaccard = 两文本字符集合交集 ÷ 并集。Dice(二元组) = 2 × 二元组交集数 ÷ 两组二元组总数。余弦 = 字符集合向量点积 ÷ 两向量模长之积(每个字符只计一次,即按去重后的字符集合计算)。

为什么需要多种算法

「这两段文本有多像」并没有唯一答案,取决于你在意什么。编辑距离关心改动量,适合判断两份文档是不是同一版本;Dice 与 Jaccard关心字词的共现,适合中文查重;余弦相似度关心用词分布的接近程度,对长度差异不敏感,适合判断主题是否一致。

各算法的性格

  • 编辑距离:对内容顺序与长度极敏感。改一个字就加 1,两段完全不同的长文本会得到很大的距离值,因此通常要换算成相似度百分比再看。
  • Jaccard(字符集合):只看字符有没有出现过,不看次数和顺序。对调换语序不敏感,适合粗筛。
  • Dice(二元组):把相邻两个字作为一个整体,所以对顺序敏感。中文查重最常用这个口径,两段话只要句子顺序变了,Dice 就会明显下降。
  • 余弦(词频):把文本看成字符频次向量,对长度不敏感——把同一段话复制三遍,余弦相似度仍然是 1。判断主题一致性最好用。

怎么解读结果

经验阈值:Dice 超过 0.8 基本可以判定为高度重复或同源;0.5 到 0.8 属于明显相关,可能是改写;低于 0.3 基本无关。余弦超过 0.9 说明用词分布几乎一致,但要警惕它可能被短文本拉高——两句话都很短时,用词重合度高是必然的。

常见问题

为什么余弦相似度比 Dice 高很多

因为余弦只看字符出现次数,忽略顺序;而 Dice 基于二元组,顺序一变就会丢分。两段话用词相同但语序调换,余弦可能接近 1 而 Dice 只有 0.6。判断「是不是抄的」应该以 Dice 为准,判断「是不是讲同一件事」用余弦更合适。

长文本计算会不会很慢

编辑距离的复杂度是两段文本长度的乘积,超过几千字会明显变慢甚至卡住浏览器。本工具对超过 2000 字符的输入会自动截断后再算编辑距离,其余三种算法不受影响。需要处理整本书级别的查重时,应改用 simhash 或最小哈希等近似算法。

你可能还想问

相似度是怎么算出来的?

常用做法是分词后统计词频向量,用余弦相似度衡量方向接近程度;同义词未被合并时,语义相近但用词不同的文本相似度会偏低。

多少算重复?

没有统一阈值:查重场景通常 80% 以上视为高相似,聚类场景 60%-70% 即可归为一类;应按业务目标标定,而非套用固定数字。

短文本比对准吗?

短句信息量少,任何微小差异都会显著影响得分;比对短文本建议结合关键词命中与语义模型,而不是只靠词频。