laravel 分词搜索匹配度_【地名地址】面向智慧城市的高精度地名地址匹配方法...

点击上方蓝字关注我们↑↑↑↑   

2361c9a73a31b85185278dd1d0d92280.png

原 文 摘 要

针对智慧城市建设中各种业务数据对地名地址匹配准确度和效率不高的问题,本文提出一种面向智慧城市的高精度地名地址匹配方法。该方法在基于中文分词的地名地址匹配技术框架下,综合利用精细化地名地址库构建、地名地址特征分词库构建和基于用户搜索行为大数据分析 3 种关键技术提高地址匹配度和匹配精度。利用该方法对智慧德清建设项目中工商法人 6537 条数据和 130988 条精细化地址样本数据进行实验与分析。实验结果表明,在智慧城市大数据环境下,相比于传统地名地址匹配方法,该方法匹配精度高,效率也大大提升,同时在匹配度与精确度两个指标上匹配结果更加均衡。❖

0

引  言

当前,智慧城市的建设如火如荼,空间位置信息作为城市信息的重要维度受到越来越多的重视。在城市工商、税务、规划、公安、银行等职能单位拥有的业务数据中,通常以文本形式描述区域、街路、门牌号码等空间位置信息[1]。如何将这些文本描述的空间位置信息与精确的空间位置进行匹配是地名地址匹配技术的关键问题[2]。因而,高效、高精度的地名地址匹配技术成为智慧城市建设空间位置信息获取与应用的必然需求[3]。如何建立适用于大数据环境下的地名地址匹配方法,并提供数据分析、定位以及可视化等功能,已成为我国智慧城市发展中的现实需要[4]。

由于中文地名地址的特殊性,中文地名地址的匹配一直以来也是地理信息领域研究的热点和难点问题。近年来,国内专家学者针对地名地址匹配的工作开展了大量研究。马照亭等基于可伸缩地址模型提出一种基于地址分词的自动地理编码算法,根据地理编码编制地址词典,利用地址词典进行地址分词形成地址要素及其级别,最终根据查询条件进行匹配[5]; 赵阳阳等提出基于地址要素识别机制的地名地址分词算法,基于整词二分分词词典,采用 FMM 算法,增加了基于地址要素的识别机制,从而有效地实现了对地名地址串的拆分[6]; 魏金明等针对市域地址数据特点,提出了一种基于置信度的地址匹配方法,该方法以地址数据库为基础,依托规范化地址编码,利用分词算法和置信度筛选的方法匹配数据,通过人机交互的方式扩充地址库,实现了地址的自动匹配定位[7]。

上述匹配方法主要都是从技术层面在某一个具体的关注点上提高匹配的精度,忽略了智慧城市大数据环境下的数据本身语义多样性、采集源异构等特征。目前这些高效准确的地名地址匹配技术并不能完全满足智慧城市建设的需求,无法提供高效精准的匹配和智能化服务,兼容性不强,覆盖面不广。因此,本文提出一种面向智慧城市的高精度地名地址匹配方法,首先在基于中文分词的地名地址匹配技术框架下,通过精细化标准地名地址库构建覆盖全面的全文检索索引库; 其次结合中文地名地址语义特点和通用地址表述方式,对通用地名地址词组设置不同的权重,构建面向地名地址匹配的特征分词库,以提高分词库的专业性,降低分词过程中的冗余和错误率; 最后,利用深度学习技术,将用户搜索行为和匹配结果进行统计与分析,进一步补充和完善专业特征分词库,提高地名地址匹配效率,以满足智慧城市建设的需求。

1

基于中文分词的地名地址匹配方法

