数据集中常存在错别字、标点差异、空白字符差异等微小变化导致的准重复记录。dedup-fuzzy 节点通过 SimHash 指纹比较文本的字面相似度,将相似度超过阈值的记录归为一簇,每簇仅保留文本最长的一条。
适用场景
dedup-fuzzy 节点对指定字段进行近似匹配去重,能识别以下类型的准重复数据:
错别字、标点变化、空白字符差异等微小文字差异。
模板化生成的相似文本(如提示词微调产生的近似输出)。
爬虫或采集管道中因格式差异导致的准重复数据。
节点配置
以下为 dedup-fuzzy 节点的基本配置结构:
{
"id": "node_1",
"type": "dedup-fuzzy",
"parameters": {
"field": "<字段名>",
"threshold": "<阈值>",
"output": "<输出列列表>",
"global": true,
"workspace": "<工作空间>",
"dataset": "<数据集>"
}
}参数说明
参数 | 类型 | 必填 | 默认值 | 说明 |
| String | 是 | - | 去重依据的字段名,须为文本类型。 |
| String | 否 |
| 相似度阈值(非负整数字符串),数值越小越严格。详见阈值选择建议。 |
| String | 否 |
| 节点输出列,多列时使用逗号分隔。 |
| Boolean | 否 |
| 是否开启全局去重。开启后将与 Dataset 历史数据做近似比对。 |
| String | 条件必填 | - | Dataset 所在工作空间。当 |
| String | 条件必填 | - | Dataset 名称。当 |
阈值选择建议
阈值 | 严格程度 | 说明 |
| 精确匹配 | 等同于 dedup-exact。 |
| 非常严格 | 仅过滤个别字符差异。 |
| 推荐默认 | 适合大多数文本去重场景。 |
| 较宽松 | 可能误删有意义差异的文本,慎用。 |
输入和输出
输入要求
上游节点输出的任意列数据。
要求包含
field指定的字段,且为文本类型。
输出列
列名 | 类型 | 来源 | 说明 |
| - | 透传/新增 |
|
| bigint | 新增 | 文本指纹值。 |
| integer | 新增 | 文本长度。 |
| integer | 新增 | 簇内排名(去重后恒为 1)。 |
行数变化
M -> N(M >= N)。相似文本归为一簇,每簇保留一条,输出行数小于或等于输入行数。
效果预览
处理前(5 条):
question | input | output |
什么是机器学习? | 请解释 | 机器学习是... |
什么是机器学习呢? | 请详细说 | 机器学习(Machine Learning)是... |
如何学习Python? | 入门 | 推荐从官方教程... |
怎么学习Python? | 指南 | 建议先学基础语法... |
什么是深度学习? | 简述 | 深度学习是机器学习的子集... |
处理后(3 条)-- field = "question",threshold = "3":
question | input | output | __dedup_hash | __dedup_weight | __dedup_rnk |
什么是机器学习呢? | 请详细说 | 机器学习(Machine Learning)是... | 8832749102 | 10 | 1 |
如何学习Python? | 入门 | 推荐从官方教程... | 5561023847 | 8 | 1 |
什么是深度学习? | 简述 | 深度学习是机器学习的子集... | 3347891256 | 7 | 1 |
"什么是机器学习?"与"什么是机器学习呢?"文本高度相似(指纹距离 <= 3),归为一簇保留最长者;"如何/怎么学习Python?"同理。5 条数据最终输出 3 条。
使用示例
批内近似去重(默认阈值)
使用默认阈值 "3" 对 question 字段做近似去重。
{
"id": "n3",
"type": "dedup-fuzzy",
"parameters": {
"field": "question"
}
}调整阈值过滤更多近似文本
放宽阈值到 5,过滤更多近似文本。
{
"id": "n3",
"type": "dedup-fuzzy",
"parameters": {
"field": "question",
"threshold": "5"
}
}全局近似去重
跨批次全局去重,与 Dataset 历史数据做近似比对。
{
"id": "n3",
"type": "dedup-fuzzy",
"parameters": {
"field": "question",
"threshold": "3",
"global": true,
"workspace": "my-ws",
"dataset": "my-ds"
}
}管道组合(精确去重 + 近似去重)
建议将 dedup-exact 放在 dedup-fuzzy 之前,先精确去重消除完全重复,再做近似去重消除微小差异,减少 SimHash 计算量。
{
"nodes": [
{ "id": "n1", "type": "project", "parameters": { "question": "a", "input": "b" } },
{ "id": "n2", "type": "dedup-exact", "parameters": { "field": "question" } },
{ "id": "n3", "type": "dedup-fuzzy", "parameters": { "field": "question", "threshold": "3", "global": true, "workspace": "my-ws", "dataset": "my-ds" } }
]
}使用建议与边界行为
使用建议:
建议在 dedup-exact 之后使用,先消除完全重复,再做近似去重,减少 SimHash 计算量。
推荐管道顺序:dedup-exact -> dedup-fuzzy -> dedup-semantic。
全局去重适用于跨批次增量入库场景。
字段值为 NULL 的行不参与去重且不出现在输出中。
边界与异常行为
场景 | 行为 |
| 校验失败。 |
| 校验失败。 |
| 所有记录归为同一簇,仅保留一条。 |
| 校验失败。 |
| 该行不参与去重,不出现在输出中。 |
输入数据为空 | 正常返回空结果集。 |