- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在一家医疗保健公司工作,我在处理住院报告数据方面遇到了问题。我的数据来自各种来源:Excel 报告、纯文本文件,在某些情况下还包括纸张。我设法将所有数据放入 Excel 文件中。但我遇到了一个问题,即每个人都拼写并转诊到同一家医院。
例如:New York Presbyterian Hospital ,我已经看到了 10 多个变体。
实际上,我正在尝试创建一个可以存储所有成员(member)信息的真实数据库,但我遇到了困难,因为每个员工/部门都以不同的方式命名医院。 (每个医院都有一个唯一的提供者 ID),但我收到的大多数报告只包含“姓名”。我有 2000 多名成员,大约有 100-150 家医院,但不同名称的数量是其 3 或 4 倍。
我知道可以使用 Levenshtein 距离,但在这种极端情况下,是否有建立匹配的策略?有太多数据需要手动处理(耗时),因为这是我分配的几十个报告之一。任何建议将不胜感激。
最佳答案
这是一个非常标准且非常困难的问题。整个公司的存在都是为了解决大数据问题。
通常的策略是在启发式算法中对数据域的已知信息进行编码,以在将数据放入数据库之前对数据进行分类。
标准分类方法是为每家医院创建一组模式字符串。您提供的示例最初可能会出现在模式集中。
然后对于每个传入的字符串和每个模式,计算一个度量,即字符串和模式之间的差异。 Levenshtein 是一个很好的起点。包含最小距离模式的集合(在本例中为 Columbia Presbyterian)获胜。过大的最小距离意味着您的模式集不好。 (您可以调整“过度”的含义。)不止一个低距离(您也可以定义“低”)意味着模式集有无意的重叠。
这两个问题都可以通过多种方式处理,通常涉及人工干预以对数据进行分类或增强模式集或两者兼而有之。
第二种可能性是使用正则表达式作为模式。那么匹配就相当于上面的距离为零,不匹配就是距离无穷大。正如您所料,这会降低算法的灵 active 。然而对于某些类型的数据——虽然可能不是你的——这是最好的选择。
关于匹配医院名称的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34830306/
如何在 Android 谷歌地图中显示附近的地点和地点详情,如 ATM、医院、餐馆等 这是我使用的链接: Showing nearby places & place details using Goo
我是一名优秀的程序员,十分优秀!