基于中文分词的地名地址匹配采用的是全文检索技术[8],主要分为索引创建和索引搜索两个过程( 如图 1 所示) 。高精度地名地址库作为样本库,每一条地名地址都对应采集的精确空间坐标,索引创建利用分词库,通过分词组件对样本库中的地名地址文本字符串进行分词,形成一个一个的单词,然后对这些单词建立索引。匹配就是索引搜索的过程,将待匹配的字符串通过分词组件进行分词,然后与索引库中的索引进行匹配,找出匹配度最高的索引,然后得出与地名地址样本库中一致的空间位置,以此实现非空间信息向空间信息的转换[9-10]。

0c27be2f0d8d90d00405eabc7fa7d267.png

索引创建和索引搜索都离不开分词。分词是通过分词算法将标准化后的地址字符串分解成多个地址要素词组的过程。目前常用的中文分词方法主要有基于字符串匹配的分词方法、基于统计的分词方法、基于知识理解的分词方法和基于语义的分词方法。以“浙江省杭州市西湖区保俶北路 83 号”为例,对地址进行分词,可得到“浙江省 | 杭州市 | 西湖区 | 保俶北路 | 83 | 号”这组地址要素词组。同一条地名地址字符串,不同的分词库和不同的分词算法会得出不一样的分词结果,如上述地址也可分词为“浙江 | 省 | 杭州 | 市 | 西湖 | 区 | 保俶 | 北 | 路 | 83 号”。

影响全文检索的核心是样本库的详细程度和分词的准确性。样本库越丰富,描述越准确,则索引库越全,匹配的命中率和准确度越高。分词库越丰富,分词库语义特征越明显,则分词结果越好,索引创建和索引搜索的准确度越高。

2

面向智慧城市的高精度地名地址匹配方法

2.1 构建精细化的标准地名地址库

标准地名地址库的建立是地址匹配的基础和前提,需要将采集的城市地名地址按照确定的模型进行标准化,然后对标准地址要素进行编码。这些地址要素一般包括行政区域、街道名、小区名、门址和楼址、标志物名等。标准地名地址数据库存储各类地址的标准名称和空间坐标的唯一编码。在匹配过程中,输入的关键词需要在标准地名地址库中进行检索和匹配,因而标准库越详细,匹配的契合度就越高。本文采用以下3种方式实现全覆盖、高精度、实时更新的智慧城市标准地名地址库。

1) 多源采集模式。在传统的人工测绘采集方式的基础上,结合高分影像和在线众包模式实现区域内地名地址的全覆盖和高精度采集,采集的地名地址细化到门牌楼址信息。

2) 地址线性内插和模拟。对于不能够在标准地名地址库中准确查询匹配的数据进行地址线性内插和模拟,基本实现全覆盖地址数据[11]。我们利用待匹配地址的门牌号在地址库中查询相邻最近的前后一对地址门牌号,结合所在道路的门牌号编码规则,根据距离线性内插得到待匹配地址的空间位置。如查找 7 号地址,可利用已有空间位置的 5 号和 9 号进行内插和模拟。同时,当有新的门牌地址空间数据更新到地址空间数据库时,将之前匹配结果中内插匹配的部分重新利用上述流程计算一遍,让内插匹配的空间位置更接近真实位置。

3) 建立协同更新机制。在精细地名地址采集形成的数据库体上,采用多部门业务协同机制,实现多个涉及地名地址数据使用与更新的部门( 如民政、测绘、工商、公安) 之间的业务协同,实现地名地址数据的实时更新[12]。

通过以上 3 种方法的结合使用,可以形成完整的智慧城市地名地址数据库,在此基础上对所有的数据进行检查和标准化,形成精细化标准地名地址库,为地址匹配和索引库建立奠定基础。

2.2 建立面向地名地址匹配的专业特征分词库

中文地址分词具有准确性、高效性、通用性、适用性 4 个原则[13]。其中准确性关系到地址匹配的效率,提高分词准确性是地址分词的主要目标。国内对中文分词技术已进行了大量的研究,技术较为成熟,分词准确率已经超过 95%,本文主要采用基于字典匹配的分词方法。

