要实现高级定制级别,您可以使用 IBM Match 360 REST API 来配置和调整匹配算法。
使用 API 时,必须先显式部署算法,然后再运行匹配的作业。 在 api-model
微服务 API 中, POST /mdm/v1/algorithms/{record_type}
方法根据提供的属性和字段生成匹配算法。
您可以使用 PUT /mdm/v1/algorithms/{record_type}
方法进一步定制匹配算法,这使您能够在方法的有效内容中提供完全定义的匹配算法。
以下是 POST /mdm/v1/algorithms/{record_type}
的样本有效内容,用于定义自动链接阈值以及一组匹配的属性和字段:
{"person_entity":{"auto_link_threshold":0.4,"matching_attributes":[{"attributes":["legal_name"]},{"attributes":["primary_residence"]}, {"attributes":["mobile_telephone"]},
{"attributes":["birth_date"]}, {"attributes":["gender"]}, {"attributes":["personal_email"]}]}}
有关IBM Match 360REST API 和相应 SDK 的更多信息,包括每种方法的验证说明和完整文档,请参阅IBM Match 360API 参考资料。
在本主题中:
配置多维比较过滤器
通过定义多维比较过滤器,进一步微调匹配算法。 多维过滤器可以比较记录中的属性,并根据定义的条件向上或向下调整匹配的分数和权重。 多维比较过滤器可以减少匹配结果中假阳性或假阴性匹配的数量。
您还可以使用多维比较过滤器来包含自己的确定性匹配规则,这些规则将覆盖基于机器学习的匹配结果。
生成多维比较过滤器
要在匹配算法中生成多维比较过滤器,请使用 REST API 命令更新匹配引擎配置:
访问和认证 IBM Match 360 API 接口。
指定用于定义过滤器的
POST /mdm/v1/algorithms/{record_type}
有效内容,如以下示例中所示:{"person_entity":{"auto_link_threshold":0.4,"matching_attributes":[{"attributes":["legal_name"], "post_filter_methods": ["false_positive_filter"]},{"attributes":["primary_residence"], "post_filter_methods": ["false_positive_filter"]}, {"attributes":["mobile_telephone"]}, {"attributes":["birth_date"], "post_filter_methods": ["false_positive_filter"]}, {"attributes":["gender"]}, {"attributes":["personal_email"]}]}}
在样本有效内容中,
false_positive_filter
是定制过滤器的名称。 它适用于包含过滤器名称的有效内容中的每个属性。
样本 API 有效内容将生成包含 false_positive_filter
的算法,其中权重和惩罚是缺省值,即 0。
(可选) 您可以定制权重和惩罚以满足组织的需求,然后使用 PUT /mdm/v1/algorithms/{record_type}
API 部署更新后的算法。
了解定义过滤器的参数
要了解定义多维比较过滤器的配置参数,请考虑上一节中创建的 false_positive_filter
的示例。
使用 API 命令 GET /mdm/v1/algorithms/{record_type}
检索当前算法。
在先前部分中提交 POST 请求后,通过相应的示例有效内容,生成了算法配置中的以下部分:
{
"false_positive_filter": {
"filter_recipe": [
{
"method": "FilterMethod.MultiDimFilter",
"inputs": [1,2,3],
"label": "Multi-Dim filter",
"weights": [
{
"distances": [0,0],
"values": [0,0,0,0,0,0]
}
]
}
],
"inputs": [
{"compare_method": "address_compare"},
{"compare_method": "date_compare"},
{"compare_method": "pername_compare"}
],
"label": "false_positive_filter"
}
}
示例 false_positive_filter
部分包含用于定义多维比较过滤器的标准参数:
filter_recipe
-此部分包含一组参数,这些参数提供了定义每个输入的匹配权重所必需的配方。inputs
。filter_recipe.inputs
部分包含此过滤器配方所应用于的输入的索引。 这些是对应于inputs
部分中列出的比较方法的顺序的数字值。 例如,在示例中,1
对应于address_compare
方法,2
对应于date_compare
方法,3
对应于pername_compare
方法。weights
-weights
部分是一个元素数组,用于定义如何对每个输入进行加权以进行三维比较。weights
部分包含输入的distances
和values
定义。 对于未定义的任何输入,缺省权重为0
。
inputs
-此部分包含匹配属性的比较方法。 这些方法将使用您在filter_recipe
部分中定义的距离和权重。max_distance
-可选 (未显示)。 此参数定义最大距离。 缺省最大距离为 5 ,这意味着filter_recipe.weights.values
参数可以包含 6 元素 ("values":[0,1,2,3,4,5]
)。
配置定制过滤器
要定制现有比较方法以与多维比较过滤器配合使用,请执行以下操作:
检索当前算法:
GET /mdm/v1/algorithms/{record_type}
根据需要更新算法。 例如,您可以:
- 在
weights
部分中添加或更新元素以定制所列示输入的权重。 - 通过添加
max_distance
参数来定义最大距离。 - 添加比较方法作为将使用此过滤器而不是缺省匹配权重的输入。
- 在
使用更新后的版本覆盖匹配算法:
PUT /mdm/v1/algorithms/{record_type}
示例 1: 如果要将最大距离设置为 9 ,并为输入和距离的不同组合指定定制权重和惩罚,如下所示: -input1 distance=0, input2 distance=0, input3 distance = [0,1,2,3,4,5,6,7,8, 9]。 在这种情况下,距离组合 [0,0, 3] 给出的分数为 15。
- input1 distance=1, input2 distance=0, input3 distance = [0,1,2,3,4,5,6,7,8, 9]。 在这种情况下,距离组合 [1,0, 9] 给出 -30 的惩罚分数。
{
"false_positive_filter": {
"filter_recipe": [
{
"method": "FilterMethod.MultiDimFilter",
"max_distance": 9,
"inputs": [1,2,3],
"label": "Multi-Dim filter",
"weights": [
{
"distances": [0,0],
"values": [0,-5,-10,-15,-20,-25,-30,-30,-30,-30]
},
{
"distances": [1,0],
"values": [0,-5,-10,-15,-20,-25,-30,-30,-30,-30]
}
]
}
],
"inputs": [
{"compare_method": "address_compare"},
{"compare_method": "date_compare"},
{"compare_method": "pername_compare"}
],
"label": "false_positive_filter"
}
}
示例 2: 您可以添加自己的定制比较方法,并将其配置为排除在对整体匹配分数的贡献之外,如以下样本有效内容中所示。 在这种情况下,定制方法将仅由多维比较过滤器使用。
在以下示例中, given_name_only_compare
过滤器将 overall_score_contribution
设置为 false
。
{
"given_name_only_compare": {
"methods": [
{
"inputs": [
{
"attributes": [
"legal_name"
],
"fields": [
"given_name"
]
}
],
"compare_recipe": [
{
"comparison_resource": "person_person_entity_person_compare_spec_name",
"method": "CompareMethod.NameCompare",
"inputs": [
1
],
"label": "Given Name Only Match",
"fields": [
"given_name"
]
}
]
}
],
"overall_score_contribution" : false,
"label": "Given Name Only Compare",
"weights": [1,0,0,0,0,0,0,0,0,0,0]
}
}
切换编辑距离函数
在比较和匹配各种属性期间, IBM Match 360 匹配引擎会将编辑距离计算为内部函数之一。 编辑距离是对两个字符串之间的不同程度的测量。 它通过计算将一个字符串转换为另一个字符串所需的更改数来计算。
您可以在标准编辑距离函数或专用编辑距离函数之间进行选择。 标准编辑距离是缺省配置,以确保在匹配期间更快的性能。 有关编辑距离的更多信息,请参阅 IBM Match 360 匹配算法。
要更改活动编辑距离功能,请使用 REST API 命令更新匹配的引擎配置:
访问和认证 IBM Match 360 API 接口。
检索比较函数
compare_spec_resource
的现有配置 JSON 文件:GET /mdm/v1/compare_spec_resources/{resource_name}
在本地计算机上,编辑 JSON 以添加行
"similar_characters_enabled": true
(如果要切换回缺省编辑距离设置,请将其除去)。通过上载已编辑的 JSON 来更新 IBM Match 360 配置:
PUT /mdm/v1/compare_spec_resources/{resource_name}
配置粘合记录阈值
您可以使用 API 命令更新 IBM Match 360 匹配算法来定义粘合记录阈值。
当 IBM Match 360 通过匹配来形成实体时,某些低质量记录可充当粘合记录。 胶水记录会获得它们的名称,因为它们会像胶水一样粘在许多其他记录上。 由于粘合记录包含很少或没有详细的属性值,因此它们可能与许多不同的记录相匹配。 胶记录的匹配行为会在不经意间,错误地创建只有一个低质量胶记录的非常大的实体。
作为一个简化的示例,请考虑除了名称以外没有其他属性的低质量记录,例如 "John Smith"。 这样的记录可以轻松地与数据集中的任何其他 "John Smith" 匹配,从而导致不匹配的其他记录包含在单个 "John Smith" 实体中。
通过在每种实体类型的匹配算法中设置一个胶记录阈值,数据工程师可以防止胶记录导致形成大型,不匹配的实体。
配置了胶水记录阈值时, IBM Match 360 会使用其自匹配分数来识别胶水记录。 自我匹配分数是通过将记录与自身进行比较来实现的匹配分数。 高自匹配分数表示记录具有大量高质量匹配属性。
IBM Match 360 通过检查其自匹配分数加上粘合记录阈值的值是否小于实体中中心记录的自匹配分数来识别粘合记录。 如果小于,那么该记录将被视为胶记录,并且不会包含在实体中。
粘合记录阈值是可选的,缺省情况下未设置。 必须单独定义每个实体类型的粘合记录阈值。
要设置胶记录阈值,请执行以下操作:
访问和认证 IBM Match 360 API 接口。
检索给定记录类型的现有配置匹配算法 JSON 文件:
GET /mdm/v1/algorithms/{record_type}
在本地计算机上,编辑 JSON 以在相应的实体类型下添加
glue_threshold
参数。 提供数字阈值。 (如果要除去现有粘合记录阈值,请删除该参数。) 例如:locale: {...} encryption: {...} standardizers: {...} entity_types: person_entity: bucket_generators: {...} auto_link_threshold: 65 clerical_review_threshold: 55 glue_threshold: 20 compare_methods: {...}
更新 IBM Match 360 匹配算法:
PUT /mdm/v1/algorithms/{record_type}
配置特定于源的匹配阈值
数据工程师可以在特定于各种记录源的匹配算法中定义文书复审阈值和自动链接阈值。 这使您的组织能够根据源的可信程度以不同方式处理匹配。
您的组织可能具有来自不同源的记录,每个记录都使用不同的属性,并且具有不同的质量级别。 通过配置记录源级别匹配阈值,您可以将来自可信源的数据比来自不太可信源的数据权衡得更重,甚至可以将某些源排除在参与匹配之外。 从匹配中排除的源仍可用作系统中的参考源。
源级别阈值是可选的,缺省情况下未设置。
必须针对数据模型中的每个实体类型单独定义源级别阈值。 作为提醒,每个实体类型都有自己的匹配算法定义。
要设置源级别匹配阈值,请执行以下操作:
访问和认证 IBM Match 360 API 接口。
检索要配置的实体类型的现有匹配算法配置文件 (JSON 格式)。
GET /v1/algorithms/{record_type}
在本地计算机上,编辑 JSON 以在相应的实体类型 (例如
person_entity
) 下添加source_level_thresholds
对象。 例如:"person_entity":{ "auto_link_threshold":150, "clerical_review_threshold":120, "source_level_thresholds": { "src0": { "default":[165, 150], “srcxsrc” : { "src0": [null, null], "src1": [160, 130], "src2": [123, 111], "src3": [null, null] } }, "src1": { “srcxsrc” : { "src1": [160, 130], "src2": [123, 111], "src3": [136, 120], "src4": [120, null] } } } }
有关此示例的更多信息以及有关如何定义源级别阈值 JSON 对象的指导信息,请参阅 定义源级别阈值的样本 JSON 对象。
更新 IBM Match 360 匹配算法:
PUT /v1/algorithms/{record_type}
有关源级别阈值的更多信息,请参阅以下子部分:
源级别阈值的样本 JSON 对象
在以下 JSON 示例中,您可以看到用于定义 Person 实体的源级别阈值的匹配算法配置文件片段。
"person_entity":{
"auto_link_threshold":150,
"clerical_review_threshold":120,
"source_level_thresholds": {
"src0": {
"default":[165, 150],
“srcxsrc” : {
"src0": [null, null],
"src1": [160, 130],
"src2": [123, 111],
"src3": [null, null]
}
},
"src1": {
“srcxsrc” : {
"src1": [160, 130],
"src2": [123, 111],
"src3": [136, 120],
"src4": [120, null]
}
}
}
}
在以上示例中:
- 缺省全局自动链接阈值为 150。
- 缺省全局文书复审阈值为 120。
- src0, src1, src2, src3和 src4 是源名称的示例。
- 在
source_level_thresholds
对象中,按源定义了两个源的源阈值: src0 和 src1。
一般指导:
- 在
source_level_thresholds
对象中的每个源下,您可以选择使用default
参数来覆盖该源的缺省全局匹配阈值。 - 在每个源下,可以在
srcxsrc
属性下定义源到源匹配阈值的数组。 比较来自列出的源的记录时,将使用这些阈值。 - 在数组中,方括号中提供的值采用以下格式:
[autolink-threshold, clerical-threshold]
。 因此,[136, 120]
指示对于给定的源到源比较,自动链接阈值为 136 ,文书复审阈值为 120。 - 当同时给出这两个值时,自动链接阈值应该始终高于文书复审阈值。
- 如果将值指定为
null
,那么将禁用该阈值。 - 如果一对中的两个值都指定为
null
,那么将禁用这两个源之间的匹配和链接。 - 当两个值都为
null
且两个给定源相同时,仅将该源视为 引用源 。 例如,src0
是先前示例 JSON 中src0
的参考源。 仅具有来自引用源的记录的任何实体都不可行。
评估源级别阈值结果
如果已在定制匹配算法中配置源级别阈值,请使用以下 REST API 方法来获取评分详细信息。
POST /v1/compare/?details=debug&crn={CRN}&entity_type={entity_type}&record_type={record_type}
使用此方法返回的信息可帮助您评估结果,并在必要时对源级别阈值配置进行微调。
源级别阈值和对复审
如果您接受对复审生成的调整建议,那么可以覆盖源级别阈值。 如果您的组织使用或打算使用 IBM Match 360 对复审功能来生成智能调整建议,那么最好先完成对复审任务,然后再定义源级别阈值。
如果已在定制匹配算法中定义了源级别阈值,请通过编辑 IBM Match 360 CR (mdm-cr
) 来禁用源级别阈值功能。 使用以下命令在 CR 中禁用源级别阈值:
oc patch mdm mdm-cr --type=merge -p '{"spec": {"mdm_matching": {"features": {"source_level_thresholds": {"enabled": false}}}}}'
进行更改后, CR 可能需要 20-30 分钟来协调自身。 还必须重新启动 mdm-matching
服务 pod 以应用更新后的配置。 如果需要,必须手动重新启动这些 pod。
要重新启用源级别阈值,请运行以下命令:
oc patch mdm mdm-cr --type=merge -p '{"spec": {"mdm_matching": {"features": {"source_level_thresholds": {"enabled": true}}}}}'
后续步骤
了解更多信息
父主题: 定制和加强匹配算法