专利名称::面向地址编码的中文地址语义解析方法
技术领域:
:本发明提出了一种不依赖地名词典的中文地址语义解析方法,适用于房地产管理、土地管理、城巿规划、公安、邮政、税收、电讯、公共卫生和号码百事通等领域地理信息系统(GIS)中的地址编码。技术背景在曰常生产与生活中,地址是最常用的使用自然语言描述地理位置的参考系统之一。地址描述是当前各类业务系统中描述空间位置的最常用手段,利用地址编码技术能够使大量的原来已经存在于管理信息系统(MIS)中的地址定位信息转换成可以被用于地理信息系统(GIS)的地理坐标方式,使得GIS可以通过对地理数据的集成、存储、检索、操作和分析,将分散在各个部门的数据通过空间参照系联系起来,为土地利用、资源管理、环境监测、交通运输、城巿规划等提供决策服务,从而大大促进GIS技术的应用。地址编码是指将自然语言描述的地址信息,根据地址模型和编码规则进行智能语义解析,通过与数据库中匹配,建立与对应的空间坐标信息和地理编码关联的过程,其基本原理如图l所示。地址编码需要解决以下三个关键技术问题地址语义解析指将自然语言描述的地址拆分为在某一限定区域内,可以指定某一具体地理范围的地址要素。比如"南京巿鼓楼区宁海路122号"解析为"南京巿"、"鼓楼区"、"宁海路"、"122号"四个地址要素。地址中各个地址要素按照从大到小的关系排列,后面的地址要素必须相对于前面的地址要素才有意义。②地址模型地址模型用于描述各种类型地址中地址要素的构成规则;③地址匹配是指根据既定的地址模型和编码规则,将通过计算机语义解析的地址与GIS中标准地址进行匹配,并给出地理坐标值的智能化过程。从20世纪70年代起,美国就开始建立全国地理编码系统一"双重独立地图编码系统,,(DualInd印endentMapEncoding,D職),DIME的开发在GIS技术的发展史上具有里程碑的意义。80年代后期,美国国情普查局将DIME系统发展为拓扑集成的地址编码参照系统(TopologicallyIntegratedGeographicEncodingandReferencing,TIGER)。由于TIGER数据库覆盖范围广,精度好,更新有保证,而且费用低廉,已经成为美国的公认地址编码参考标准。目前,国外地理编码库以及地理编码软件工具已经商品化,有很多关于地址数据的内容标准和规范说明,例如FGDC地址数据内容标准公共草案。绝大多数国外GIS软件中都有地址编码功能,比如Mapinfo的MapMaker,ArcGIS的Geocoding和GeoMedia的GeocodesAddresses,在具体应用中具有很高的响应速度和准确率。国外地址编码技术成功推广应用的关键因素在于一是从语言角度看,英文等西方语种地址描述中单词之间存在空格分隔符;从标准化角度看,地址的数据命名和表述,以及软件开发和应用服务都遵循标准化和规范化原则。因此,国外地址编码中地址语义解析都釆用与标准地址库中地名进行简单字符匹配的方法(统称"词典匹配法")。具体地讲,词典匹配法是以GIS中地名数据为地名词典,运用字符串匹配算法进行词法和语法分析,将地址串与词典中的地名进行匹配,达到地址解析的目的。词典匹配法只能将地址串中与词典中完全相同的地名进行解析。例如,假设词典中收录有"南京巿"、"鼓楼区"、"宁海路"三个地名而没有"文苑路",就可以将地址"南京巿鼓楼区宁海路122号"解析为"南京巿"、"鼓楼区"、"宁海路"、"122号,,四个地址要素,而将"南京巿文苑路12号"解析为"南京巿"和"文苑路12号"。因此,词典匹配法的效果与词典规模和更新速度呈正比,效率却与词典规模呈反比。然而,由于汉语言文字自身的历史和文化的特点,以及地址编码规范的严重匮乏,导致中文地址存在较为严重的不规范性,不仅地址命名的规律性差、格式复杂、存在一地多名的现象,而且增加、删除、修改比较随意。很显然,词典匹配法在适用范围、更新维护,准确率和响应速度等方面都不能满足大规模数据处理的需求。中文地址语义解析已成为目前中文地址编码技术需要解决的重点问题(黄颂.中文地址编码技术的研究[D].北京大学硕士学位论文,2005)。从上世纪80年代开始,国内地址编码技术研究侧重于地址标准库和地址匹配算法,例如,北京巿和上海巿先后颁布了一系列城巿道路、道路交叉口等的编码标准(朱建伟,王泽民.地理编码原理及其本地化解决方案[J].北京测绘,2004(2),24-27.)。地址语义解析都采用字典匹配法,如北京长地计算机公*的"寻址神",北大方正的"MapSearcher",朝夕科技的"北京地址编码数据库系统及标准地址匹配引擎",北京超图公司的"客户关系管理系统"、山海易绘的EzGeoCoding等系统。
发明内容本发明所要解决的技术问题在于,克服现有技术存在的缺陷,提供一种面向地址编码的中文地址语义解析方法,而不依赖于地名词典进行地址解析。本发明面向地址编码的中文地址语义解析方法,其具体技术流程如下第一步根据样本数据,构建地址特征字库中文地址包括行政区划、街道、门楼牌号和补充信息四个类型的地址要素,按照地址要素的地理区域范围由大到小排列(最后为补充信息)构成中文地址串;中文地址串的构成中会有部分类型的地址要素缺失;所述行政区划,按照<中华人民共和国行政区代码>(GB2260-1995),分为四级,由村以上的行政区域由大到小(会有缺失)排序第一级为省、自治区、直辖巿和特别行政区;第二级为市、地区、自治州、盟及国家直辖巿所属巿辖区和县;第三级为县、巿辖区、县级巿、旗;第四级为乡、镇、村;一般说来,一个地址中往往包含多个不同级别的行政区划名称。例如"南京巿鼓楼区宁海路122号"中包括"南京巿"(第二级)和"鼓楼区"(第三级)两个不同级别的行政区划名称。所述街道是指路名和/或街道名;所述门楼牌号是指门牌号、楼牌号、楼名和/或房间号;所述补充信息,是指门楼牌号之后加上的机构名称或者表示空间关系的词汇(东、西、南、北等),比如"南京巿鼓楼区江东北路301号滨江市场,,中的"滨江巿场,,就是一个机构名称,"南京巿江浦县永宁镇西葛街西"中的"西"就是一个表示空间方向关系的词汇。一个中文地址串可以拆分为多个不同类型的地址要素;地址要素为普通字符+特征字的组合(补充信息除外);其中行政区划的特征字为省、自治区、直辖巿、特别行政区、巿、地区、自治州、盟、区、县、旗、乡、镇、村、屯、庄等;街道的特征字为路、街道、街、大街、大道、马路、里、弄、胡同、巷、条等;门楼牌号的特征字为号、楼、宿舍、斋、馆、堂等;构建地址特征字库包括以下几个步骤1、建立样本数据将原始地址数据中的各个地址要素分离出来,形成样本数据。表l原始数据样例原始数据南京市玄武区后宰门西村87号T^区竹镇镇仕林路2号^京市浦口区桥林镇南二村山根组一;市江浦县龙山乡龙南村i京市雨花台区西云村3号~~南京杭州环北市场负一楼037-054号秦淮区红花街道翁家营村翁家营153号表2样本数据样例<table>tableseeoriginaldocumentpage9</column></row><table>西云村行政区划村云村3号街道号3号南京行政区划京南京杭州环北市场补充信息场市场负一楼门楼牌号楼一楼037-054号门楼牌号号4号秦淮区行政区划区淮区红花街道街道道街道翁家营村行政区划村营村翁家营街道营家营153号门楼牌号早3号2、筛选特征字特征字表示一个地址要素的结尾,可以看作是地址要素的单位;大多数情况下,根据特征字就可以比较准确地将地址划分成独立的语义单元。特征字筛选过程将样本数据中所有地址要素的最后一个字符和两个字符的频率分别进行统计,并按照由大到小排序;将累积频率占百分比80%以上的单个字符筛选为特征字(称为"单特征字");将累积频率占80%以上两个字符(必须最后一个字符不是单特征字)筛选为特征字(称为"复特征字");3、筛选附属特征字中文地址中通常包含一些表达空间关系的词汇,如东、南、西、北等,可用于辅助判断地址要素的拆分位置,将这些词汇筛选为附属特征字;'所筛选的特征字和附属特征字构成了特征字库;第二步根据特征字库,按照地址表示规则,将中文地址转换为数字形式的字符串;为了便于计算机处理,需要将中文地址字符串转换为数字表示,其中l表示特征字,2表示附属特征字,3表示两个连续重复特征字的后一个字符,0表示普通字符,9表示结束符。普通字符对于拆分规则的制定没有意义,可将连续的0字符压缩为一个0字符。例如,"江苏省六合县八百桥镇冶东村小林32号"表示为"01010110212019","建鄄区应天路叶纤村村部"表示为"0101011309"。第三步构建地址解析规则库将中文地址转换为数字串之后,其构成均遵循以下规则*"0"后只能是"1"、"2"、"9"中的一个数;*'T,后只能是"0"、'T,、"2"、"3"、"9"中的一个数;*"2"后只能是"0"、"1"、"2"、"9"中的一个数;*"3"后只能是"0"、"1"、"2"、"9"中的一个数;*只能以"0"、"1"、"2"、"3"中的一个数开始;*只能以"9"结東。按照上述规则,地址可以表示为树结构,每一条路径代表一条解析规则。树的第一级节点分别为"0"、"1"、"2"、"3",其后裔结点按照上述规则来组织。但是,当各条路径到达一定长度时,可以确定地址要素的拆分点,从而终止该路径的继续扩展。同时,每条解析规则必须规定具体的拆分位置,并用"f+拆分位置"表示。以样本数据中的地址为例,对规则的应用频率进行统计,将累积频率占95/。以上的解析路径筛选为解析规则(如表3所示)。解析规则的树状结构如图3所示。<table>tableseeoriginaldocumentpage11</column></row><table><table>tableseeoriginaldocumentpage12</column></row><table><table>tableseeoriginaldocumentpage13</column></row><table>图3中,规则"0120f2"表示在各层上的节点分别为"0"、"1"、"2"、"0"。当扫描地址串时,如果有字符串序列与"0120"匹配,即可确定在第二个数字后面拆分,用"f2"表示拆分位置。例如,"白下区南台巷"表示为"01201",与规则"0120"匹配,即在左边"01"之后拆分,将其解析为"白下区"和南台巷。规则"0290"表示当地址串中的部分字符序列与"029"匹配时,即可确定在第二个数字后面拆分。由于"9"即表示数字串结束,所以规则也表示在末尾拆分。第四步语义解析在特征字和解析规则制定的基础上,本发明设计了一种中文地址解析算法(简称"RBAI算法")。该算法包括三个部分地址表示、地址解析和地址还原。具体解析过程如下输入一条原始地址数据,用Address-Before表示;输出该原始地址的解析结果,用Address—After表示。(l)地址表示将原始地址转换为数字表示,结果为Numbers_Before。第l步Numbers—Before置为空串;用n表示当前待解析原始地址的长度第2步i从l直到n,循环执行如果原始地址的第i个字符为主特征字,则Numbers—Before[i]表示为1;如果原始地址的第i+l个字符为主特征字,则Numbers—Before[i]表示为3;如果原始地址的第i个字符为附属特征字,则Numbers—Before[i]表示为2;如果原始地址的第i个字符为普通字符,则Numbers—Before[i]表示为0;i赋值为i+1;结束循环;第3步在Numbers—Before的末尾添加9;将Numbers—Before中的连续多个0压缩为一个0。(2)地址解析将N腿bers—Before根据解析规则拆分为地址要素,结果为Numbers—After。第4步Numbers—After置为空串;用k表示Numbers—before的长度第5步m从l直到k,执行循环如果Numbers—Before的左边m个字符与某条解析规则匹配,则按照规则将Numbers—before拆分左右两个子串;左子串Numbers—Left保存为解析结果中的一个地址要素,不再进行拆分;右子串Numbers-right继续进行拆分;将Numbers—Before定义为Numbers-right;m赋值为Numbers—Left的长度+l;否则m赋值为m+1;结東循环;(3)地址还原第6步将数字表示的解析结果还原为与原始地址对应的字符串,结果为Address—After。相对于现有中文地址编码中釆用的地址解析技术,本发明主要以下几个优点a.不依赖于词典避免词典构建和更新,而且可以解析出GIS(或词典)中没有收录的地址要素名称;'b.不依赖中文分词等自然语言处理技术;c.效率高由于没有釆用基于词黄的字符串匹配算法,而是对单个地址进行操作,效率显著提高;d.适用性强可以根据实际应用情况,通过更新样本数据,快速更新特征字库和解析规则,而解析算法则不需要更新。e.实现简单,易于推广特征字库和解析规则重用性强,算法简单,方便嵌入各类应用系统中。图l、是地址编码基本原理与过程示意图;图2、是本发明方法流程示意图;图3、表示基于树结构的解析规则;图4、地址解析示意图(地址六合县雄州镇朝天街108号);图5、地址解析示意图(地址江苏省六合县八百镇金山村);图6、地址解析示意图(地址六合县六城镇泰山村82号);图7、地址解析示意图(地址六合区八百桥镇街道);图8、地址解析示意图(地址六合区雄州镇健康巷1号-2);图9、地址解析示意图(地址南京巿玄武区明故宫4号);图IO、地址解析示意图(地址六合区雄州镇中心农贸巿场);图ll、地址解析示意图(地址北门桥路5号302室);图12、地址解析示意图(地址六合区程桥镇东大桥边);图13、地址解析示意图(地址玄武区相府营14号104室);图14、中文地址语义解析算法流程图;图15、地址表示算法流程寧l6、地址解析算法流程图。具体实施方式下面结合附图和实施例对本发明方法作进一步详细说明。在主频1.73GHz和内存1GB的PC机上,用VisualC#.NET2003平台开发的实现本发明技术的软件系统,以江苏省南京巿194719户企业地址数据为样本数据,根据样本数据,构建地址特征字库,根据特征字库,按照地址表示规则,进行地址语义解析操作。实例1:中文地址字符串六合县雄州镇朝天街108号,如图4所示,解析为六合县/雄州镇/朝天街/108号("/"表示切分位置)。实例2:中文地址字符串江苏省六合县八百镇金山村,如图5所示,解析为江苏省/六合县/八百镇/金山村。实例3:中文地址字符串六合县六城镇泰山村82号,如图6所示,解析为六合县/六城镇/泰山村/82号。实例4:中文地址字符串六合区八百桥镇街道,如图7所示,解析为六合区/八百桥镇街道。实例5:中文地址字符串六合区雄州镇健康巷1号-2,如图8所示,解析为六合区/雄州镇/健康巷/l号/-2。实例6:中文地址字符串南京市玄武区明故宫4号,如图9所示,解析为南京巿/玄武区/明故宫/4号。实例7:中文地址字符串六合区雄州镇中心农贸巿场,如图10所示,解析为六合区/雄州镇/中心农贸巿场。实例8:中文地址字符串北门桥路5号302室,如图11所示,解析为北门桥路/5号/302室。实例9:中文地址字符串六合区程桥镇东大桥边,如图12所示,解析为六合区/程桥镇/东大桥/边。实例10:中文地址字符串玄武区相府营14号104室,如图13所示,解析为玄武区/相府营/14号/104室。权利要求1、一种面向地址编码的中文地址语义解析方法,其步骤如下第一步根据样本数据,构建地址特征字库a、建立样本数据将原始地址数据中的各个地址要素分离出来,形成样本数据;b、筛选特征字将样本数据中所有地址要素的最后一个字符和两个字符的频率分别进行统计,并按照由大到小排序;将累积频率占百分比80%以上的单个字符筛选为特征字;将累积频率占80%以上两个字符筛选为特征字,必须最后一个字符不是单特征字;c、筛选附属特征字;所筛选的特征字和附属特征字构成了特征字库;第二步根据特征字库,按照地址表示规则,将中文地址转换为数字形式的字符串,其中1表示特征字,2表示附属特征字,3表示两个连续重复特征字的后一个字符,0表示普通字符,9表示结束符;将连续的0字符压缩为一个0字符;第三步构建地址解析规则库将中文地址转换为数字串之后,其构成均遵循以下规则“0”后只能是“1”、“2”、“9”中的一个数;“1”后只能是“0”、“1”、“2”、“3”、“9”中的一个数;“2”后只能是“0”、“1”、“2”、“9”中的一个数;.“3”后只能是“0”、“1”、“2”、“9”中的一个数;只能以“0”、“1”、“2”、“3”中的一个数开始;只能以“9”结束;按照上述规则,将地址表示为树结构,每一条路径代表一条解析规则,树的第一级节点分别为“0”、“1”、“2”、“3”,其后裔结点按照上述规则来组织;当各条路径到达一定长度时,可以确定地址要素的拆分点,从而终止该路径的继续扩展;同时,每条解析规则规定具体的拆分位置,并用“f+拆分位置”表示;第四步语义解析输入一条原始地址数据,用Address_Before表示;A、地址表示将原始地址转换为数字表示,结果为Numbers_Before,a、Numbers_Before置为空串;用n表示当前待解析原始地址的长度b、i从1直到n,循环执行如果原始地址的第i个字符为主特征字,则Numbers_Before[i]表示为1;如果原始地址的第i+1个字符为主特征字,则Numbers_Before[i]表示为3;如果原始地址的第i个字符为附属特征字,则Numbers_Before[i]表示为2;如果原始地址的第i个字符为普通字符,则Numbers_Before[i]表示为0;i赋值为i+1;结束循环;c、在Numbers_Before的末尾添加9;d、将Numbers_Before中的连续多个0压缩为一个0;B、地址解析将Numbers_Before根据解析规则拆分为地址要素,结果为Numbers_After;a、Numbers_After置为空串;用k表示Numbers_before的长度;b、m从1直到k,执行循环如果Numbers_Before的左边m个字符与某条解析规则匹配,则按照规则将Numbers_before拆分左右两个子串;左子串Numbers_Left保存为解析结果中的一个地址要素,不再进行拆分;右子串Numbers-right继续进行拆分;将Numbers_Before定义为Numbers-right;m赋值为Numbers_Left的长度+1;否则m赋值为m+1;结束循环;C、地址还原将数字表示的解析结果还原为与原始地址对应的字符串,结果为Address_After。全文摘要本发明公开了一种面向地址编码的中文地址语义解析方法,其步骤如下第一步根据样本数据,构建地址特征字库;a.建立样本数据;b.筛选特征字;c.筛选附属特征字;所筛选的特征字和附属特征字构成了特征字库;第二步根据特征字库,按照地址表示规则,将中文地址转换为数字形式的字符串;第三步构建地址解析规则库;第四步语义解析,包括地址表示,将原始地址转换为数字表示、地址解析,将数字表示的地址拆分为地址要素;地址还原,将数字表示的解析结果还原为与原始地址对应的字符串。文档编号G06F17/30GK101393544SQ200810156588公开日2009年3月25日申请日期2008年10月7日优先权日2008年10月7日发明者张雪英,李伯秋,申琪君,陈文君申请人:南京师范大学