我保持这种语言不可知,因为我对可以提供解决方案的任何平台持开放态度。我目前的实现是在Excel / VBA中,但我正在研究Python,JavaScript和SSMS。
是否有任何现有方法可以利用已知字符串变体的集合(例如缩写,缩写词)?这些等同于SoundEx或编辑距离不太可能捕获的非常接近,但已经以表格形式预定义和收集。
假设这些字段足够具体以避免错误的等效(例如在Country的字段中定义'US'),有没有办法在模糊匹配时考虑这些?
我能够实现的最接近的解决方案是使用索引键进行RegEx匹配替换。
例如:
DEPARTMENT OF | DEPT. OF | DEPARTMENT | DPT. OF | DEPT. | DEPT | DPT
MEDICINE | MED. | MED
记录集
RECORD 1 | DEPARTMENT OF MED.
RECORD 2 | DPT. MEDICINE
RECORD 3 | DEPT OF MED
和伪代码
FIND '(\b(DEPARTMENT\sOF|DEPARTMENT|DEPT.\sOF|DEPT\.|DEPT\sOF|DPT\.\sOF|DPT\.|DPT)(?=\b))'
REPLACE '$matchSet001'
FIND '(\b(MEDICINE|MED\.|MED)(?=\b))'
REPLACE '$matchSet002'
结果将排列为相同的记录(按预期)
RECORD 1 | $matchSet001 $matchSet002
RECORD 2 | $matchSet001 $matchSet002
RECORD 3 | $matchSet001 $matchSet002
这有效,但有严重的局限性。在任何更大的规模(1000+当量)中,这是非常耗时的,因为它需要手动实施每个变化,着眼于订购。它还会转换字符串并在后续步骤中阻止实际模糊匹配。
编辑:This paper似乎在特定的上下文(研究人员名称)中解决了同样的问题,但我找不到任何有效的实现。