文本去重

方法概述

文本去重(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)。

使用建议

  1. 先精确后相似:先用“精确匹配”快速去除完全相同项,再视需要改用相似度方法处理近似复制。

  2. 多看分布:利用相似度分布直方图判断数据整体重复程度,据此设定合理阈值。

  3. 复核再删:重要数据建议下载“重复数据”人工抽检,避免误删真实内容。

  4. 配合清洗:去重后紧接文本切分、分词等工具,形成完整的数据清理流水线。

  5. 保留溯源:下载完整结果保留原始与标记列,便于追溯每条记录的保留/删除原因。

平台界面

官方地址:https://superr.online

文本去重工具界面预览

平台界面包含:数据上传区、去重设置区、算法选择区、预处理选项、结果展示(去重结果、重复统计、相似度分析)及下载区


参考文献

  1. Levenshtein, V. I. (1966). Binary Codes Capable of Correcting Deletions, Insertions and Reversals. Soviet Physics Doklady.

  2. Winkler, W. E. (1990). String Comparator Metrics and Enhanced Decision Rules in the Fellegi-Sunter Model of Record Linkage.