文本去重
方法概述
文本去重(Text Deduplication)用于识别并去除数据集中重复或高度相似的文本记录,是数据清洗与语料预处理的关键环节。爬虫抓取、问卷开放题、评论留言等数据常存在大量重复或近义复制内容,若不处理将造成统计偏差并占用存储与计算资源。本工具提供精确匹配与多种相似度算法,支持单列/多列对比,输出干净数据及重复情况统计。
本工具核心能力:
- 多种去重方法:精确匹配、余弦相似度、Jaccard 相似度、编辑距离(Levenshtein)、Jaro-Winkler 相似度。
- 列内/跨列去重:可在单列内去重,也可在多列间综合判断重复。
- 灵活预处理:忽略大小写、忽略标点、忽略空白、文本长度范围过滤。
- 结果可视化:重复统计饼图、相似度分布直方图、文本长度分布。
方法原理
文本去重的核心是判定两条文本是否”重复”,关键在于将非结构化文本转换为可比较的数值特征。本工具按”预处理 → 特征表示 → 相似度计算 → 阈值判定”四个环节实现去重:
1. 文本预处理
比较前先将文本规范化:统一转小写、去除标点、合并多余空白、按长度范围过滤无效文本,消除格式差异造成的假性”不重复”。
2. 特征表示
- 精确匹配:直接用规范化后的原始文本做逐字节比较,只有完全相同才判为重复。
- 词袋/字符集表示:将文本转为词语或字符集合,用于余弦、Jaccard 等相似度计算。
3. 相似度计算
Jaccard 相似度:衡量两个集合的交集占并集的比例:
\[ J(A,B) = \frac{|A \cap B|}{|A \cup B|} \]
取值 0-1,值越大越相似,适合词语级比较。
余弦相似度:将文本映射为词频向量,计算两向量夹角余弦:
\[ \text{cos}(A,B) = \frac{A \cdot B}{\|A\| \cdot \|B\|} \]
对文本长度不敏感,适合长文本比较。
编辑距离(Levenshtein):从一条文本变为另一条所需的最少插入、删除、替换次数,越少越相似,适合发现仅个别字符不同的近似复制:
\[ D(i,j) = \min \begin{cases} D(i-1,j) + 1 \\ D(i,j-1) + 1 \\ D(i-1,j-1) + cost \end{cases} \]
Jaro-Winkler 相似度:基于字符匹配与顺序的一致性度量,对前缀相同的字符串可加分,适合人名、地名等较短的文本。
4. 阈值判定与分组
相似度高于设定阈值(默认 0.9)的两条文本被判为重复,被归入同一重复组;组内默认保留第一条,其余标记。最终输出干净数据集与重复统计。
使用流程
在平台左侧菜单选择“其他文本处理工具 → 文本去重”,点击“开始智算”进入工具界面:
Step 1 数据准备
- 支持 CSV、Excel、TXT 三种格式,文件大小不超过 10MB。
- CSV/Excel 为多列表格(默认取第一列);TXT 每行一条文本。
Step 2 去重设置
- 勾选需参与比较的数据列(可多选,默认第一列)。
- 确定去重模式:列内去重 / 跨列去重。
Step 3 算法选择
- 选择去重方法:精确匹配、余弦、Jaccard、编辑距离或 Jaro-Winkler。
- 相似度阈值(默认 0.9,范围 0.5-1);精确匹配无需阈值。
Step 4 预处理设置
- 选择是否忽略大小写、忽略标点、忽略空白。
- 设定最小/最大文本长度(默认 1/1000),过滤无效文本。
- 选择是否移除空文本、是否保留重复记录中的第一条。
Step 5 开始分析
点击“开始去重”按钮,工具自动完成预处理、相似度计算与分组去重。
Step 6 结果查看与下载
查看去重结果、重复统计、相似度分析等标签页,可下载完整结果(含多个工作表)、去重数据、重复数据与分析报告。
参数说明
| 参数 | 默认值 | 说明 |
|---|---|---|
| 数据列 | 第一列 | 参与去重比较的列(可多选) |
| 去重方法 | 精确匹配 | 精确 / 余弦 / Jaccard / 编辑距离 / Jaro-Winkler |
| 相似度阈值 | 0.9 | 高于阈值即判定为相似重复(0.5-1) |
| 去重模式 | 列内去重 | 列内去重 / 跨列去重 |
| 忽略大小写 | 否 | 比较前统一转小写 |
| 忽略标点 | 是 | 比较前去除标点字符 |
| 忽略空白 | 是 | 比较前合并多余空白 |
| 最小文本长度 | 1 | 短于该长度的文本不参与 |
| 最大文本长度 | 1000 | 长于该长度的文本不参与 |
| 移除空文本 | 是 | 过滤空记录 |
| 保留第一条 | 是 | 重复组保留首次出现的文本 |
案例分析
案例背景:某公司爬取了 2000 条用户评论,其中包含大量复制粘贴的重复内容,需清洗后用于情感分析。
- 数据:CSV 文件,单列评论文本。
- 参数:余弦相似度、阈值 0.9、忽略大小写与标点、移除空文本。
分析结果示例:
- 原始记录 2000 条;去重后保留 1320 条。
- 精确重复 480 条、近似重复 200 条(相似度 0.9-0.98)。
- 主要重复来源:同一用户的重复提交、营销号刷屏文案。
结论:去重有效消除了刷屏与重复样本,剩余数据更能反映真实用户观点,为下游情感与主题分析提供了干净语料。
常见问题
Q1: 精确匹配与相似度匹配怎么选?
A: 仅去除完全相同内容用“精确匹配”;需要剔除“仅改个别字符/标点”的近义复制时,选用余弦、Jaccard 等相似度方法并设置阈值。
Q2: 跨列去重有什么用?
A: 当同一记录分散在不同列(如标题列与正文列内容相同)时,跨列综合判断可避免仅在单列内处理而遗漏。
Q3: 阈值设置多少合适?
A: 默认 0.9 较保守;若希望过滤更多近似文本可降至 0.8,但需注意可能误删语义相关但内容不同的记录。建议先用直方图观察相似度分布再定。
Q4: 去重会丢失信息吗?
A: 重复组默认保留第一条,其余被标记。下载“重复数据”可人工复核,确认误判后可手动恢复。
平台功能
- 数据输入:支持 CSV、Excel、TXT 格式,多列可勾选;文件大小限制 10MB。
- 去重方法:精确、余弦、Jaccard、编辑距离、Jaro-Winkler 共 5 种,阈值可调。
- 预处理:忽略大小写/标点/空白、文本长度过滤、空文本移除。
- 结果展示:
- 去重结果(处理后的干净数据)
- 重复统计(统计表 + 饼图 + 重复详情表)
- 相似度分析(相似度分布直方图 + 文本长度分布)
- 结果导出:完整结果(Excel 多表)、去重数据、重复数据、分析报告(HTML)。
使用建议
先精确后相似:先用“精确匹配”快速去除完全相同项,再视需要改用相似度方法处理近似复制。
多看分布:利用相似度分布直方图判断数据整体重复程度,据此设定合理阈值。
复核再删:重要数据建议下载“重复数据”人工抽检,避免误删真实内容。
配合清洗:去重后紧接文本切分、分词等工具,形成完整的数据清理流水线。
保留溯源:下载完整结果保留原始与标记列,便于追溯每条记录的保留/删除原因。
平台界面

平台界面包含:数据上传区、去重设置区、算法选择区、预处理选项、结果展示(去重结果、重复统计、相似度分析)及下载区
参考文献:
Levenshtein, V. I. (1966). Binary Codes Capable of Correcting Deletions, Insertions and Reversals. Soviet Physics Doklady.
Winkler, W. E. (1990). String Comparator Metrics and Enhanced Decision Rules in the Fellegi-Sunter Model of Record Linkage.