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

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 名称是否在内容中包含,但是效果就是识别比对的成功率很低,不知道有没有啥好的解决办法,还是基本上就是无法实现的需求。想向大神门求助!
8669 次点击
所在节点    Java
113 条回复
SZhan
2023-09-26 10:30:10 +08:00
@keepRun #61 感谢感谢!我看下,因为我是做 java 开发的,想通过 Java 的方式去解决,所以如果让直接上手大模型训练的话要时间精力去琢磨,那是不容易的
SZhan
2023-09-26 10:33:05 +08:00
@svipchao 不是这样的哦,数据来源是这样的,我们不直接和这个工单受理平台对接,是它受理平台推给一个数据中心,然后数据中心通过库表推送的方式给到我们的,不涉及 ip 的哈,所以只有这个内容作为依据去分析
pengtdyd
2023-09-26 10:33:24 +08:00
#18 说的 LBS 和 NER 分别是什么意思,有人能解释一下吗?????????
SZhan
2023-09-26 10:34:54 +08:00
@kingfalse 这价格,,,也是没谁了,后面还是继续这么弄得么?
zrc199021
2023-09-26 10:37:42 +08:00
去网上找找那种人工标注平台,说不定更便宜…
SZhan
2023-09-26 10:39:34 +08:00
@pengtdyd lbs 之前有接触过,定位位置服务吧,这个应该好理解一点,然后 NER 中文对应的就是命名实体识别,从一段话中抓取出一些不同领域的词,像我这种就是,从一段话中抓取出具体地址,就是 NER 干的活,然后我需要 LBS 服务去根据识别到的地址获取具体的位置(经纬度)或者所属信息(区、街道、社区)
SZhan
2023-09-26 10:40:30 +08:00
@pengtdyd 希望一点小小拙见能帮到您理解,如果有讲的不对的,各位评论区大佬随时指出
SZhan
2023-09-26 10:46:36 +08:00
@liuzhedash
@keepRun #66 没事没事,大家都是探讨问题,您不要生气哈,AI 的话确实肯定是耗资源,我会去和甲方领导提出的。然后我目前能做到的就是已经有区、县、街道、社区 明显字眼的匹配到,但是对于后面的地点就抓不到,我参考下您之前发的那个学习一下
SZhan
2023-09-26 10:50:14 +08:00
@lrzsw2008 是的 人工审核的界面开发了 然后他们说人工的事干了 要你们开发干什么
zjuster
2023-09-26 11:02:09 +08:00
@pengtdyd

lbs: location based service, 用在业务场景里,就是根据访问者设备的一些地理位置特征,比如通过基站、wifi 、网络 ip 等综合得出此设备所处的实际物理位置,甚至可以得到具体的经纬度坐标(注意国内经纬度应用通常存在故意混淆的偏差)。这个访问地址,就可以帮助 App 和应用程序快速给用户反馈。
举个例子,打开外卖软件,外卖软件会推荐周围的可以点餐的餐厅,这就是自动根据你的地理位置计算得出的。如果你在系统里把他的地理位置权限关掉,他就做不到了。

NER: named entity recognition, 命名实体识别。 实体在自然语言分析行业中,可以理解为一个物体,一个对象,可以是具体的也可以是抽象的。在给定的条件下,例如我指明“苹果”是一种水果的名称,那么 NER 就是从文本中,抓到指代“/水果/苹果”的实体词条出来(并且尽量避开手机品牌“苹果”)。 比如“苹果必须削皮吃吗”, 这里就应该识别;“苹果手机啥时候发货”,这里就不能识别。
这种识别和 chatgpt 是类似的,本质上是一个数学概率和逻辑关系的模型,中间也需要很多的人工标注,可以认为是有间监督的机器学习。

---
@SZhan 这就是 toG 业务的难点了,屁大点预算想发射卫星。我建议在 Github 上找点开源的模型工程(开源大模型,或者开源的 NLP 功能挂件、分词器。),然后搞一个文本地址库做三元组数据库,写一个强匹配的规则引擎,直接用前面的地址文本库做文本相似度匹配,给出 1-2 个结果,让操作员自己去选最后的结果。
毕竟只设计地理位置这一个领域的文本数据,准确度是可以达到一定程度的(但按照我的经验,到 90%就不错了)

