匹配医院名称的算法

标签 algorithm approximation

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

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

  1. 纽约长老会医院
  2. 纽约长老会医院
  3. 长老会医院
  4. 普雷斯布医院
  5. 院长医院
  6. New_York_Presb_Hosp
  7. 纽约州长医院
  8. 哥伦比亚长老会医疗中心
  9. NYP/哥伦比亚大学医学中心
  10. 纽约长老会医院哥伦比亚大学医学院
  11. 更多医院名称拼写错误的案例
  12. 一些不同的系统字符串在随机位置限制和截断字符串,或者复制和粘贴不正确。
  13. 不同护士对医院的称呼不同

实际上,我正在尝试创建一个可以存储所有成员(member)信息的真实数据库,但我遇到了困难,因为每个员工/部门都以不同的方式命名医院。 (每个医院都有一个唯一的提供者 ID),但我收到的大多数报告只包含“姓名”。我有 2000 多名成员,大约有 100-150 家医院,但不同名称的数量是其 3 或 4 倍。

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

最佳答案

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

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

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

然后对于每个传入的字符串和每个模式,计算一个度量,即字符串和模式之间的差异。 Levenshtein 是一个很好的起点。包含最小距离模式的集合(在本例中为 Columbia Presbyterian)获胜。过大的最小距离意味着您的模式集不好。 (您可以调整“过度”的含义。)不止一个低距离(您也可以定义“低”)意味着模式集有无意的重叠。

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

第二种可能性是使用正则表达式作为模式。那么匹配就相当于上面的距离为零,不匹配就是距离无穷大。正如您所料,这会降低算法的灵 active 。然而对于某些类型的数据——虽然可能不是你的——这是最好的选择。

关于匹配医院名称的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34830306/

相关文章:

python - ElasticSearch 中 multiSearch 的最佳批量查询大小

java - 修改算法以在包含重复项的字符串中生成唯一排列

algorithm - 是否有一种算法可以从列表中选择几个字符串,使字符串的数量等于其中不同字母的数量?

algorithm - 距离矩阵的近似估计

algorithm - 比较顺序搜索和二分搜索

python - 识别二维 numpy 数组中的连续区域

statistics - 使用 MATLAB 的 AR 模型

r - R 中无限和的近似

np-complete - 'combinatorial algorithm' 和 'linear algorithm' 之间有什么区别?

c++ - 使用 sqrt 和 floor 时的近似误差