我在一家医疗公司工作,住院报告数据有问题。我有来自不同来源的数据: Excel报告,纯文本文件,在某些情况下文件。我设法将所有数据都输入到Excel文件中。但我遇到了一个问题,就是每个人都拼写并转到同一家医院。
例如:纽约长老会医院,我已经看到了10多个变体。
实际上,我试图创建一个真正的数据库,可以存储所有会员的信息,但我遇到了一堵墙,因为每个工作人员/部门都以不同的方式命名医院。(每家医院都有唯一的提供者ID ),但我收到的大多数报告只包括“姓名”。我有2000多名成员,拥有大约100至150家医院,但数量是不同名称的3或4倍。
我知道Levenshtein距离可能会被使用,但在这种极端情况下,是否有建立匹配的策略?有太多的数据需要手工完成(耗时),因为这是分配给我的几十个或报告之一。如有任何建议,将不胜感激。
发布于 2016-01-16 18:43:03
这是一个相当标准和相当困难的问题。整个公司的存在都是为了解决大数据的问题。
通常的策略是用启发式算法对已知的数据域进行编码,在将数据放入数据库之前对其进行分类。
标准的分类方法是为每个医院创建一组模式字符串。您给出的示例最初可能会出现在模式集中。
然后,对于每个传入的字符串和每个模式,计算一个度量,这是字符串和模式之间的差异。Levenshtein是一个很好的起点。包含最小距离模式的集合(在本例中为哥伦比亚长老会)获胜。过小的距离意味着你的模式集不好。(你可以调整“过度”的含义。)多个低距离(你也可以定义“低”)意味着模式集有不经意的重叠。
这两个问题都可以以不同的方式处理,通常涉及人类的干预,要么对数据进行分类,要么增强模式集,或者两者兼而有之。
第二种可能是使用regexes作为模式。那么,一个匹配等于以上的距离为零,而不匹配则是距离无穷大.正如您可能预期的那样,这使得算法不那么灵活。然而,对于某些类型的数据--可能不是你的--这是最好的选择。
发布于 2016-08-29 23:17:44
您应该寻找数据正在形成的“特定模式”。我所观察到的是,在你所揭示的字符串中-- "Presb“是用于所有字符串中的子字符串(为您提供的医院字段的变体)。@M-ohem的评论也是一个不错的方法。但是对于初学者,您可以设置一个正则表达式来检查是否有任何输入字符串中有模式"Persb“。学习更多
https://stackoverflow.com/questions/34830306
复制相似问题