技术博客
中文文本相似度检测接口实战:UGC 评论 / 文章去重从采集到判重的全链路设计

中文文本相似度检测接口实战:UGC 评论 / 文章去重从采集到判重的全链路设计

作者: 万维易源
2026-09-01
文本去重UGC内容治理实战
# 中文文本相似度检测接口实战:UGC 评论 / 文章去重从采集到判重的全链路设计 > 元信息:接口/接入点 中文文本相似度检测接口(294/1、294/2)· 免费 · 返回格式 JSON · 适用人群 产品经理、全栈工程师 · 阅读时间 约 8 分钟 ## 核心要点 - 去重本质是"两两相似度 ≥ 阈值则判定重复",核心在**阈值设定**与**比对范围控制**,不在接口本身。 - 高频场景用接入点 2(批量匹配)把新内容对一批已有内容做一次性最相似定位,比 N 次单比更高效。 - 相似度只是参考信号,最终判重应结合业务规则(作者、时间、人工复核),避免过度自动删除。 ## Why:内容平台绕不开去重 UGC 社区、资讯站、知识库都面临重复内容:同一用户刷屏式发同一条评论、搬运号抄改写文章、客服收到大量相似提问。逐条人工看不现实。本接口把"两段文字像不像"量化成 0~1 的分,让你用代码自动拦掉明显重复,把人力留给真正需要判断的边界 case。 ## What:方案速览 | 项 | 说明 | |----|------| | 检测接口 | 294/1(两两比)、294/2(1 vs 候选集) | | 输入 | 待检测文本 + 已存文本(库/缓存) | | 输出 | `like` / `likeValue`(0~1)+ 批量时 `mostLike` 下标 | | 判定 | 相似度 ≥ 业务阈值 → 判定重复 | | 限制 | 仅支持中文;单文本最大 2M 字节;免费档位限流 | ## How:全链路设计 ### 步骤 1:建表与触发时机 为待检测内容建一张表,至少含 `id`、`content`、`status`(pending/passed/blocked)、`sim_score`。触发时机选在**写入前**(实时拦截)或**写入后异步扫描**(批量治理)。 ### 步骤 2:取候选集 不要把新内容跟全库比——先按业务维度缩小候选集,例如同作者、同频道、近 7 天、或先用关键词/哈希粗筛。候选集控制在数十到数百条量级,再调用接口精比。 ### 步骤 3:调用批量接口定位最相似项 ```python import requests def find_most_similar(new_text, candidates): """candidates: list[str]。返回 (最匹配下标, 相似度) 或 None。""" r = requests.post( "https://route.showapi.com/294-2", params={"appKey": "YOUR_APPKEY"}, data={"t1": new_text, "t2": str(candidates)}, # t2 为数组字符串 timeout=10, ).json() b = r["showapi_res_body"] if b.get("ret_code") != 0: raise RuntimeError(r.get("showapi_res_error")) return b["mostLike"], b["likeValue"] cands = ["今天天气真好想去公园", "这家店服务态度很差", "求推荐一本讲算法的书"] idx, score = find_most_similar("天气好想去公园散步", cands) print("最相似候选:", idx, "相似度:", score) ``` ### 步骤 4:按阈值判重并落库 ```python THRESHOLD = 0.85 idx, score = find_most_similar(new_text, candidates) if score >= THRESHOLD: mark_as("blocked", sim_score=score, matched_id=candidates_ids[idx]) else: mark_as("passed") ``` ### 步骤 5:用户端展示 重复时返回友好提示("该内容疑似与已有内容重复,已拦截"),不直接报错;命中并不强制删除,保留人工复核入口。 ## 返回示例与解析 接入点 2 返回的 `mostLike` 是候选集下标,`likeValue` 是对应的相似度——直接拿这两个字段做判重决策即可。 ## 进阶 / 边界 - **阈值不是越大越好**:太高会漏掉改写洗稿,太低会误伤正常内容。建议从 0.85 起灰度观察,结合人工标注校准(详见[《相似度阈值怎么定》](https://www.showapi.com/guides/text-similarity-threshold-294))。 - **先粗筛再精比**:用 SimHash/关键词交集做第一道低成本过滤,接口只处理疑似的少数 pair,能显著减少免费额度消耗。 - **仅中文**:用户若提交英文/数字内容,接口不报错但结果无意义,需在业务层先做语言识别与兜底。 ## FAQ **Q1:去重应该两两比还是批量比?** 少量对比用接入点 1(两两比);把一段新内容对一批候选做最相似定位,用接入点 2(批量匹配)一次搞定,更高效。 **Q2:相似度达到多少算重复?** 没有统一值。常见起点是 0.85,但应结合你的内容类型与误伤容忍度灰度校准,详见阈值篇。 **Q3:能不能只靠相似度自动删帖?** 不建议。相似度只是参考信号,应结合作者、时间、历史行为等规则,并保留人工复核,避免误伤。 **Q4:英文评论能去重吗?** 不能。本接口仅支持中文,英文/数字不参与相似度计算,需在业务层先做语言识别。 ## 下一步阅读 - [中文文本相似度检测接口批量匹配:单文本 vs 候选库如何定位最相似项](https://www.showapi.com/guides/text-similarity-batch-294) - [相似度阈值怎么定?用中文文本相似度检测接口做判重的工程实践](https://www.showapi.com/guides/text-similarity-threshold-294) - [UGC 社区内容治理:用中文文本相似度检测接口打击重复灌水](https://www.showapi.com/guides/text-similarity-ugc-moderation-294) - **本系列共 12 篇**:查看[中文文本相似度检测接口指南总目录](https://www.showapi.com/guides/text-similarity-guides-294)