V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
SZhan
V2EX  ›  Java

如何从一段自然语言中识别地址信息?

  •  
  •   SZhan · 2023-09-25 10:50:10 +08:00 · 8571 次点击
    这是一个创建于 450 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近有一个很折腾人的需求。由于推送过来的原始数据里缺少客户需要的字段,所以就产生了一个需求,需要根据一段工单内容,识别涉及的区域、街道、所属社区。我开发又优化了几版,都达不到客户想要的效果。工单的内容因为是人编写的、无规则的,所以就不知道会在哪里产生地址信息:
    例 1:自己是新吴区鸿山街道鸿*苑六二期 xxx 号 xxxx(隐私处理)的住户,想在屋面里面修葺两个小房间,目前就修了一个门框,xx 就直接来拆掉了,但是其他人家都造好了,都已经住进去了,都没有拆。服务对象表示自己家这里有留消防通道,其他人家都没有留。服务对象表示鸿*苑六二期 xxxxxx 号楼十八层的业主(无法具体提供信息,但表示这些楼栋 xxxxx 、xxxx 室都存在该情况),已经造好通水电入住,自己认为处理部门应该一视同仁对待。
    例 2:服务对象来电反映目前通*新村 1 号附近有两条流浪狗将自己车辆的保险杠咬坏,拨打 110 反映表示需要 xx 协助 xx 流浪狗。
    例子是这样的,地址信息可能随时出现在内容中,有可能会直接有区、街道、社区信息,也可能仅仅只有一个地点(如例 2 ),需要识别出具体地点,再反编地理信息获取所属区、街道、社区。所以就整的很困难。我目前是这样处理的:
    先直接查所有的区、街道、社区信息,到工单内容中循环比对匹配是否包含,抓出来明显提到的区、街道、社区(例 1 类似的内容)。如果像例 2 那样内容只提到了一个地点,我的处理是,获取了一批城市的所有 POI 点位(总数几十 w 条,太多了),然后把小区、商场综合体、个体店铺、城市基础设施等一些基础的城市地理 POI 点位去和内容比对 POI 名称是否在内容中包含,但是效果就是识别比对的成功率很低,不知道有没有啥好的解决办法,还是基本上就是无法实现的需求。想向大神门求助!
    第 1 条附言  ·  2023-09-25 11:55:10 +08:00
    真的很感谢帖子里各位大佬们提出的建议,这个需求我已经磨了一个多月了,你们敢想象,这个功能所属的项目,才几 w 块。如果说对接 chatgtp 高德 百度这些三方厂家,那钱怕是只能让我自己掏了。其实本身过来咨询各位的意见,是想了解能否仅仅通过我自己去设计、实现这些功能,但是看起来,很难很难。讲真,别碰 zf 项目,一群领导总想教人去做功能,在他们看来,这就是一简单的识别,“为什么这个单子里提到了 xx 小区,你们识别不到呢”,“你们能不能做到它提了某个小区,就可以抓取到他”,“这个识别率怎么那么低”...听了太多,累了... 不忍心去和各位说这样那样的方案不行,我自己可以去继续琢磨琢磨实现,但是用在这个项目上,它不配。再次谢谢各位啦!我一条一条都会好好看的。后续准备去提实现不了,找原数据提供方重新对接吧,做不到就做不到了。
    113 条回复    2023-09-27 00:01:20 +08:00
    1  2  
    wangmou
        101
    wangmou  
       2023-09-26 15:22:16 +08:00
    @lscho 钱不够弄模型就只能堆数据,前几天同学他们给 xx 电力做的东西就是这么干的,把所有电站的名字全喂进去,也不用识别了
    teddy2725
        102
    teddy2725  
       2023-09-26 15:41:25 +08:00
    NER 任务的嘛,搞个开源模型搞点数据训练试试效果,弄个最好的交差把
    类似这种: https://huggingface.co/dslim/bert-base-NER
    unco020511
        103
    unco020511  
       2023-09-26 15:49:54 +08:00
    这种问题 GPT 类的是最合适的,国内也有不少大模型可以使用
    haxi
        104
    haxi  
       2023-09-26 16:11:51 +08:00
    就连阿里,顺丰,这些大厂靠物流起家的,训练出来的 NLP 模型都无法准确识别的,就不要白费力气了,没有资金就随便用 jieba 训练一个模型用用,有资金和准确性要求就调阿里的 API
    angry41
        105
    angry41  
       2023-09-26 16:30:26 +08:00   ❤️ 1
    找实习大学牲
    NoOneNoBody
        106
    NoOneNoBody  
       2023-09-26 16:39:23 +08:00
    如果有个地名数据库(粒度为小区或街),识别难度不大(一般文字匹配算法即可),难在数据库会变,维护不易
    如果没有数据库,纯语义识别,那就离不开 AI 了

    中文地址还好,从大到小,英文地址从小到大更难搞
    eddiechow
        107
    eddiechow  
       2023-09-26 18:01:42 +08:00   ❤️ 1
    有么有可能跟领导沟通,从源头解决这个事情,按说完全不想人工介入维护的话,那就让工单系统推结构化的数据到数据中心,因为如果从纯文本里面去识别抓去这个信息,不管用什么算法,什么方案,识别率永远都到不了 100%,那必定存在需要人工审核的场景;当然,也能理解接政府项目有些时候限制是挺多的,如果还没有试过这种途径的话,要不试试看?祝项目顺利🙏
    season8
        108
    season8  
       2023-09-26 18:01:45 +08:00
    @SZhan #94 你说的有道理,分词不是万能的,太依赖词库了,详细地点格式并不确定,尤其是涉及到英文和数字的时候,分词更不理想,我觉得可能还得上机器学习
    maotao456
        109
    maotao456  
       2023-09-26 18:30:45 +08:00
    巧了,我也做了一个类似需求。 从小票里面提取出店铺名称、商品、金额、收件人等信息

    一开始的思路是,OCR -> 正则匹配 可是后来发现每家店的小票格式都不同,难以预料未来还有什么格式。 代码没法写。
    然后,刚好文心一言 Api 可以用了。 那就 OCR -> 文心一言。
    搞定下班
    SZhan
        110
    SZhan  
    OP
       2023-09-26 19:34:24 +08:00
    @eddiechow 感谢暖心的回复 对的,最好的方式一定是在源头,这个问题也一直在跟客户提,让他们去协调的。可能是数据提供方并不够重视吧,然后客户就以时间紧的理由再丢给我们,让机器去自动识别😰如您所期,会顺利的,谢谢!
    aigonna
        111
    aigonna  
       2023-09-26 20:15:41 +08:00 via iPhone
    用 uie ,github 搜一下就好了。 你的文本其实很规则,抽取的是地址小区街道这种,自己标个几百条数据。训练下 uie ,如果没 gpu 就用 uie tiny 。
    skiy
        112
    skiy  
       2023-09-26 20:20:04 +08:00
    zcfnc
        113
    zcfnc  
       2023-09-27 00:01:20 +08:00
    几年之前做过一个和楼主基本 90%相似的需求,不过是用 nlp 的方式实现的,楼主要是还没找到解决方法我可以找找之前的方案
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1022 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 22:23 · PVG 06:23 · LAX 14:23 · JFK 17:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.