返回教程列表
文本分析基础教程文本去重重复合并语义相似度

重复内容合并完整教程:从相似度阈值与传递闭包,到代表文本的选取和逐条合并方案

三千条客服投诉里,同一个诉求被不同的人说了几十遍,怎样按意思把它们归成组、每组留一条代表?这篇教程从记录链接的经典框架讲起,说明 TATOOLS 的【重复内容合并】怎样用语义相似度判断两条内容是否重复,合并严格度怎样在精确率和召回率之间取舍,重复关系怎样按传递闭包连成组。文中用四条内容手算中心点,选出和其余各条平均相似度最高的保留项,再算出建议归并和合并后剩余的条数。最后讲合并方案表格怎样筛选和汇总,报告怎样读,并给出论文数据清洗部分的写法示例。

作者:TATOOLS 研究团队|更新于 2026-09-24|4434 个字符|约 15 分钟读完
duplicate-content-merge
立即使用

三千条客服投诉记录导出来,准备按诉求分类。读了几百条就发现,同一个问题被不同的人用不同的话说了几十遍,快递三天没动静,物流一直不更新,下单一周了还没发货。要统计有多少种诉求、每种诉求有多少人提,得先把说的是同一件事的记录归到一起,每组留一条代表,再记下这一组有多少条。

TATOOLS 的【重复内容合并】专门做这件事。【上传文档】以后,TATOOLS 按意思两两比较每一条内容,把高度接近的归成一组,每组挑出和其余各条都最接近的一条作为保留项,其余标记为并入它,产出一份逐条的合并方案,写明哪条留下,哪些并进去,每组多少条,组内相似度多高,以及照此合并后总条数会减少多少。

合并只给出方案,原文一个字都不改,也不删除。这篇教程讲判定重复的阈值和严格度,相似的内容怎样连成组,保留哪一条、为什么是它,合并方案怎样读、怎样用,最后讲论文里的写法。

01

合并要解决什么问题

在数据管理领域,把指向同一对象的多条记录找出来合并,叫重复记录检测或记录链接。Fellegi 和 Sunter 1969 年为它建立了统计框架,给每一对记录打一个相似度分数,高于上限的判为匹配,低于下限的判为不匹配,中间的交给人工复核。Elmagarmid、Ipeirotis 和 Verykios 2007 年的综述把此后几十年的方法归纳为两步,先判断两条记录是否重复,再把重复关系汇总成组。

文本材料里的重复比数据库记录更难认,同一个意思可以有很多种说法。TATOOLS 的【重复内容合并】用语义向量的余弦相似度判断两条内容是否重复,再把重复关系汇总成组,每组指定一条保留项。它和【文本相似度去重雷达】用的是同一套语义比对,区别在于这里的产出是一份可以直接执行的合并方案。

合并还有一层用处。每组的条数本身就是一个重要的数,问卷里一条诉求有 30 个人用不同的话说了一遍,合并以后留下一条代表,同时记下 30 这个数,分析时这条诉求的分量就不会被低估,也不会因为重复计数被高估。

02

两条内容算不算重复

TATOOLS 把每一条内容变成一个语义向量,两两计算余弦相似度,达到阈值的两条算作重复。余弦相似度越接近 1,两条内容的意思越接近。

工具页的【合并严格度】有三档,档位越高,阈值越高。

严格度 阈值大致在 适合
宽松 0.7 出头 先粗略整理大量反馈,宁可多并
标准 0.8 多 一般的去重合并
严格 0.9 以上 只合并几乎一样的内容

【文本来源】会在这个基础上再微调一两个百分点,问卷和社媒的短句口语多,阈值略放宽;文档段落措辞规整,阈值略收紧。最后实际使用的阈值写在报告的【有效判定阈值】里。

阈值高低是一对取舍。设一批材料里真正重复的有 100 对。

严格度 判为重复 其中真重复 精确率 召回率
宽松 130 对 95 对 95 ÷ 130 ≈ 73% 95 ÷ 100 = 95%
严格 60 对 58 对 58 ÷ 60 ≈ 97% 58 ÷ 100 = 58%

宽松档找得全,但会把只是话题相近的内容也并进来;严格档并进来的几乎都对,但漏掉不少换了说法的重复。先用标准档跑一遍,看合并方案里有没有并错的组,再决定往哪边调。

03

从一对对到一组组

两两比较得到的是一对一对的重复。合并需要的是组,把有重复关系的内容连在一起,连得上的都归为同一组。数学上这叫求传递闭包,A 和 B 重复、B 和 C 重复,那么 A、B、C 就是一组。统计上它等价于单连接聚类,Gower 和 Ross 1969 年讨论过它和最小生成树的关系;计算上用并查集逐步合并,Tarjan 1975 年分析过它的效率。

· · ·

标准档,有效阈值 0.82

A–B 0.86 B–C 0.85 A–C 0.70

A 和 C 没到阈值,但都和 B 相连

结果:{A, B, C} 一组

传递会把改动一点点累积起来的内容串在一起,这正是合并想要的,同一句话被转述了好几手,也能归到一起。它的代价是链条可能拉得太长,首尾两条已经不太像了。

· · ·

同样三条,改用严格档,有效阈值 0.93

A–B 0.86 没到阈值

B–C 0.85 没到阈值

结果:三条各自独立,不成组

某一组看起来混进了不该在一起的内容,把严格度调高一档,长链条就会断开。

【最小成组数量】决定几条相似内容才算一组,默认 2,最多 8。设成 3 以后,只有两条互相重复的内容不单独成组,但这一对仍会出现在报告的【合并依据文本对】里。

04

保留哪一条

一组里要留下一条代表。一种办法是算出组内所有向量的平均值,叫质心,但质心不对应任何一条真实的内容。另一种办法是在组内挑一条真实存在的内容,让它到其余各条的总距离最小,这叫中心点(Medoid),Kaufman 和 Rousseeuw 在他们的聚类教材里用它作为围绕中心点划分(PAM)方法的核心。

TATOOLS 采用中心点的思路,挑和组内其余各条平均相似度最高的那一条作为保留项,留下的永远是一条原文。

· · ·

一组四条,两两相似度

A–B 0.92 A–C 0.88 A–D 0.86

B–C 0.90 B–D 0.87 C–D 0.85

A (0.92 + 0.88 + 0.86) ÷ 4 = 0.665

B (0.92 + 0.90 + 0.87) ÷ 4 ≈ 0.673

C (0.88 + 0.90 + 0.85) ÷ 4 ≈ 0.658

D (0.86 + 0.87 + 0.85) ÷ 4 = 0.645

保留 B,A、C、D 并入 B

除以 4 是因为自己和自己的相似度记作 0 也算在内,只影响数值大小,不影响谁排第一。B 和其余三条都很接近,最能代表这一组的共同意思。这一组的平均相似度是六对相似度的平均,(0.92 + 0.88 + 0.86 + 0.90 + 0.87 + 0.85) ÷ 6 = 0.88,最高相似度是 0.92。

05

合并方案

每一组都得到一条明确的处理意见。

记录 处理 并入
B 保留 本组代表文本
A 并入 B
C 并入 B
D 并入 B

合并以后减少多少条,是每组的条数减一再加起来。

· · ·

有效内容 200 条,形成 4 组,每组 5、3、2、2 条

建议归并 = 4 + 2 + 1 + 1 = 8 条

合并后剩余 = 200 − 8 = 192 条

压缩比例 = 8 ÷ 200 = 4%

报告顶部的概览写明【合并组数量】【建议归并】【合并后剩余】和【可合并记录占比】。【合并方案】为每组写明保留哪一条,给出它的编号和出处,列出并入的条数和平均相似度,附上代表文本,以及并入成员的编号和出处。每条内容都有一个 R 开头的编号,按上传顺序排列,方便回到原文核对。

下载的合并方案表格里,每条内容一行,处理一栏写着保留或并入,同一行还有保留记录的编号和原文、这条内容自己的原文。按处理一栏筛出保留的行,就是合并后的结果;按组编号汇总,就得到每条代表内容背后有多少条原始记录。

06

合并单位和文本来源

