我在一家医疗保健公司工作,我的住院报告数据有问题。我的数据来自各种来源:Excel报告,纯文本文件,在某些情况下还有纸质。我设法将所有数据都放入Excel文件中。但是我遇到了一个问题,每个人拼写并转介到同一家医院。
例如:New York Presbyterian Hospital,我看到了10多个变种。
在我的效果中,我正在尝试创建一个可以存储所有会员信息的真实数据库,但我遇到了问题,因为每个员工/部门都以不同的方式命名医院。 (每个医院都有一个独特的提供者ID),但我收到的大部分报告都只包含“名称”。我有超过2000名成员,大约有100-150家医院,但不同名称的数量是3到4倍。
我知道Levenshtein距离可能正在使用,但在极端情况下,是否有建立匹配的策略?手上有太多的数据要做(耗时),因为这是我分配的数十个或报告之一。任何建议都将不胜感激。
答案 0 :(得分:2)
这是一个非常标准且相当困难的问题。存在整个公司来解决大数据问题。
通常的策略是在启发式算法中对已知的数据域进行编码,以便在将数据放入数据库之前对其进行分类。
标准分类方法是为每个医院创建一组模式字符串。您提供的示例最初可能会出现在模式集中。
然后,对于每个传入的字符串和每个模式,计算一个指标,该指标是字符串和模式之间的差异。 Levenshtein是一个很好的起点。包含最小距离模式(在本例中为哥伦比亚长老会)的集合获胜。距离过小意味着您的模式设置不好。 (你可以调整什么"过度"意思。)多个低距离(你定义"低,"也)意味着模式集有无意的重叠。
这两个问题都可以通过各种方式处理,通常涉及人为干预,以对数据进行分类或增强模式集或两者。
第二种可能性是使用正则表达式作为模式。然后匹配等于上面的距离零,不匹配是距离无穷大。正如您所料,这使得算法的灵活性降低。然而,对于某些类型的数据 - 可能不是你的数据 - 它是最好的选择。
答案 1 :(得分:0)
您应该查找数据正在形成的“特定模式”。我所观察到的是,在您揭示的字符串中 - “Presb”是用于所有字符串的子字符串(您提供的医院字段的变体)。 @ M-ohem的评论也是一个不错的方法。但是对于初学者来说,你可以建立一个正则表达式来检查输入字符串是否有“Persb”模式。了解More