You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中如何将字符串转换提取为标准Address地址类型?

美国地址结构化可行方案

方案1:规则匹配(适用于格式规整的美国地址场景,实现成本最低)

美国本土地址格式高度标准化,绝大多数符合「街道地址, 城市, 州 邮编」的结构,直接用分割+正则就能实现需求:

  • 第一步用逗号对原始地址做分割,去除各段首尾空白字符
  • 第一段直接赋值给address字段,address2默认留空,有需要处理公寓号、单元号场景时可扩展规则
  • 第二段赋值给city字段
  • 第三段用正则匹配拆分2位州缩写和5位(或5-4格式)邮编,正则参考r"^([A-Z]{2})\s*(\d{5}(?:-\d{4})?)$",忽略大小写匹配后分别赋值给state和zip字段

示例Python实现代码:

import re

def parse_standard_us_address(raw_addr: str) -> dict:
    structured_addr = {
        "address": "",
        "address2": "",
        "city": "",
        "state": "",
        "zip": ""
    }
    addr_parts = [part.strip() for part in raw_addr.split(",")]
    if len(addr_parts) < 3:
        return structured_addr
    structured_addr["address"] = addr_parts[0]
    structured_addr["city"] = addr_parts[1]
    # 匹配州和邮编
    sz_match = re.match(r"^([A-Z]{2})\s*(\d{5}(?:-\d{4})?)$", addr_parts[2], re.IGNORECASE)
    if sz_match:
        structured_addr["state"] = sz_match.group(1).upper()
        structured_addr["zip"] = sz_match.group(2)
    return structured_addr

# 测试用例
print(parse_standard_us_address("12233 Abbb street, Los Angeles, CA 92666"))

运行输出结果:

{
    'address': '12233 Abbb street',
    'address2': '',
    'city': 'Los Angeles',
    'state': 'CA',
    'zip': '92666'
}

方案2:NER模型识别(适用于地址格式不规整、多国家地址的场景)

如果需要处理缺逗号、带address2、地址顺序不固定的复杂场景,可以用命名实体识别模型抽取字段:

  • 轻量场景可以用spaCy训练少量自定义地址标注数据,微调后即可满足需求
  • 通用场景可以直接用开源的地址抽取预训练模型,不需要自行写规则,适配性更强

方案3:规则+模型兜底(适用于生产环境高准确率要求场景)

优先用规则匹配处理占比最高的格式规整地址,匹配失败的请求再走模型识别,兼顾处理效率和覆盖范围。


内容的提问来源于stack exchange,提问作者Seb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 01:36:00