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

361 天前
 SZhan
最近有一个很折腾人的需求。由于推送过来的原始数据里缺少客户需要的字段,所以就产生了一个需求,需要根据一段工单内容,识别涉及的区域、街道、所属社区。我开发又优化了几版,都达不到客户想要的效果。工单的内容因为是人编写的、无规则的,所以就不知道会在哪里产生地址信息:
例 1:自己是新吴区鸿山街道鸿*苑六二期 xxx 号 xxxx(隐私处理)的住户,想在屋面里面修葺两个小房间,目前就修了一个门框,xx 就直接来拆掉了,但是其他人家都造好了,都已经住进去了,都没有拆。服务对象表示自己家这里有留消防通道,其他人家都没有留。服务对象表示鸿*苑六二期 xxxxxx 号楼十八层的业主(无法具体提供信息,但表示这些楼栋 xxxxx 、xxxx 室都存在该情况),已经造好通水电入住,自己认为处理部门应该一视同仁对待。
例 2:服务对象来电反映目前通*新村 1 号附近有两条流浪狗将自己车辆的保险杠咬坏,拨打 110 反映表示需要 xx 协助 xx 流浪狗。
例子是这样的,地址信息可能随时出现在内容中,有可能会直接有区、街道、社区信息,也可能仅仅只有一个地点(如例 2 ),需要识别出具体地点,再反编地理信息获取所属区、街道、社区。所以就整的很困难。我目前是这样处理的:
先直接查所有的区、街道、社区信息,到工单内容中循环比对匹配是否包含,抓出来明显提到的区、街道、社区(例 1 类似的内容)。如果像例 2 那样内容只提到了一个地点,我的处理是,获取了一批城市的所有 POI 点位(总数几十 w 条,太多了),然后把小区、商场综合体、个体店铺、城市基础设施等一些基础的城市地理 POI 点位去和内容比对 POI 名称是否在内容中包含,但是效果就是识别比对的成功率很低,不知道有没有啥好的解决办法,还是基本上就是无法实现的需求。想向大神门求助!
8223 次点击
所在节点    Java
113 条回复
crissx
361 天前
这是 chatgpt 擅长的
可以考虑购买国内代理的一些第三方接口
registerrr
361 天前
@registerrr
ME:
“自己是康桥悦然园 1 期业主,小区 9 号楼前的变电站附近将建造垃圾分类房,服务对象表示垃圾房的位置在沙盘上没有,在合同书上规划在 8 号楼附近。反映后,区城管、街道坏卫、街道、消防都认为垃圾分类房位置不合理,要求开发商拆除,但开发商以区城管未下发红头文件为由迟迟不愿拆除。”

ChatGPT
在提供的文本中,存在以下地址信息:

1. 康桥悦然园 1 期 - 这是小区的名称。
2. 9 号楼 - 小区中的楼号。
3. 8 号楼 - 小区中的楼号。
请注意,这些地址信息用于描述文本中的地点和情境。



ME:
服务对象来电反映广益佳苑一期 38 号楼至 0 号楼北侧有业主通为不牵绳,存在安全隐患,服务对象不认可,自己已经反映小区流浪狗的问题,了解到流浪狗是城管负责,目前需要公安同处理业主遛狗不牵绳的问题。

ChatGPT
在提供的文本中,存在以下地址信息:

1. 广益佳苑一期 - 这是小区的名称。
2. 38 号楼至 0 号楼北侧 - 描述了在小区内的具体位置。
3. 公安 - 涉及到处理业主遛狗不牵绳问题的相关部门。
这些地址信息用于描述文本中的地点和情境。


ChatGPT 依旧稳如老狗啊,可惜不能用
SZhan
361 天前
@lopssh nlp 我只用过他的产物,像分词器,分词器将一段话分开,然后丢到 poi 库里比对,结果带来的缺点是,比对不到内容里真正属于它的那个 poi 地点
zjuster
361 天前
再补充一下 “获取了一批城市的所有 POI 点位” 这个想法我们在项目实施中也是考虑过,并且爬取过一些邮政网站的地址库。最后放弃了,脏数据太多,时效性也很差。

你给的 demo 里,最大的问题是单地址信息 POI 的输入。 如果是这样的输入,搜索引擎一定会按照自己的相关性算分额外排序,很难命中第一条结果。 而你通过后台接口(非 web ),有可能获得更多的候选结构自己筛选。

