String 字符串度量/相似性/度量:标识相同的地理位置(街道地址)
当一个人从某个web服务搜索中检索地址时,就会出现一个问题:对于同一个实际位置,您会得到多个结果。例如,文档中的示例: 美国纽约州布鲁克林贝德福德大道277号,邮编:11211 美国纽约州布鲁克林大圣贝德福德大道11211号 美国纽约州布鲁克林大圣贝德福德大道11249号 美国纽约州布鲁克林大大街贝德福德大道11211号 美国纽约州布鲁克林11211 美国纽约布鲁克林威廉斯堡 假设我只需要选择1和最详细的一个,那么简单的解决方案是返回最大字符数的一个 但就在它之前,我想验证所有选项实际上都在描述同一个地方。适当的CS主题是。如何将这些算法应用于此任务?为什么大多数指标在这种情况下不适用的一些问题:String 字符串度量/相似性/度量:标识相同的地理位置(街道地址),string,algorithm,reverse-geocoding,String,Algorithm,Reverse Geocoding,当一个人从某个web服务搜索中检索地址时,就会出现一个问题:对于同一个实际位置,您会得到多个结果。例如,文档中的示例: 美国纽约州布鲁克林贝德福德大道277号,邮编:11211 美国纽约州布鲁克林大圣贝德福德大道11211号 美国纽约州布鲁克林大圣贝德福德大道11249号 美国纽约州布鲁克林大大街贝德福德大道11211号 美国纽约州布鲁克林11211 美国纽约布鲁克林威廉斯堡 假设我只需要选择1和最详细的一个,那么简单的解决方案是返回最大字符数的一个 但就在它之前,我想验证所有选项实际上都在描述
谢谢,我不会在这里简单地比较字符串。尝试分析地址并确定组件。例如,在 美国纽约州布鲁克林贝德福德大道277号,邮编:11211 你可以看到:
- 用逗号分隔的项目代表不同的实体,尽管未分隔的项目也可能是不同的概念
- 较早的项目代表较小的区域,较晚的项目代表较大的区域。你在街道、街道、城市、州、国家都有一个特定的位置。最后一个项目并不总是国家,但你可以检查它的国家名单,只有当它失败,考虑其他选择。类似地,州代码列表允许您识别纽约州
- 靠近末尾的一长串数字可能是邮政编码
- 开头的一个短(ish)数字(总是注意像'th'和'st'这样的后缀)可能是一个街道号码
(A,B)
和(B,C)
。街道编号不在那里,但这只是意味着第二个位置不太具体,所以第一个位置包含在第二个位置中
您可以放心地得出结论,第二个、第三个和第四个地址都是相同的。只有邮政编码不同,而且有时会发生这种情况(邮政编码很奇怪),其他地方有太多相同的邮政编码,无法排除匹配。邮政编码的数字也很接近。如果国家或州不同,则它们不应匹配,但可以创建一个警报,以便通知人并查看是否有问题。还要确保你有一本适当的字典,将同一个地方的不同名称规范化,例如NY==纽约。对于第四个地址,我们知道如何识别它有两条街道,我们可以无视秩序(将街道视为一组)
第五个地址同样只是较小区域的较少信息,因此它包含以前的地址。请注意,如果只比较第三个和第五个地址,则它们不匹配。这表明,当您匹配前两个地址时,您应该“合并”它们,并注意这两个邮政编码可能被认为是等效的。后来甚至可以说“布鲁克林,纽约11211,美国”和“布鲁克林,纽约11249,美国”匹配
最后一个地址与其他地址都不匹配。但是,这仅考虑纯字符串形式。谷歌确实在第一个地址中提到了威廉斯堡