【合并单位】决定什么算一条内容。按行合并,一行就是一条,适合问卷答案和客服记录这类一行一条的材料;按段落合并,用空行隔开的一段是一条,适合长文和报告里的重复段落。空行跳过,网址和纯数字串先被过滤掉,太短的内容也是。上传多个文件时,所有文件的内容放在一起比较,每条都记着来自哪个文件的第几行。

整份材料不足两条有效内容时,比如整篇文章写在一行里,TATOOLS 会按【自动分段窗口】设定的字数,优先在句末标点处把它切成句段再合并,行号记作第几行的第几段。

【文本来源】有问卷/反馈、文档/段落、客服/投诉、社媒/帖子四类,除了微调阈值,还决定太短的内容怎样过滤、太长的内容截到多长。

07

工具页上的设置一览

设置 选项或范围 默认 影响什么
合并单位 按行合并,按段落合并 按行合并 什么算一条内容
自动分段窗口 50 到 400 字 180 缺少分行时切句段的长度
合并严格度 宽松,标准,严格 标准 多相似才算重复
最小成组数量 2 到 8 条 2 几条才算一组
文本来源 问卷/反馈,文档/段落,客服/投诉,社媒/帖子 问卷/反馈 过滤长度和阈值微调

08

报告怎么读

区块 先看什么
这份结果说明了什么 合并组数、建议归并和剩余条数
重复内容合并概览 有效内容、有效判定阈值、压缩比例
合并方案 每组保留哪条、并入哪些
重复模式雷达图 哪几组重复强、范围大、跨文件
相似聚类详情 每组的代表原文和高频词
合并依据文本对 成对的原文和相似度

读的顺序是先看概览里合并以后剩多少条,再逐组看合并方案,重点检查条数多、平均相似度偏低的组有没有并错,最后在合并依据文本对里核对拿不准的几对。结果可以下载,包括合并方案和每组的全部成员,以及达到阈值的文本对。

09

把结果写进论文

合并通常放在方法部分的数据清洗里。下面是一段写法示例,方括号里换成自己的数字。

为合并语义重复的表达,本研究使用 TATOOLS 的重复内容合并,以语义向量的余弦相似度两两比较 [条数] 条有效记录,相似度不低于 [阈值] 的记录视为重复,按传递关系归组,每组保留与组内其余记录平均相似度最高的一条作为代表。共形成 [组数] 个合并组,归并 [条数] 条记录,合并后保留 [条数] 条进入后续分析,各代表记录以所在组的条数作为权重。

写明严格度和有效阈值,附上一两组合并前后的原文,读者就能判断合并的尺度是否合适。

10

小结

重复内容合并先判断两条内容是否重复,再把重复关系汇总成组,这是记录链接的经典两步。

合并严格度越高,阈值越高,并进来的越准,漏掉的也越多,实际阈值写在报告里。

重复关系按传递闭包连成组,严格度调高可以打断过长的链条,最小成组数量决定几条才算一组。

每组保留和其余各条平均相似度最高的那条原文,这是中心点的思路。

合并方案逐条写明保留或并入,合并后剩余条数等于有效条数减去每组条数减一之和,原文不做任何改动。

合并以前想先看重复集中在哪里,可以用 TATOOLS 的【文本相似度去重雷达】;想先把空洞、刷屏的内容筛掉,用【信息价值评估】;合并以后想按意思把代表内容分成几类,用【高级文本聚类】。

11

资料来源

Fellegi 与 Sunter:A Theory for Record Linkage,Journal of the American Statistical Association,第 64 卷第 328 期,1969

Elmagarmid、Ipeirotis 与 Verykios:Duplicate Record Detection: A Survey,IEEE Transactions on Knowledge and Data Engineering,第 19 卷第 1 期,2007

Kaufman 与 Rousseeuw:Finding Groups in Data: An Introduction to Cluster Analysis,Wiley,1990

Gower 与 Ross:Minimum Spanning Trees and Single Linkage Cluster Analysis,Journal of the Royal Statistical Society Series C,第 18 卷第 1 期,1969

Tarjan:Efficiency of a Good But Not Linear Set Union Algorithm,Journal of the ACM,第 22 卷第 2 期,1975

Reimers 与 Gurevych:Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks,Proceedings of EMNLP-IJCNLP,2019


END