当然最好的方法是,你既然是给某个地区的机关试用的,访问默认带上地区限制试试。 (有很多大开发商的楼盘是全国都有重名的)。
---

前面没有给具体的案例,如果是你说的这种反馈的话,NER 感觉是不合适的。

要不要考虑下菜鸟和邮政平台的地址,他们结合访问的 IP ,可以给出更合理的地址建议。
zjuster
361 天前
NER 要用好,前提是有好的文本分析和分词器,所以我们之前搞搜索的时候,最难的分词已经被解决了。
所以我前面的回复可能不适合楼主的问题,毕竟前置要求太多了,成本也就太高了。

建议还是尝试直接找第三方的接口服务来解决。 建议试试菜鸟、京东、甚至其他大型快递物流公司的地址接口,包括邮政管理部分,可能也有类似的标准接口。
me1onsoda
361 天前
狗屁通不让用,其他国产模型呢
fengzhongdeyihan
361 天前
楼主试试看这个.https://wangzc.wang/smartParsePro/
SZhan
361 天前
真的很感谢帖子里各位大佬们提出的建议,这个需求我已经磨了一个多月了,你们敢想象,这个功能所属的项目,才几 w 块。如果说对接 chatgtp 高德 百度这些三方厂家,那钱怕是只能让我自己掏了。其实本身过来咨询各位的意见,是想了解能否仅仅通过我自己去设计、实现这些功能,但是看起来,很难很难。讲真,别碰 zf 项目,一群领导总想教人去做功能,在他们看来,这就是一简单的识别,“为什么这个单子里提到了 xx 小区,你们识别不到呢”,“你们能不能做到它提了某个小区,就可以抓取到他”,“这个识别率怎么那么低”...听了太多,累了... 不忍心去和各位说这样那样的方案不行,我自己可以去继续琢磨琢磨实现,但是用在这个项目上,它不配。再次谢谢各位啦!我一条一条都会好好看的。后续准备去提实现不了,找原数据提供方重新对接吧,做不到就做不到了。
SZhan
361 天前
@zjuster #20 是的 我目前往 poi 库匹配这个方向走 就算有匹配上的 也因为脏数据太多 很多都是匹配到一些奇奇怪怪的地址,您看图;然后我们是做市局的项目,虽然是市,但是市内还有很多重复的,比如有的一条路,全市就有 17 条重复的
theniupa
361 天前
按我理解可以输出一份实现方案和相应的成本预算。推动让商务去沟通解决。
除非是标书黑纸白字明确写了在当前的合同范围内要实现这个功能。
要说能不能实现,当然能实现,最终还要看你们项目成本,如果是个内网环境这一套东西还挺多的
chitanda
360 天前
不好用 ChatGPT 的话,完全可以换成国内的大模型呀。据我所知,文心一眼,通义千文这些早就备案过了
iridium945
360 天前
整个项目才几万块就想自己造轮子?有点搞笑了兄弟…当我看到你居然认真造了一个多月就更绷不住了…
wateryessence
360 天前
opennlp 做 ner 任务,再手动加点规则就差不多了
x9sec
360 天前
JioNLP 试试。
e7
360 天前
一个月几百块你玩什么命啊
bybyte
360 天前
@SZhan 纯 java 估计很难,java 做个前端可以
SZhan
360 天前
@theniupa 嗯嗯会说的,这个项目不在规划标书里,是另外提出的,本来说没有钱的,后来拨了点款。
yinmin
360 天前
这个只能靠 ai 去解决,要么接入国内的 ai 大模型,要么自建 ai 模型,靠关键词匹配是走不通的
paopjian
360 天前
我记得 paddlenlp 里有地名识别的项目,你要是自己用可以偷偷用,千万别公开,千万别让领导试用,能人工解决的问题全去人工解决
SZhan
360 天前
@iridium945 可是现实就是,在现场开发,带头的项目经理也不会去拒绝需求,都是顺着他们。然后汇报的时候稍微提出一点和他们相反的意见,就会面临大量的反驳,以及不好的脸色。就是这样,,,围绕这个识别的问题就说了一个多月。心累...

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

https://www.fyfyfm.apispeedy.workers.dev/t/976864

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

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

© 2021 V2EX