开源实体解析

匹配中日韩姓名, 其他工具做不到

陳大文、Chan Tai Man 和 陈大文 是同一个人。纯语音引擎识别不出来。Dataline 通过三个独立信号 — 语音、字形和规范化 — 跨文字、罗马化和字符形式进行匹配,让真正的匹配不会遗漏。

loading matching engine...
Initializing WASM...

为什么不直接转写成拉丁字母再做语音匹配?

因为将中日韩文字折叠为拉丁字母会在每个阶段丢失信息。拼音是多对一的。NYSIIS 合并不同声母。声调消失。OCR 错误变得不可见。Dataline 独立评估三个信号,一个维度的弱分不会掩盖另一个维度的强匹配。

多信号匹配

每对字符计算三个独立信号 — 语音、字形和规范化 — 评分后再组合。高字形匹配分数不会被低语音分数稀释。

语音距离

拼音和粤拼距离评分,保留 NYSIIS 会合并为同一组的声母区分(zh/z/j、ch/c/q)。

字形相似度

笔画序列比较能捕捉 OCR 和手写错误 — 看起来几乎相同但发音完全不同的字符。

简繁互转

自动跨字符形式规范化。陳 和 陈 无需先转换为拼音即可识别为同一实体。

智能分块

分块键 — 首字符、语音键、地址区域 — 将 O(n²) 比较降至线性时间。单机可扩展至千万级记录。

完整 MDM 管道

分词 → 分块 → 比较 → 聚类 → 存活。声明式字段级存活规则从匹配组中构建黄金记录。

有基准测试,不只是口头声称

基于真实中日韩数据的 Criterion 基准测试。所有数据均可通过 cargo bench 复现。

597K

每秒多信号比较次数

8.3M

每秒简繁规范化次数

~63s

16 核处理一千万条记录

千万级记录扩展性(首字符姓氏分块)
核心数耗时硬件
1~17 min单线程
16~63 sec普通服务器
64~16 sec云实例

多信号中日韩比较约 1.7µs/对。Rayon 工作窃取并行。假设姓氏均匀分布 — 实际中日韩数据存在偏斜(常见姓氏如陳会产生更大的分块),实际耗时可能有所不同。复合分块键可解决此问题。

Rust 构建,五条命令即可体验。

基于 Apache 2.0 协议免费开源。无需注册、无需 API 密钥,Cargo 之外无其他依赖。

快速开始
git clone https://github.com/digital-rain-tech/dataline.git
cd dataline
cargo build
cargo test
cargo bench