基于字典匹配的分词方法又叫作基于字符串的分词方法或机械分词方法[14]。这种方法是基于词典的,即分词库,然后将待拆分的汉语字符串,按照一定的扫描规则与分词库的词条进行匹配。因而,基于分词库的匹配模式,最关键的是分词库的内容,不同的分词库和解析器,对同一个地址字符串则会分解成不同的词组[15]。如“保俶北路 83 号”可能会被分解为“保俶 | 北 | 路 | 83 | 号”或 “保俶北路 | 83 | 号”,显然后面一种分解更加符合实际情况。为保证地址字符串能准确地分解为符合实际需求的词组,本文通过在精细化标准地名地址库的基础上,对分词库的词语进行权重设置,建立面向地名地址的专业特征分词库。

1) 在分词库中加入具有地名和空间特征的通用词语,如“街道、路、巷,楼、幢、栋、小区”等词语,分词库中对这些词语设置高权重值。

2) 通过正则表达式,从精细地名地址样本库中提取具体的地名地址词组,主要包括具体的行政区划名称、街道马路名、楼幢名等,将这些词语也加入分词库,并设置高权重值。

3) 在基础中文词库的基础上减去与地名地址关系不大的一些特征词,降低与地名地址无关匹配,提高地名地址匹配的准确度。

2.3 利用深度学习完善分词库和提高匹配精度

随着人工智能技术的不断深化,深度学习在机器学习领域获得巨大进展,它用非监督式或半监督式的特征学习和分层特征提取高效算法来替代手工获取特征,在学习各类数据的规律中扮演着重要的角色[16]。类似于人类的学习能力,深度学习旨在利用计算机程序模拟出自学习系统,完成各种学习,可以使分类或预测变得更加简单[17]。

在智慧城市建设与出行导航过程中,我们发现描述空间位置语句十分复杂,目前还没有技术可以实现 100%的正确匹配。采用深度学习,让用户搜索行为和匹配结果进行学习,则可以不断提高匹配精度。用户在使用地名地址匹配进行检索时,都会使用正确且具有实际空间语义的词,这些词隐藏着用户行为习惯和个人认知,将这些词语进行记录,不断地加入分词库,让分词库不断完善和专业化; 同时将用户从匹配候选结果中选择的结果与搜索关键词进行关联,建立样本和标签的对应关系,生成深度学习样本数据,不断进行训练和学习,当下次进行相同关键词进行地名地址检索时,深度学习优先选择与之关联的地名地址作为结果词条。通过深度学习的地名地址匹配方法能预先自我纠错,提高匹配精度和效率,自动获取和发现所需要的知识和信息。

3

试验与分析 

为了验证上述匹配方法的有效性,在智慧德清时空信息云平台的建设过程中,本文以智慧德清工商企业 6537 条数据作为待匹配试验数据,以德清 130988 条精细化为地址样本数据,通过空间内插和模拟后新增了 52300条地址数据,形成 183288 条全覆盖地址数据,并根据在线业务协同系统,每天平均更新 50 条地址数据和 43 条地名数据。在中文盘古分词库 146260 条的基础上新增 821条德清地名地址专业词,形成智慧德清地名地址专业分词库,见表 1。

f8521206de17e915b2f949c6dc0f9418.png

试验结果表明,在默认的中文分词匹配方法下,匹配准确率为 65%,通过精细化地址样本库完善能提高到85%,通过分词库优化能提高到 78%,通过基于用户搜索行为的深度学习能提高到 70%,通过 3 种方式的综合运用,可以将整个匹配结果从原来的 65%提高到 90%,如图2 所示。

38ba3a8752a258457a172a9baeff0af9.png

4

结束语

