一家供应商,四种写法:确定性分段如何击败相似度分数

📌 One-Sentence Summary 对一份合成的 11,531 行供应商列表进行实体解析实验表明,两个确定性规范化分段可免费消除 76% 的重复项,而剩余的模糊匹配残留在任何阈值下都无法安全自动合并,必须成为排序的人工审核队列。 📝 Summary 作者将一份混乱的 10,000 行供应商列表重建为 11,531 行的合成数据集,描述了 7,180 个真实供应商,并加入了表面变体、子域名、国家顶级域同胞和单键错别字。一个四阶段管道端到端运行:规范化(小写、剥离 scheme/path/www)在 0.03 秒内将 11,531 行压缩至 9,080 个主机,通过 Public Suffix List(tldextract)压缩至注册域名 8,207 个,共消除 76% 的重复项,无需任何判断调用。剩余的 1,135 个真实重复对使用 RapidFuzz 攻击:3370 万对的暴力评分耗时两秒,通过两字符前缀加最后三个字符的 blocking,候选召回率从 93.0% 提升至 99.8%,代价是 169 万个候选对。核心发现是真实重复项与不同供应商在 88-97 相似度带重叠严重,因此没有自动合并阈值是安全的:阈值 85 时准确率 0.345,90 时 0.764,仅在 98 时达到 1.0,但此时召回率已降至 0.485。更糟的是,所有 551 个评分为 100 的对都是国家顶级域同胞(brand.com vs brand.de),字符串确定性在此毫无意义,因为问题本质是业务判断。因此作者将阈值重新定义为人员配置决策:88-99 带加上强制审核同胞,产生一个 1,905 对的队列,约需一个工作日解决,而盲目在 90 自动合并会融合 282 个真实不同的供应商。实践习惯包括按金额排序队列和保持每次合并可逆。 💡 Main Points 两个确定性分段可免费消除 76% 的重复项。 规范化(小写、剥离 scheme、path、query、前导 www)在 0.03 秒内将 11,531 行压缩至 9,080 个主机,通过 Public Suffix List 进一步压缩至注册域名 8,207 个。两步共消除 3,324 个 4,351 个重复行中的重复项,意味着大部分问题根本不需要模糊评分。 没有自动合并阈值是安全的,因为真实重复项与不同供应商占据相同的 88-97 分数带。 一个 14 字符域名的一键错别字与真实不同的供应商(编辑距离为 1)的评分都在低 90 分区间。阈值 85 时准确率 0.345,90 时 0.764,仅在 98 时达到 1.0,但此时召回率已降至 0.485。这种重叠是结构性的,不是调优问题。 匹配器最确定的区域,正是确定性毫无价值的区域。 所有 551 个评分为 100 的对都是同一名称下两个不同国家顶级域的变体(brand.com vs brand.de)。字符串真实匹配,但 brand.de 是同一出版商的德国分支还是无关公司,这是关于公司的知识,而任何字符串确定性都无法提供,因此这些对按规则进入人工审核。 一旦合并无法进行,阈值的真实工作是为审核队列定规模,将统计旋钮转变为人员配置决策。 88-99 带包含 1,354 对(565 个真实重复项);加上 551 个强制审核的国家同胞后得到 1,905 对,约需五小时(每分钟六对)。扩展至 85 仅多花约四小时且仅恢复 15 个额外真实重复项;降至 80 则队列膨胀至三十多小时仅多两个。 盲目在阈值 90 自动合并会污染价格历史,这是财务错误而非表面问题。 审核路径最终得到 7,189 个实体,对照地面真值 7,180 个,修复了 1,116 个 1,135 个重复关系。盲目在 90 自动合并产生 6,914 个实体,其中 282 个融合了两个或更多真实不同的供应商,意味着 282 个供应商的价格历史与他人混淆。 💬 Key Quotes 两个确定性分段消除了 10,000 行供应商列表中 76% 的重复项。随后模糊匹配器运行,但没有阈值能安全合并剩余项。 字符串无法告诉你身处何种情境,因为两种情境是相同的字符串事件,但背后拥有者不同。 因此匹配器从未在文本上犯错的区域,正是对文本正确毫无帮助的区域。 混乱的列表让你比较次数更多,而自信错误的列表让你转移次数更多。 在域名等短字符串上,相似度分数是人类权衡的论据,数据在此清晰显示:阈值 85 时四分之三合并错误,90 时四分之一错误,完美仅出现在字符串不再成为问题的精确区域。 📊 Article Meta AI Screening: 89 Source: Towards Data Science Author: Boris Dzhingarov Category: 软件编程 Language: 英文 Read Time: 10 min Word Count: 2257 Tags: 编程与工程 , 数据工程 , 实体解析 , 数据清洗 , Python Read Full Article
暂无评论,快来抢沙发~