V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
icered
V2EX  ›  程序员

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

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

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

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

    爬虫爬的一批地址这么处理一遍后就只有少量建设兵团等有问题,专门处理后只有几个有问题的了。
    icered
        15
    icered  
    OP
       2019-03-13 08:59:27 +08:00
    @Juszoe #11 下拉对于频繁操作的还是有点麻烦,实在没办法,只能继续采取下拉了,拿数据的话还是没问题的
    icered
        16
    icered  
    OP
       2019-03-13 09:00:32 +08:00
    @shiny #13 这是个方法,以前都不知道还有地址清洗服务,哈哈
    icered
        17
    icered  
    OP
       2019-03-13 09:03:41 +08:00
    @gamexg #14 也对,直接全匹配下一级,收下了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3504 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 11:06 · PVG 19:06 · LAX 03:06 · JFK 06:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.