什么大模型计算,让对接业务的销售去吹:得加钱。
注意,地址库每年都会有一些变化,比如上面回复的统计局地址,其实都是有过期消息的(毕竟是 年度的),如果用了这种方案,后面更新也得注意,省得被那边客户骂。(同样,得加钱)
SZhan
2023-09-26 11:16:40 +08:00
@liuzhedash
@keepRun #68 两位好,我想到一个问题,我之前也有做过一个测试,我没有用一个一个字从头匹配。我是把一段话,首先进行清洗,把内容中已经有明显的提到区、街道、社区的提取出来,然后使用 jieba 分词 java 版,把分词后的 list 去和 poi list 匹配。这时候分为两种情况:1 、如果第一步清洗的时候已经有了结果,poi 列表就可以缩小了,只需要把对应区的 poi 来字符串匹配 2 、如果没有任何清洗结果,那就全量的 poi 直接丢进来字符串匹配
不过,设想是好的,但就存在一个问题,poi 里数据虽然多,但是经常抓不到正确的数据,因为分词过后打散的词比如在前两个“服务”、“好”什么的词就能在 poi 库里抓到,但是人家确实是个 poi ,就很绝
SZhan
2023-09-26 11:25:12 +08:00
@zjuster #90 大佬说的对,其实不管怎么样,哪怕前期开发实现了,后期维护也是一个痛点!他们想要的是纯机器,不人工介入。人工修改的界面都给他们开发好了,然后他们不想投入人去做。然后我们销售售前只管 tmd 接项目,项目中标,开发入场,他们就啥事不管了,继续去找下一个项目踩雷去了,目前就是这样,从一个坑项目到另一个坑项目循环。
SZhan
2023-09-26 11:28:31 +08:00
@lscho 那您是直接把小区的数据丢进去直接匹配么?我这个是全市的,除了小区还有各种基础设施、商业综合体、超市乱七八糟什么的,是给城管用,总共也几十万个兴趣点吧
SZhan
2023-09-26 11:36:46 +08:00
@season8 分词的我做过一个类似的实验,把内容分完,如果匹配识别区、街道、社区是没问题的,但是具体的地点,可能一个地点会被拆成零零散散的几个字,也可能是一个完整的地点,那么完整的地点可能就会识别成功,但是被拆成字的话,有的就会直接就会返回一个跟内容里完全不相关的兴趣点,就是兴趣点太多太杂了。
pengtdyd
2023-09-26 12:03:17 +08:00
@zjuster @SZhan 谢谢您的解答
mmdsun
2023-09-26 12:33:17 +08:00
政府项目可以用微软的不?申请微软家的 Azure OpenAI 服务
liuzhedash
2023-09-26 13:51:24 +08:00
@SZhan
这个问题我也没有好的思路,因为本质上看,一个 1-2 个字符的词,脱离了上下文,本身携带的信息量太少了,匹配不准确乃至错误是不可避免的。
SZhan
2023-09-26 14:08:41 +08:00
@mmdsun 这个是不行的,服务器通外网被审计了,需要发工单。正常 curl 百度之类的会提示无访问权限,通一个网址要一步步工单申请,走政府领导签字审批
keepRun
2023-09-26 14:12:58 +08:00
@SZhan 我以前做快递地址识别处理方式是按我那种算法,省识别完了就把对应字符串删除,以此类推,最终剩下来的就是客户最终留下的可能某某超市附近这样的详细地址
keepRun
2023-09-26 14:20:23 +08:00
@SZhan 你要是想了解我的那种算法,可以加我微信

不过我感觉你这个是业务问题,不管算法怎么提高,总会有错误情况发生,这个问题应该在业务层面能够容忍并有改进措施,比如:信息错误了,有人看到了可以纠错,然后人工审核或者啥其它方式

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

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

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

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

© 2021 V2EX