智慧城市大数据环境下的地名地址匹配技术对推动智慧城市、智慧应用的发展提供了有力的技术支持。本文基于中文分词的全文检索匹配方法,针对全文检索的原理,提出通过精细地名地址库的建立、地名地址业务协同模式的采用来实现地名地址数据的常态化更新; 提取行政区划、道路、房屋等测绘地理信息专业词谱,建立面向地名地址匹配的中文分词库; 通过对用户搜索行为的深度学习来完善分词库,并提高匹配关联度 3 种方式的综合运用水平,能有效提高地名地址匹配准确率,能够较好满足智慧城市建设中各类专题部门的地址信息空间化需求。该方法在处理智慧城市大规模数据时,相比于传统地名地址匹配算法,在一定程度上提升了效率和性能,有效地提高了地名地址在智慧城市建设中的应用价值。

参考文献

[1] 李琴,梁寒冬,付蔚霞.宁波市地名地址数据建设与用[J]. 测绘与空间 地 理 信 息,2017,40 (8) : 212 -214,217.

[2] 江洲,李琦.地理编码( Geocoding) 的应用研究[J].地理与地理信息科学 2003(3) : 22-2.

[3] 李林,程宇翔.智慧重庆地理编码系统研究与应用[J].地理空间信息 2015,13(6) : 40-43,12.

[4] 许普乐,王杨,黄亚坤,等.大数据环境下基于贝叶斯推理的中文地名地址匹配方法[J]. 计算机科学, 2017,44(9) : 266-271.

[5] 马照亭,李志刚,孙伟,等.一种基于地址分词的自动地理编码算法[J].测绘通报 2011(2) : 59-62.

[6] 赵阳阳,王亮,仇阿根.地址要素识别机制的地名地址分词算法[J].测绘科学 2013,38(5) : 74-76.

[7] 魏金明,仲伟政.基于置信度的地址匹配方法初探[J].测绘科学 2015,40(1) : 122-125.

[8] 李奇.基于 REST 风格的地理编码服务研究[D]. 青岛: 山东科技大学 2012.

[9] 张雪英,闾国年,李伯秋,等.基于规则的中文地址要素解析方法[J].地球信息科学学报,2010,12 (1) : 9-16.

[10] 吕欢欢. 基于地理信息公共服务平台的语义地名地址匹配方法研究[D].阜新: 辽宁工程技术大学 2014.

[11] 闵星,周冲,曹伟.基于内插的一种门牌地址匹配方法的研究与实现[J].测绘与空间地理信息,2015,38(6) : 119-120,12.

[12] 李东阳,方俊杰,许大璐.GIS 技术支持下的多部门地名地址业务协同研究与实现[J]. 测绘通报,2016(10) : 121-124.

[13] 谭侃侃. 基于规则的中文地址分词与匹配方法[D].青岛: 山东科技大学 2011.

[14] 程琦,梁武卫,汪培.基于复合字典的地名地址匹配技术[J].城市勘测 2018(1) : 76-78,82.

[15] 陈建英. 面向中文地址的分词引擎设计及实现[D].北京: 中国科学院大学 2015.

[16] 奚雪峰,周国栋.面向自然语言处理的深度学习研究[J].自动化学报 2016,42(10) : 1445-1465.

[17] 来斯惟,徐立恒,陈玉博,等.基于表示学习的中文分词算法探索[J].中文信息学报 2013,27(5) : 8-1.

作者简介张剑( 1985- ) ,男,湖北监利人,浙江省自然资源监测中心工程师,硕士,2010 年毕业于中南大学地图制图学与地理信息工程专业,主要从事空间地理大数据分析及应用工作。叶远智,浙江省自然资源监测中心。翁宝凤,浙江省自然资源监测中心。

End

原载于《测绘与空间地理信息》2019年11期。地名笔谈小组搜集整理,如文字识别录入偶有差错,请见谅。非商业用途,如有侵权请联系删除。转载请注明。

                     往期推荐                      

【地名地址】地名地址应用服务系统的研究与实现

2020-10-15

dbbcb543b89ff31de7e1abd9c9d6af97.png

【地名地址】基于地名地址的政务数据空间化方法

2020-11-03

9ff6fd0ef14b45d18a1f7e3061a570de.png

【地名地址】县区地名综合数据库建设研究

