设想要合并三份数据:企业登记信息、政府采购合同清单和一份制裁名单。一条记录写着“华为技术有限公司”,另一条是“HUAWEI TECHNOLOGIES CO LTD”,第三条是“Huawei Technologies Co., Ltd.”。它们是同一家公司吗?“华为终端有限公司”呢?
判断不同记录何时指向现实中的同一事物,叫作实体消歧与对齐,也称记录链接、去重或实体匹配。这一步在很大程度上决定了知识图谱是有用还是误导。
为什么难
- 写法变体:缩写、标点、词序、企业类型后缀(有限公司、Ltd、GmbH)。
- 音译:中文、阿拉伯文、俄文名称可能有多种拉丁字母拼法。“Zhang Wei”是世界上最常见的姓名之一。
- 错误:错别字、过时的地址、字段错位。
- 随时间变化:企业合并、更名、迁址;个人更改姓名。
- 歧义:许多不同的人同名同姓,母公司与子公司共用品牌。
- 刻意规避:在调查中,被追踪的对象可能会故意让自己难以被匹配。
两种错误
- 错误合并:把两个不同的实体合为一个。在制裁筛查或尽职调查中,这可能冤枉无辜的个人或企业。
- 错误拆分:没能把同一实体的记录合并起来,从而掩盖了你正在寻找的关联。
两种错误不可能同时降到零,只能根据后果权衡。筛查场景希望尽量不漏,再辅以人工复核;对外发布的结论则要求极少的错误合并。
如何进行实体消歧
1. 标准化
统一大小写、标点和空格;展开或去除企业类型后缀;把地址拆分为省、市、街道等字段;必要时进行音译转换;统一日期和编号格式。仅这一步就能解决许多简单情况。
2. 优先使用标识符
标识符胜过名称:统一社会信用代码、税号、金融市场使用的法人识别编码(LEI)、证券代码、研究者的ORCID、Wikidata ID等。两条记录共享一个可靠标识符,几乎可以肯定是同一实体。
3. 分块
大规模数据无法两两比较:一百万条记录意味着约5000亿对。分块只比较具有某些共同特征的记录,比如邮编相同、名称首字相同或出生年份相同。
4. 比较与打分
对每一对候选记录,用相似度方法比较各个字段:名称用字符串距离,地址用地理距离,出生日期用精确匹配。然后把各项比较合成一个分数。
- 规则:例如“信用代码相同”,或“名称相似度大于0.9且城市相同”。透明,但不够灵活。
- 概率匹配:基于经典的Fellegi–Sunter模型(1969)。每个字段的一致或不一致,都为“是否匹配”提供正向或反向证据;罕见值的分量更重,罕见姓氏一致比常见姓氏一致更有说服力。Splink 等开源工具可以在大规模数据上实现这一方法。
- 机器学习与大语言模型:用已标注的记录对训练分类器,或让语言模型判断两段描述是否指同一实体。处理杂乱文本时很强大,但需要严格评估,大规模使用时成本也可能较高。
5. 聚类
把两两匹配的结果连接成簇,每个簇代表一个实体。要警惕链式错误:A匹配B,B匹配C,但A和C显然不同。好的系统会检查簇内的一致性。
6. 复核与记录
把不确定的匹配交给人工复核,并记录合并的理由和置信度。当有人质疑某条关联时,知识图谱需要这些来源信息。
衡量质量
建立一个已标注的记录对样本(匹配/不匹配),计算:
- 查准率:合并的记录对中,有多少是真正的匹配?
- 查全率:真正的匹配中,有多少被找出来了?
要在真实而有难度的样例上测量,而不只是简单样例。数据源变化时要重新测量。
实用建议
- 先用标识符和高置信度规则,再对其余记录使用概率匹配。
- 保留原始记录,绝不用合并后的版本覆盖它们,这样才能撤销错误合并。
- 把实体消歧当作持续的工作,而不是一次性的清洗,因为新数据会不断到来。
- 复用参考数据:公开的企业登记信息、Wikidata,以及 OpenSanctions 等经过整理的名单,已经消歧了大量实体,并提供可供匹配的标识符。
知识图谱的价值大多来自把原本分散的信息连接起来。实体消歧正是建立(或错误建立)这些连接的环节,它值得比任何可视化界面投入更多的时间和精力。