朱昆宇 2021-04-25 13:41 采纳率: 0%
浏览 25

地址匹配、对比该如何去做

判断两个地址是不是同一个地址,例如:

北京市丰台区方庄芳群园四区16-x-xxx

北京丰台群园四区16-x-xxx

判读这两个地址是不是同一个位置,

请问我现在没有样本库,只有两万个比较干净的数据,如何去开展?
我现在是做的是先安行政区级别划分
比如:北京市/丰台区/新村街道/汉威广场/12号楼7层
现在是到街道包括街道 这些描述都可以标准化 切分后的后两部分想要匹配的话 该怎么做?

  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-07-14 21:46
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    针对判断两个地址是否为同一位置的问题,可以采用地址的标准化和字符串匹配的方法进行处理。具体步骤如下:
    1. 地址标准化:将地址字符串进行清洗和标准化,去除无关字符、空格等,统一大小写格式,确保地址信息一致性。
    2. 地址切分:将地址按照不同级别进行切分,可以按照省、市、区、街道等级别进行切分,提取出各级别的地址信息。
    3. 字符串匹配:对切分后的地址信息进行字符串匹配处理,可以采用字符串相似度计算算法(如编辑距离、Jaccard相似度等)来衡量两个地址之间的相似程度。
    4. 设定匹配阈值:根据实际情况设定一个合适的匹配阈值,当两个地址的相似度超过该阈值时则认为它们是同一位置。
    5. 代码实现示例(Python):
    def similarity(str1, str2):
        # 计算两个字符串的相似度(示例采用Jaccard相似系数)
        set1 = set(str1)
        set2 = set(str2)
        intersection = len(set1 & set2)
        union = len(set1 | set2)
        jaccard_similarity = intersection / union
        return jaccard_similarity
    def is_same_location(address1, address2):
        # 对地址进行标准化、切分和字符串匹配
        standardized_address1 = address1.replace(" ", "").lower()  # 去除空格和大小写统一
        standardized_address2 = address2.replace(" ", "").lower()
        parts1 = standardized_address1.split("/")
        parts2 = standardized_address2.split("/")
        # 只比较后两部分的相似度
        similarity_score = similarity(parts1[-2], parts2[-2])
        if similarity_score > 0.9:  # 设定相似度阈值
            return True
        else:
            return False
    # 示例地址进行判断
    address1 = "北京市/丰台区/新村街道/汉威广场/12号楼7层"
    address2 = "北京/丰台/新村街道/汉威广场/12号楼7层"
    result = is_same_location(address1, address2)
    print(result)
    

    以上是一个简单的地址匹配示例,根据实际情况可以根据数据的特点进一步优化和调整算法。同时,建议在真实数据上进行验证和调试,以确保匹配的准确性。

    评论

报告相同问题?