匹配医院名称的算法

时间:2016-01-16 18:04:59

标签: algorithm approximation

我在一家医疗保健公司工作,我的住院报告数据有问题。我的数据来自各种来源:Excel报告,纯文本文件,在某些情况下还有纸质。我设法将所有数据都放入Excel文件中。但是我遇到了一个问题,每个人拼写并转介到同一家医院。

例如:New York Presbyterian Hospital,我看到了10多个变种。

  1. 纽约长老会医院
  2. 纽约长老会医院
  3. 长老会医院
  4. Presb医院
  5. PresbHosp
  6. New_York_Presb_Hosp
  7. NYPresbHosp
  8. 哥伦比亚长老会医疗中心
  9. NYP /哥伦比亚大学医学中心
  10. 纽约长老会医院哥伦比亚大学医学院
  11. 更多医院名称拼写错误的案例
  12. 一些不同的系统字符串限制并在随机位置切断字符串,或者它们可能无法正确复制和粘贴。
  13. 不同的护士用不同的方式提到医院
  14. 在我的效果中,我正在尝试创建一个可以存储所有会员信息的真实数据库,但我遇到了问题,因为每个员工/部门都以不同的方式命名医院。 (每个医院都有一个独特的提供者ID),但我收到的大部分报告都只包含“名称”。我有超过2000名成员,大约有100-150家医院,但不同名称的数量是3到4倍。

    我知道Levenshtein距离可能正在使用,但在极端情况下,是否有建立匹配的策略?手上有太多的数据要做(耗时),因为这是我分配的数十个或报告之一。任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:2)

这是一个非常标准且相当困难的问题。存在整个公司来解决大数据问题。

通常的策略是在启发式算法中对已知的数据域进行编码,以便在将数据放入数据库之前对其进行分类。

标准分类方法是为每个医院创建一组模式字符串。您提供的示例最初可能会出现在模式集中。

然后,对于每个传入的字符串和每个模式,计算一个指标,该指标是字符串和模式之间的差异。 Levenshtein是一个很好的起点。包含最小距离模式(在本例中为哥伦比亚长老会)的集合获胜。距离过小意味着您的模式设置不好。 (你可以调整什么"过度"意思。)多个低距离(你定义"低,"也)意味着模式集有无意的重叠。

这两个问题都可以通过各种方式处理,通常涉及人为干预,以对数据进行分类或增强模式集或两者。

第二种可能性是使用正则表达式作为模式。然后匹配等于上面的距离零,不匹配是距离无穷大。正如您所料,这使得算法的灵活性降低。然而,对于某些类型的数据 - 可能不是你的数据 - 它是最好的选择。

答案 1 :(得分:0)

您应该查找数据正在形成的“特定模式”。我所观察到的是,在您揭示的字符串中 - “Presb”是用于所有字符串的子字符串(您提供的医院字段的变体)。 @ M-ohem的评论也是一个不错的方法。但是对于初学者来说,你可以建立一个正则表达式来检查输入字符串是否有“Persb”模式。了解More