我在一家医疗公司工作,住院报告数据有问题。我有来自不同来源的数据:Excel报告,纯文本文件,有时还有纸张我设法把所有的数据都输入一个Excel文件但我遇到了一个问题,每个人都拼写了一个单词,并被转诊到同一家医院。
例如:New York Presbyterian Hospital,我已经看到超过10种变化。
纽约长老会医院
纽约长老会医院
长老会医院
普雷斯布医院
前总统
纽约总统府
纽约总统府
哥伦比亚长老会医疗中心
纽约/哥伦比亚大学医学中心
纽约长老会医院哥伦比亚大学医学院
更多医院名称拼错的案例
一些不同的系统字符串会在随机的地方限制和切断字符串,或者它们复制和粘贴不正确。
不同的护士对医院的称呼不同
实际上,我正试图创建一个真正的数据库,可以存储所有会员信息,但我遇到了一堵墙,因为每个员工/部门都以不同的方式命名医院。(每个医院都有一个提供者id),但我收到的大多数报告都只包括“name”。我有2000多个会员,大约有100-150家医院,但不同名字的数量是这个数字的3-4倍。
我知道Levenshtein Distance可以使用,但在这种极端的情况下,有没有建立匹配的策略?有太多的数据需要手工操作(耗时),因为这是我被分配的几十个或报告之一。任何建议都将不胜感激。
最佳答案
这是一个相当标准和相当困难的问题整个公司都是为了解决大数据而存在的。
通常的策略是用启发式算法对已知的数据域进行编码,以便在将数据放入数据库之前对其进行分类。
标准的分类方法是为每个医院创建一组模式字符串。您给出的示例可能在最初的模式集中。
然后,对于每个传入的字符串和每个模式,计算一个度量,即字符串和模式之间的差异莱文施坦是一个很好的起点。包含最小距离模式(本例中为哥伦比亚长老会)的集合获胜过短的距离意味着你的模式设置不好。(你可以调整“过度”的含义)超过一个低距离(你也可以定义“低”)意味着模式集有不经意的重叠。
这两个问题都可以用不同的方式处理,通常涉及到人为干预,要么对数据进行分类,要么增强模式集,要么两者兼而有之。
第二种可能是使用正则表达式作为模式然后匹配等于上面的距离0,不匹配等于距离无穷大。正如您所期望的,这使得算法不太灵活。但是对于某些类型的数据——可能不是你的——这是最好的选择。