2020-11-26

5973a8e6f51838f4a2d0eb3b77e6d5aa.png

24ac7da13e5a7543498c799866fa08d5.png

331369b6e979b6a0a94f263830ded4e8.png

点个在看,你最好看

49d943d9fa1786bbef7735bb0df49b25.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/340631.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用通用mapper实现条件查询_使用dsum轻松搞定多条件查询,学会它,再也想用sumifs了...

在excel中条件求和想必大家都不陌生,这个可以说是我们工作中经常遇到的问题,常见的条件求和函数有sumif以及sumifs,但是还有一个更加强但知道的人却非常少的函数,他就是dsum函数,dsum相交于sumif以及sumifs函数理解起来…

输入文字自动生成图片_批量生成变化的图片文字海报

最近“双十一”活动大家已经进入了鸡血状态,运营的小伙伴给设计出了个难题,搞的设计小伙伴们进入了癫狂模式。本着工具提升效率的原则,我又开始去研究如何批量修改图片内容了,小小的成果和大家分享一下。提出问题为每一位支付了定…

生成私钥 p q rsa_【安全】理解 RSA 算法

Public-key Crytography简介Public-key cryptography (公开密钥加密) 又称 asymmetric cryptography (非对称加密),即存在两把不同的密钥,分别称为公钥 Pu 和私钥 Pr,公钥通常用来加密明文 M,只有私钥才能解密密文 C,如…

Java:如何创建轻量级数据库微服务

基于云的Java数据库应用程序的数量每分钟都在增加。 许多组织部署了数百甚至数千个微服务实例。 但是,相对于运行时环境,大多数应用程序会带来惊人数量的不必要开销。 反过来,这会使应用程序运行更慢,运行成本更高。 在本文中&am…

垃圾分类毕设java程序_垃圾“拍一拍”,分类不用愁!生活垃圾分类查询小程序上线啦...

垃圾种类太多?分类容易搞混?乐清人 注意啦,拿起手机就能查!11月6日,生活垃圾分类查询系统登陆乐清市综合行政执法局官方微信公众号,输入垃圾名称即可快速了解垃圾所属哪一类,还有拍照识别查询&a…

带有Prometheus的弹簧靴和千分尺第5部分:旋转Prometheus

以前,我们获得了Spring Boot Application适配器,以便为Prometheus公开端点。 该博客将重点介绍如何设置和配置Prometheus,以便为Spring Boot端点提供服务器。 因此,让我们开始使用docker来启动Prometheus服务器。 在继续进行Pr…

允许跨域访问_PHP设置多域名允许跨域访问

php中文网最新课程 每日17点准时技术干货分享 针对 PHP 语言设置多域名允许跨域访问 服务器变量: 服务器变量存储在 $_SERVER 数组中,在这个数组中有一个特殊的键值:HTTP_ORIGIN。 这个键只在跨域的时候才会存在值,同源时为空字符串 响应头设置允许某域名访问:access-cont…

python函数的作用降低编程复杂度_Python函数式编程

lambda本文将介绍Python中函数式编程的特性。在对函数式编程的概念有了了解后,本文会介绍iterators和generators等语言特性,还有itertools和functools等相关的库。函数式编程本章节将会介绍函数式编程的一些基本概念;如果只是对Python的语言特…

Apache Camel 3.1 –即将推出更多骆驼核心优化

希望一切都很好,您可以安全进入2020年。 Camel团队已经在忙于开发下一个Camel 3.1版本。 目标之一是继续优化骆驼核心,这一次我们花了一些时间来寻找路由引擎中的一些热点。 我们所研究的方面之一也是在Camel路由的每个消息中发生的对象分配。 JVM本身…

判断字符为空_算法题:字符串转换整数 (atoi)

题目描述题解分析他人更优解一、题目描述二、题解import math class Solution:def myAtoi(self,str):str str.strip() #去除字符串两边的空格if len(str) 0: return 0 #如果字符串为空返回0if not str[0].isdigit() and str[0] ! - and str[0] ! : #判断第一个字符是…

