最近要实现一个地址纠错的功能,想请 v2 的大佬们指点一下思路 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
icered
V2EX    程序员

最近要实现一个地址纠错的功能,想请 v2 的大佬们指点一下思路

  •  
  •   icered 2019 年 3 月 12 日 3556 次点击
    这是一个创建于 2496 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前是根据用户输入地址直接调高德 api 进行匹配,但是用户输入的内容是有一些问题的,就会导致匹配结果出问题,比如说是:
    * 错别字输入
    * 省市区县镇联动某一级缺失
    * 多输入的关键字,如 xxx,加上街道后 **xxx 街道** 也无法匹配
    * 故意输错的,如 **上海深圳市** 这样的

    现在就是想把这个数据在调用匹配前处理一下,明显错误就提示一下,小错误就自动纠正一下。

    ps:现在还是个实习生,技术也不怎么好,问的这个问题可能也有点泛,就想聆听大佬们的思路整理一下,比如有没有现成的一些开放 api 可以用一下啥的。感谢~
    17 条回复    2019-03-13 09:03:41 +08:00
    VoidChen
        1
    VoidChen  
       2019 年 3 月 12 日
    大学跟导师做项目的时候不是经常要做这样的处理吗。。前端输入框做个条件限制,不好限制的后端直接怼过去 try catch 一下,失败就说“输入有误,请重新输入”。。
    sheny
        2
    sheny  
       2019 年 3 月 12 日
    上海虽然没有深圳市,但有四川路、南京路。
    Wisho
        3
    Wisho  
       2019 年 3 月 12 日
    1. 尽可能把所有合法地址的文本数据搞到手,然后自己造轮子写个 trie 树,基于 trie 树实现前缀搜索。
    2. 尽可能把所有合法地址的文本数据搞到手,一把梭倒进 Elasticsearch,用 ES 支持前缀联想了解一下。
    484A4B
        4
    484A4B  
       2019 年 3 月 12 日
    不是一般前面几个都是下拉列表选择的吗?
    先选省,再选市,再选区县,然后再填详细地址。
    这样要是再写错就 try catch 重新输入咯。
    zixiaoguan
        5
    zixiaoguan  
       2019 年 3 月 12 日
    往大了讲 这就属于 人工智能的一部分,
    往小了说,不按照固定的格式录入 就报错就好啦。
    icered
        6
    icered  
    OP
       2019 年 3 月 12 日
    @VoidChen #1 有时候不报错,会返回地址,但是匹配的结果是错的,导致产生一系列问题...
    icered
        7
    icered  
    OP
       2019 年 3 月 12 日
    @sheny #2 只要是正确的行政区,输入匹配没问题
    icered
        8
    icered  
    OP
       2019 年 3 月 12 日
    @Wisho #3 是准备把国家统计局的地址爬下来,然后再把高德的地址库也弄下来,跟公司自己的地址库做比较。。 字典树可以尝试下,我看看我的水平能不能实现,哈哈,第二种属于搜索引擎了吧,开会的时候公司的大佬们觉得引擎不好做,所以就,开拓视野了,嘿嘿
    icered
        9
    icered  
    OP
       2019 年 3 月 12 日
    @484A4B #4 原先是有省市下拉,区 /县,街道 /镇是匹配后显示出来,听需求说觉得这样麻烦,不过这个的确是一个解决方案,会简单一些,只用处理后面的数据
    icered
        10
    icered  
    OP
       2019 年 3 月 12 日
    @zixiaoguan #5 是的,错别字方面我看了百度 AI 开放平台,准备试着用一下,然后后面更细一点的,只能靠其他方式识别了,现在的功能特别依赖高德的 api,像明显的上海市杭州市错误,它仍然会返回上海的坐标结果,而不是报错,所以就需要先自己处理一下了
    Juszoe
        11
    Juszoe  
       2019 年 3 月 12 日
    @icered #9 下拉也不麻烦呀,现在市面上的地址选择基本都这么做的,拿个省市县区数据不难吧
    liaojl
        12
    liaojl  
       2019 年 3 月 12 日 via Android
    @sheny 还有桂林路
    shiny
        13
    shiny  
    PRO
       2019 年 3 月 12 日
    如果是快递地址,可以提供个思路:使用现成的地址清洗服务。菜鸟的贵一点,一次一分钱,还有一个快宝的是免费的。
    gamexg
        14
    gamexg  
       2019 年 3 月 12 日
    以前做过一次地址纠错,印象是直接拿统计局的省市划分匹配。
    匹配时移除省市县区等字,如果某一级匹配不到直接匹配全部下一级,例如:地址没有市,那么接将整个省所有区去匹配。

    爬虫爬的一批地址这么处理一遍后就只有少量建设兵团等有问题,专门处理后只有几个有问题的了。
    icered
        15
    icered  
    OP
       2019 年 3 月 13 日
    @Juszoe #11 下拉对于频繁操作的还是有点麻烦,实在没办法,只能继续采取下拉了,拿数据的话还是没问题的
    icered
        16
    icered  
    OP
       2019 年 3 月 13 日
    @shiny #13 这是个方法,以前都不知道还有地址清洗服务,哈哈
    icered
        17
    icered  
    OP
       2019 年 3 月 13 日
    @gamexg #14 也对,直接全匹配下一级,收下了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2638 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 02:56 PVG 10:56 LAX 18:56 JFK 21:56
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86