中文文本相似度检测接口实战: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)