python 3.5.2设计页面_怎么解决win10系统搭建Python 3.5.2开发环境的处理方案

今天小编告诉大家如何对win10系统搭建Python 3.5.2开发环境进行设置,可能很多用户都不知道怎么对win10系统搭建Python 3.5.2开发环境进行设置,但当我们遇到对win10系统搭建Python 3.5.2开发环境进行设置的问题怎么办呢?遇到这种情况不要着急&…

Eclipse系列的隐藏宝藏-2019年版

Eclipse Collections是一个开放源代码Java Collections框架。 在此博客中,我将演示该框架的五个鲜为人知的功能。 我在去年的Java Advent Calendar中发布了一个类似的博客 。 请参阅博客末尾的资源以获取有关该框架的更多信息。 1. countBy() :要查找特…

mongodb一致性协议_mongo的怎么保持事物的一致性-问答-阿里云开发者社区-阿里云...

http://docs.mongoing.com/manual-zh/tutorial/perform-two-phase-commits.html要么操作全都执行,要么都不执行,不能执行一半,改了几条数据了,看哎哟好像不对,那扔着吧。Consistency 在数据库领域的意思跟在分布式系统…

picturectrl控件中加载图片并显示_在 CRA 中使用 webp 图片提升加载性能

webp 是 google 提倡的一种新的 image 格式,意在为 web 提供体积更小的图片格式。通常情况下,无损压缩可以减小 25%-35% 的体积(有例外情况,反而会增大体积,但是是因为转换图片格式不兼容引起的)&#xff0…

怎么打开网卡rss_RSS 进阶篇:Huginn - 真·为任意网页定制 RSS 源(PhantomJs 抓取)...

定制网页RSS源主要有FEED43和Huginn两种方法。FEED43:简单免费,六小时抓取一次,每次抓取20条静态页面。使用攻略- RSS 入门篇:FEED43&FeedEx-为静态网页定制 RSS 源2. Huginn:自由度高,可设定抓取频率、…

编写junit 测试_编写JUnit测试的另一种方法(Jasmine方法)

编写junit 测试最近,我为一个小型个人项目编写了很多Jasmine测试。 我花了一些时间才终于感到正确地完成了测试。 在此之后,当切换回JUnit测试时,我总是很难过。 由于某种原因,JUnit测试不再那么好,我想知道是否有可能…

python4 什么时候_Python4要来了?快来看看Python之父怎么说

大家好,我是菜鸟哥,今天跟大家一起聊一下Python4的话题!从2020年的1月1号开始,Python官方正式的停止了对于Python2的维护。Python也正式的进入了Python3的时代。而随着时间的发展,关于Python4的发布也逐渐的成为了大家…

python类成员变量_Python 类变量和成员变量

Python 类变量和成员变量类与对象的方法我们已经讨论了类与对象的功能部分,现在我们来看一下它的数据部分。事实上,它们只是与类和对象的名称空间 绑定 的普通变量,即这些名称只在这些类与对象的前提下有效。有两种类型的 域 ——类的变量和对…

JDK 14 – JEP 361从预览中切换表达式

在我以前的文章中 ,我写了有关作为JDK 12的预览功能发布的开关表达式和相关增强功能的信息。随后,在JDK 13中提出了一些更改,例如使用yield关键字从switch块返回值并在预览中发布。 在即将于明年3月在GA上发布的即将发布的JDK 14版本中&…

输入一个正整数求所有素数因子_一个数如果恰好等于它的因子之和,这个数就称为完数。编写应用程序求1000以内所有的完数...

运行截图&#xff1a;代码import java.util.*;public class wanshu {public static void main(String args[]) {int sum 0,i,j,k,m 0;System.out.println(" 完数有&#xff1a;");for( j 2; j < 1000 ; j){for ( i 2 ; i < j; i){if( j%i 0) //此判…