您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 基于分词的地址匹配技术
基于分词的地址匹配技术摘要根据调查显示,城市信息中80%都与地理位置有关,而这些信息中大多数却没有空间坐标,自然就无法整合,无法进行空间分析。这对于城市信息化建设来说,是一个极大的阻碍。为了快速的推进数字化城市的建设和发展,有必要找到一种快速、高效的方法,将大量的与地理位置相关的信息,进行坐标编码,以便于GIS系统分析、查询。本文提出了一种“基于分词的地址匹配技术”,它能将大量的非空间信息高效的转化成空间信息,极大地提高了非空间信息数据的编码、录入效率。关键词地理编码地址匹配GIS系统地址数据库1.引言随着互联网、信息技术、GIS技术的发展,人们的生活越来越多的依赖于地图。地图制作需要的数据从哪来了?传统的数据采集方法,我们称之为“扫街”,就是通过人工的方法,到实地去采集地址的坐标。这种“扫街”的方法,由于成本太高,很显然已经不适应大量非空间信息的处理。本文提出了一种“基于分词的地址匹配技术”,它是通过构造一种分级地址库的方法,并转换成地址分词库,采用基于地址词典的中文分词技术,实现地址匹配。采用这种方法,易于维护修改地址库,并构建一个可自学习的地址库,不断丰富完善,提高匹配范围与匹配精度。1142.原理实现2.1.系统架构创建地址库工具程序标准地址库SQLDB地址索引库地址要素标准库SQLDB地址匹配引擎SmartLSPOI索引门牌号索引核心层Web服务器(ApacheDSO)查询匹配请求网络爬行器、网上黄页搜集、论坛数据提取特商数据转化等工具……Internet应用层数据纠错,地址压缩等应用程序反馈器地址分词交互工具行政区划门址道路POI数据准备层人工检查、纠错其它地址库转换工具①匹配日志115从上图可以看出,地址匹配分为三层,分别是:应用层、核心层、数据准备层。数据准备层处在整个架构的最底层,这主要是由于其提供了地址匹配引擎所需要的最基本的地理数据,没有基础数据,匹配引擎也无从谈起。中间层也就是地址匹配核心引擎,它主要利用数据底层提供的基础数据,进行相关处理,并转化成引擎服务所需要的相关索引数据和地址分词数据。所有对外功能接口都由该引擎核心层完成。最上层就是应用层,在这个体系里,所有的对外应用,都是通过WEB服务实现,web服务则是采用ApacheDSO技术实现。地址匹配引擎通过web服务的方式对外发布,方便应用层灵活使用。2.2.应用层应用层利用核心层提供的软件功能,为外部提供各种应用。目前,地址匹配主要有以下应用。1)对外提供地址匹配引擎服务。2)利用地址匹配引擎实现地址数据的查重、纠错。3)批量处理没有经纬度标示的地址数据,即:实现地理编码。4)在现有的地址数据之上,采用地址匹配引擎,实现大规模扩充地理信息数据。目前,由于“地址匹配技术”主要用于地址匹配服务,因此,文中涉及到“地址匹配”相关描述,很多都是指“地址匹配服务”。地址匹配引擎服务采用“Apache+DSO”的方式实现。2.3.核心层核心层为地址匹配提供软件功能实现。该层是地址匹配中最重要的一层,它直接关系到地址匹配的效果。地址匹配核心层目前主要有九大模块构成,分别是:地址匹配管理器,参数解析器,地址分词器,门牌检索器,楼牌检索器,方位词处理器,SmartLS检索器,组合排序器,测试模块。这九大模块相对独立,并基本上采用“高内聚、低耦合”的方式进行设计。2.3.1.模块介绍模块功能地址匹配管理器负责管理和协调搜索九大模块工作,并实现封装基本用户需求功能。参数解析器负责对外部传来的参数进行解析。包括对含有多个参数和参数值的字符串进行解析。地址分词器负责把用户输入的地址拆分成多个更细的地址要素单元。每个地址要素单元,都有地址要素名称、地址级别、父地址信息、经纬度等。门牌检索器实现给定道路,在门牌索引文件中查找对应门牌号。在用户地址经过“地址分词器”拆分以后,如果地址要素中含有门牌号,则通过其门牌索引ID,到门牌索引文件中查找相对116应的门牌号。SmartLS检索器负责请求网络SmartLS服务,并提取、处理返回结果。组合排序器负责多个匹配结果的组合排序,并返回最终结果。测试模块负责对各个功能模块进行测试,保证地址匹配其他八大模块的稳定性。2.4.数据层数据层在整个地址匹配架构中,承担着数据提取、加工、制作(转换)任务,为上层提供必须的数据支撑。目前根据功能可以将数据层分为三大工具,分别是:地址要素库创建工具、地址转化工具和地址分词交互工具。这三个工具在地址匹配数据层中承担着不同的角色和任务,他们缺一不可。4.3.1.标准地址要素库4.3.1.1.地址级别定义利用下面的图说明地址级别的关系。从通用分类来看,地址可分为有从属关系和跨从属关系的两类,市、区县、街道、社区、小区、地片、标志物等按行政区划范围从大到小可以建立从属关系。道路、街、巷的从属关系不明显,有很多跨越的情况。市区、县街道、镇社区、村小区、地片、标志物、大厦道路、街、巷北京市东城区钟楼湾区工人体育场北路丰联广场香河园北里小区117从属关系的地址可以建立逐级的父子关系,而跨从属关系的可以只建立一级父子关系。归纳地址级别关系见下表。基本地点名称级别从属的父级别常用的关键词中国1-1(无)省、直辖市21省、市省会、地级市32市区、县(县级市)43区、县街道、镇、乡54街道、镇、乡社区、村、小区、地片、标志物、大厦61、2、3、4、5社区、村、小区、大厦、里、弄、园、支弄、一区、二区、西里、公寓、宾馆、市场、广场、饭店、花园、特区、中心、西区、一里、二里、三里、四里、五里、寺、苑道路、街、巷101、2、3、4、5、6(含有一对多的关系)路、街、巷、头条、二条、三条、门牌号2010号楼牌号306、10、20号楼、号附属在门牌、楼牌后的POI名称406、10(无,各种词都可能),但是其父级别应当为道路或社区一级。自然语言的方位描述90-1(无)东/南/西/北/东南/西北/东北/西南/前/后/左/右/上/下/内/外/旁/相向/相邻等等表一地址级别118用例如下:北京市海淀区玉泉路8号玉海园一里7号楼该地址拆分标准化后为:北京市[2]海淀区[4]玉泉路[10]8号[20]玉海园一里[6]7号楼[30]4.3.1.2.地址要素标准库定义地址要素标准库主要是一个为了实现保存、修改、完善地址要素和转化地址要素信息功能的基础数据库。该库的建立也是在原形摸索中成长起来的,还需要不断的改进和完善。目前该库的字段定义如下:列名称说明类型约束备注id序号长整形流水号name基本地址要素名称文本地点的名称,细化到每一个分词,仅保留本级别的文字描述level级别整形参见表一,取值范围,0-90地址级别parent父级别的文字描述文本从属上一级的地址文字描述pcid父地址的CID(唯一)号长整形无符号,4个字节。唯一性从属上一级的地址CID的描述longtitude经度文本NTU单位latitude纬度文本NTU单位geo地址要素矩形范围WKT文本描述该地址要素的大致(外接)矩形范围。如:RECT(116061683976388,116464033989535)admincode行政区划编码整形如:110106000cidCID编码长整形无符号,4个字节。唯一性该CID码由“name”,“level”,“parent”三者通过CRC32算法生成的无符号32位整数next同义词的CID编码长整形无符号,唯一性同义词或别名的CID码cityid城市ID序号整形无符号,2个字节0---无效地址要素,但是为普通词汇1-9999---城市ID序号10000---国标志10001---省标志10002---未知城市标志119valid该地址是否有效整数单字节刚提取的、还没有得到验证的地址要素,改制就为0,如果数据操作人员已经验证则为1。4.3.1.3.同义词(别名)处理把同义词用文字描述写在对应的列中,通过地址要素标准库中的next字段形成连接,组成单向循环链表。对同义词描述:序号基本地点名称级别父级别的文字描述同义词的文字描述经度纬度100000000001西外大街10西城区西直门外大街XY100000000002西直门外大街10西外大街西外大街XY100000000003北京2中国北京市XY100000000004北京市2中国北京XY100000000005京2中国北京XY4.3.1.4.地址要素库存储地址要素库的存储最好采用大型数据库来存储,这样便于管理和维护。如果数据量还不大,地址要素基础库可采用中小型数据库,如:MySQL数据库,来存储和管理。4.3.2.地址要素库创建工具该工具简称“Rat”工具,意为“原始地址要素提取工具”。主要完成地址要素数据提取的功能。地址要素提取就是从一条比较全的地址信息里提取各种地址要素,并保存到数据库。地址要素的提取需支持各种地址数据。包括:行政区划、道路、门址、POI等。地址要素提取原则:尽可能的根据各种地址数据信息,提取地址要素,完善地址要素标准库。地址要素提取只在创建原始母库的时候使用,母库创建结束,该工具也将失去存在意义。1204.3.3.地址转化工具实现把地址要素标准库中的所有级别在1---10级的地址数据转化输出成分词数据文件,并把所有门牌号按照一定索引规则导出成为门牌号索引文件。此外,它还可以扩展支持将“地址要素标准库”中的数据导出成上层应用所需要的程序标准地址库。从母库转化到分词索引文件的功能可以做成模块库,以供外部程序调用。在更新地址匹配服务时,可以调用该转化程序,实现自动分词索引更新。4.3.4.地址分词交互工具地址分词交互工具主要完成地址要素数据的修正、添加、删除操作,对地址要素标准库进行逐步完善和补充。原型设计主界面如下:该界面实现了对地址要素的程序自动拆分和人工修正、补充的功能,最终完成地址要素库的人工干预、不断完善的循环过程(对应图2-1地址匹配架构图中的①循环)。1212.5.关键算法和数据结构2.5.1地址分词算法“地址分词算法”类似于“中文自动分词”,它就是在“中文自动分词”算法的基础上实现“地址分词”。跟“中文分词”不同的是:地址分词所基于的词库文件结构不一样,在地址分词文件中,每个地址要素(相当于词)含有多个字段属性,如:地址要素名称、经纬度、父级别ID及城市ID等,这些字段的加入,使得拆分地址变得更加准确。目前地址匹配引擎采用的是基于“正向最大匹配分词”的地址分词算法。算法流程如下图所示:开始i=0输入addressiLENch=address[i]Yi+=length查找最大匹配子地址:max_sub_address查找取得父地址与前拆分地址要素相等?Y还有父地址?N有同义词?N查找其更上一级地址要素Y下一个同义词Y添加到单字节地址要素ch=0x80YNi++结束Ni+=2NN地址分词算法流程图1222.5.2门牌号匹配、检索算法门牌号的检索可分为“数字门牌号”和“文字门牌号”检索。数字门牌号如:16号,28号院等;文字门牌号如:甲1号,乙三号院等等。门牌号的数据索引可以分为二级索引。一级索引存储某条道路对应的二级索引数据的起点和终点偏移;二级索引则存储该条道路的父地址要素、文字门牌数据存储起点、数字门牌存储起点,门牌数据存储终点。在具体门牌搜索过程中,可按以下流程实施:开始结束取得门牌索引序号取得门牌一级索引取得门牌二级索引查找门牌号起始和终点偏移取得门牌号索引数据保存最邻近门牌号取该条路的其他区域段有邻近路段?N匹配?NYY2.5.3匹配度计算匹配度为待匹配地址与标准地址之间的匹配程度。在本文设计的地址匹配程序中,首先通过地址分词,将待匹配地址进行地址要素拆分,然后将每条地址要素与标准库中的地址要123素进行相似度匹配计算,分别得到一个分值,最后通过向量空间模型计算,求得总体匹配相似度值。3.结果分析以上技术已经在主要5个大城市门址数据生产中得到应用,测试结果对sina提供的北京11298条数据进行匹配,测试结果分析如下:总用例数11298个数占比率匹配度10037020.327669匹配度90-9948000.424854匹配度80-89
本文标题:基于分词的地址匹配技术
链接地址:https://www.777doc.com/doc-6406645 .html