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

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

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

一开始的思路是,OCR -> 正则匹配 可是后来发现每家店的小票格式都不同,难以预料未来还有什么格式。 代码没法写。
然后,刚好文心一言 Api 可以用了。 那就 OCR -> 文心一言。
搞定下班
SZhan
2023-09-26 19:34:24 +08:00
@eddiechow 感谢暖心的回复 对的,最好的方式一定是在源头,这个问题也一直在跟客户提,让他们去协调的。可能是数据提供方并不够重视吧,然后客户就以时间紧的理由再丢给我们,让机器去自动识别😰如您所期,会顺利的,谢谢!
aigonna
2023-09-26 20:15:41 +08:00
用 uie ,github 搜一下就好了。 你的文本其实很规则,抽取的是地址小区街道这种,自己标个几百条数据。训练下 uie ,如果没 gpu 就用 uie tiny 。
skiy
2023-09-26 20:20:04 +08:00
zcfnc
2023-09-27 00:01:20 +08:00
几年之前做过一个和楼主基本 90%相似的需求,不过是用 nlp 的方式实现的,楼主要是还没找到解决方法我可以找找之前的方案

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/976864

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX