利用现有的一组已知变体(首字母缩写词,缩写词)进行字符串匹配

时间:2017-09-18 16:27:58

标签: sql regex excel-vba fuzzy-comparison edit-distance

我保持这种语言不可知,因为我对可以提供解决方案的任何平台持开放态度。我目前的实现是在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似乎在特定的上下文(研究人员名称)中解决了同样的问题,但我找不到任何有效的实现。

0 个答案:

没有答案