全部產品
Search
文件中心

Cloud Monitor:dedup-fuzzy(近似去重)

更新時間:May 01, 2026

資料集中常存在錯別字、標點差異、空白字元差異等微小變化導致的准重複記錄。dedup-fuzzy 節點通過 SimHash 指紋比較文本的字面相似性,將相似性超過閾值的記錄歸為一簇,每簇僅保留文本最長的一條。

適用情境

dedup-fuzzy 節點對指定欄位進行近似匹配去重,能識別以下類型的准重複資料:

  • 錯別字、標點變化、空白字元差異等微小文字差異。

  • 模板化產生的相似文本(如提示詞微調產生的近似輸出)。

  • 爬蟲或採集管道中因格式差異導致的准重複資料。

節點配置

以下為 dedup-fuzzy 節點的基本配置結構:

{
  "id": "node_1",
  "type": "dedup-fuzzy",
  "parameters": {
    "field": "<欄位名>",
    "threshold": "<閾值>",
    "output": "<輸出資料行列表>",
    "global": true,
    "workspace": "<工作空間>",
    "dataset": "<資料集>"
  }
}

參數說明

參數

類型

必填

預設值

說明

field

String

-

去重依據的欄位名,須為文本類型。

threshold

String

"3"

相似性閾值(非負整數字串),數值越小越嚴格。詳見閾值選擇建議

output

String

*

節點輸出資料行,多列時使用逗號分隔。*(預設)保留全部列含擴充列;指定時僅輸出資料行出的列。

global

Boolean

false

是否開啟全域去重。開啟後將與 Dataset 歷史資料做近似比對。

workspace

String

條件必填

-

Dataset 所在工作空間。當 globaltrue 時必填。

dataset

String

條件必填

-

Dataset 名稱。當 globaltrue 時必填。

閾值選擇建議

閾值

嚴格程度

說明

"0"

精確匹配

等同於 dedup-exact

"1"~"2"

非常嚴格

僅過濾個別字元差異。

"3"

推薦預設

適合大多數文本去重情境。

"5"~"7"

較寬鬆

可能誤刪有意義差異的文本,慎用。

輸入和輸出

輸入要求

  • 上遊節點輸出的任意列資料。

  • 要求包含 field 指定的欄位,且為文本類型。

輸出資料行

列名

類型

來源

說明

output 控制列

-

透傳/新增

* 保留全部列(含擴充列);指定時僅輸出資料行出的列。

__dedup_hash

bigint

新增

文本指紋值。

__dedup_weight

integer

新增

文本長度。

__dedup_rnk

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 的行不參與去重且不出現在輸出中。

邊界與異常行為

情境

行為

field 缺失

校正失敗。

threshold 為負數或非數字

校正失敗。

threshold 過大(>= 64)

所有記錄歸為同一簇,僅保留一條。

globaltrue 但缺少 workspacedataset

校正失敗。

field 欄位值為 NULL

該行不參與去重,不出現在輸出中。

輸入資料為空白

正常返回空結果集。