一种地址纠错方法及终端与流程

文档序号:15104615发布日期:2018-08-04 16:34阅读:188来源:国知局
本发明涉及数据处理领域,尤其涉及一种地址纠错方法及终端。
背景技术
:通过OCR技术识别到地址信息后处理的方法主要有构建词表法、统计语言模型、语法树、相似字、距离信息等。比较常用的是构建词表法和统计语言模型。统计语言模型是用概率统计得到相近的字与字或者词与词之间的关系,根据出现这种关系的概率得出最有可能的结果,常用的有马尔可夫模型。比如给定一个地址为“湖x省长沙市”,根据地址的统计概率,“湖”字后为“南”的条件概率为N1,为“北”的条件概率为M1;“南”字后为“省”的条件概率为N2,“北”字后为“省”的条件概率为M2,则为“湖南省”的概率是N1*N2,为“湖北省”的概率是M1*M2,再根据“省”字后面的“长”字可以得出为“湖南省”的概率大于“湖北省”,得出地址为“湖南省长沙市”。根据地址的特性,一条地址数据通常可以分为多个词语,词语之间的联系要大于字与字之间的联系,因此基于词的统计语言模型更适用于地址纠错。利用基于词的统计语言模型进行地址纠错的方案,一般先通过收集地址数据,构建一个地址数据库训练语言模型,得到不同地址名之间出现的条件概率,作为参数保存;然后根据某种分词规则将地址分为多个词语;最后采用搜索算法求出语言模型的最优解,也就是出现概率最大的地址。但是,基于词的统计语言模型的缺点是需要计算词语出现的概率,利用搜索算法得出最后的地址。训练统计语言模型时,参数空间庞大,需要规模巨大的语料库,如果语料库数据不足,容易出现条件概率为0的情况,导致模型效果变差。地址中存在近似的地名,根据统计概率可能无法区分,如果增加马尔可夫模型的阶数,参数空间会急剧增大。构建词表法是用某种数据结构来保存分类后的词语,根据词表进行查询,得到可能的词语来纠正当前错误的词语。数据结构可以线性结构或者是树状结构,一般来说,线性结构的时间和空间效率比较低,常用的是树状结构,比如应用在搜索引擎中的字典树。字典树是以具有相同前缀的词语共用根节点构建的,比如add、and、andy存为树状结构如图1所示。将数据保存为字典树能够共用节点、减少冗余。但是由于汉字种类过多,每个节点存放一个汉字以及指针,形成的字典树非常大,会占用很多空间。查询时,从根节点向下,进入不同的分支,最后将进入过的所有节点连接,得出地址。但是,字典树的缺点是构建地址数据的字典树太庞大,占用空间过多。技术实现要素:本发明所要解决的技术问题是:如何减少地址纠错过程中所占用的空间。为了解决上述技术问题,本发明采用的技术方案为:本发明提供一种地址纠错方法,包括:S1、获取待纠错地址;S2、根据第一字典树识别与所述待纠错地址对应的省份名称,得到一级名称;所述第一字典树用于存储省份名称和市名称;S3、获取与所述一级名称对应的第二字典树;所述第二字典树用于存储与所述当前省份名称对应的市名称、县名称和区名称;S4、根据所述第二字典树识别与所述待纠错地址对应的县名称或区名称,得到二级名称;S5、获取与所述二级名称对应的第三字典树;所述第三字典树用于存储与所述二级名称对应的乡镇名称、村名称和街道名称;S6、根据所述第三字典树获取与所述待纠错地址对应的一个以上候选地址,得到候选地址集合。本发明还提供一种地址纠错终端,包括一个或多个处理器及存储器,所述存储器存储有程序,并且被配置成由所述一个或多个处理器执行以下步骤:S1、获取待纠错地址;S2、根据第一字典树识别与所述待纠错地址对应的省份名称,得到一级名称;所述第一字典树用于存储省份名称和市名称;S3、获取与所述一级名称对应的第二字典树;所述第二字典树用于存储与所述当前省份名称对应的市名称、县名称和区名称;S4、根据所述第二字典树识别与所述待纠错地址对应的县名称或区名称,得到二级名称;S5、获取与所述二级名称对应的第三字典树;所述第三字典树用于存储与所述二级名称对应的乡镇名称、村名称和街道名称;S6、根据所述第三字典树获取与所述待纠错地址对应的一个以上候选地址,得到候选地址集合。本发明的有益效果在于:区别于现有技术,在纠错地址时需调用与全国地址对应的完整的字典树,占用空间大,本发明将全国地址按照省、市县区、乡镇村街道分级保存,依次核查待纠错地址中的省份信息、市县区信息和乡镇村街道信息,并根据每次的核查结果动态调取与下一级地址对应的字典树,极大程度上减少了在地址纠错过程中内存空间的占用情况,且具有较高的准确度。附图说明图1为字典树示意图;图2为本发明提供的一种地址纠错方法的具体实施方式的流程框图;图3为本发明提供的一种地址纠错终端的具体实施方式的结构框图;图4为第一字典树示意图;图5为第二字典树示意图;图6为第三字典树示意图;图7为与待纠错地址对应的字典树示意图;标号说明:1、处理器;2、存储器。具体实施方式本发明最关键的技术构思在于:本申请将全国地址按照省、市县区、乡镇村街道分级保存,依次核查待纠错地址中的省份信息、市县区信息和乡镇村街道信息,并根据每次的核查结果动态调取与下一级地址对应的字典树,减少了在地址纠错过程中内存空间的占用情况。请参照图2至图7,如图2所示,本发明提供一种地址纠错方法,包括:S1、获取待纠错地址;S2、根据第一字典树识别与所述待纠错地址对应的省份名称,得到一级名称;所述第一字典树用于存储省份名称和市名称;S3、获取与所述一级名称对应的第二字典树;所述第二字典树用于存储与所述当前省份名称对应的市名称、县名称和区名称;S4、根据所述第二字典树识别与所述待纠错地址对应的县名称或区名称,得到二级名称;S5、获取与所述二级名称对应的第三字典树;所述第三字典树用于存储与所述二级名称对应的乡镇名称、村名称和街道名称;S6、根据所述第三字典树获取与所述待纠错地址对应的一个以上候选地址,得到候选地址集合。进一步地,所述S2具体为:当所述第一字典树中不存在与所述待纠错地址适配的省份名称时,获取与所述待纠错地址适配的市名称,得到当前市名称;获取与所述当前市名称对应的省份名称,得到所述一级名称。由上述描述可知,在待纠错地址的省份名称错误程度较严重的情况下,可通过市名称确认与待纠错地址对应的省份名称,有利于提高纠错的准确度。进一步地,还包括:所述第一字典树中的一节点表示一省份名称或一市名称;所述第二字典树中的一节点表示一市名称、一县名称或一区名称;所述第三字典树中的一节点表示乡镇名称、村名称或街道名称中的一个字符。由上述描述可知,一般省、市、县名称重复的可能性比较小,可以将整个词存为一个节点,而县级以后可能为乡镇、村级或者街道,重复出现的可能性比较大,共用相同前缀可以有效减少冗余,减少所需占用的空间。进一步地,所述S5具体为:获取与所述二级名称对应的字典树,得到第三字典树;从所述待纠错地址中获取位于所述二级名称后,且与预设次序对应的字符,得到当前字符;根据所述第三字典树中与所述当前字符适配的分支裁剪需构造的第三字典树;所述第三字典树的根节点为所述二级名称。由上述描述可知,通过指定特定位置的字符,并选取与特定位置的字符适配的分支信息作为候选的地址,减少了第三字典树的容量,即减少了核查乡镇村街道地址时所需占用的空间。进一步地,还包括:所述与预设次序对应的字符为所述二级名称后的第一个字符和所述二级名称后的第四个字符。由上述描述可知,二级名称后的第一个字符一般为镇名称的首字符,二级名称后的第四个字符一般为村名称的首字符,一般可以筛选县名后的镇和村,能有效减少需生成的字典树节点。进一步地,所述S6之后,还包括:S71、从所述候选地址集合中获取一候选地址,得到当前候选地址;S72、统计所述当前候选地址与所述待纠错地址的相同位置上字符相同的个数,得到匹配个数;S73、重复执行所述S71至所述S72,直至所述候选地址集合被遍历;S74、获取所述候选地址集合中具有最大匹配个数的候选地址,得到最佳地址;S75、根据所述最佳地址更新所述待纠错地址,得到正确地址。进一步地,所述S75具体为:若所述最佳地址存在两个以上连续的,且与所述待纠错地址不适配的字符,则:从所述最佳地址中获取位于两个以上连续的,且与所述待纠错地址不适配的字符之前的字符串;根据所述字符串更新所述待纠错地址,得到正确地址;否则,设置所述最佳地址为正确地址。由上述描述可知,提高了从一个以上候选地址中选取与待纠错地址相似度最大的地址作为正确地址的正确率。进一步地,所述S1具体为:通过光学字符识别技术识别身份证中的地址信息,得到所述待纠错地址。如图3所示,本发明还提供一种地址纠错终端,包括一个或多个处理器1及存储器2,所述存储器2存储有程序,并且被配置成由所述一个或多个处理器1执行以下步骤:S1、获取待纠错地址;S2、根据第一字典树识别与所述待纠错地址对应的省份名称,得到一级名称;所述第一字典树用于存储省份名称和市名称;S3、获取与所述一级名称对应的第二字典树;所述第二字典树用于存储与所述当前省份名称对应的市名称、县名称和区名称;S4、根据所述第二字典树识别与所述待纠错地址对应的县名称或区名称,得到二级名称;S5、获取与所述二级名称对应的第三字典树;所述第三字典树用于存储与所述二级名称对应的乡镇名称、村名称和街道名称;S6、根据所述第三字典树获取与所述待纠错地址对应的一个以上候选地址,得到候选地址集合。进一步地,所述S2具体为:当所述第一字典树中不存在与所述待纠错地址适配的省份名称时,获取与所述待纠错地址适配的市名称,得到当前市名称;获取与所述当前市名称对应的省份名称,得到所述一级名称。进一步地,还包括:所述第一字典树中的一节点表示一省份名称或一市名称;所述第二字典树中的一节点表示一市名称、一县名称或一区名称;所述第三字典树中的一节点表示乡镇名称、村名称或街道名称中的一个字符。进一步地,所述S5具体为:获取与所述二级名称对应的字典树,得到第三字典树;从所述待纠错地址中获取位于所述二级名称后,且与预设次序对应的字符,得到当前字符;根据所述第三字典树中与所述当前字符适配的分支裁剪需构造的第三字典树;所述第三字典树的根节点为所述二级名称。进一步地,还包括:所述与预设次序对应的字符为所述二级名称后的第一个字符和所述二级名称后的第四个字符。进一步地,所述S6之后,还包括:S71、从所述候选地址集合中获取一候选地址,得到当前候选地址;S72、统计所述当前候选地址与所述待纠错地址的相同位置上字符相同的个数,得到匹配个数;S73、重复执行所述S71至所述S72,直至所述候选地址集合被遍历;S74、获取所述候选地址集合中具有最大匹配个数的候选地址,得到最佳地址;S75、根据所述最佳地址更新所述待纠错地址,得到正确地址。进一步地,所述S75具体为:若所述最佳地址存在两个以上连续的,且与所述待纠错地址不适配的字符,则:从所述最佳地址中获取位于两个以上连续的,且与所述待纠错地址不适配的字符之前的字符串;根据所述字符串更新所述待纠错地址,得到正确地址;否则,设置所述最佳地址为正确地址。进一步地,所述S1具体为:通过光学字符识别技术识别身份证中的地址信息,得到所述待纠错地址。本发明的实施例一为:本实施例提供一种地址纠错方法,包括:S1、获取待纠错地址。可选地,通过光学字符识别技术识别身份证中的地址信息,得到所述待纠错地址。例如,所述待纠错地址为“福建省福川市鼓楼区洪山滇洪山侨”。S2、根据第一字典树识别与所述待纠错地址对应的省份名称,得到一级名称;所述第一字典树用于存储省份名称和市名称。具体为:当所述第一字典树中不存在与所述待纠错地址适配的省份名称时,获取与所述待纠错地址适配的市名称,得到当前市名称;获取与所述当前市名称对应的省份名称,得到所述一级名称。其中,如图4所示,所述第一字典树中的一节点表示一省份名称或一市名称;省份名称位于第一层,与省份名称对应的市名称位于第二层。例如,所述待纠错地址所属的省份为福建省,则一级名称为福建省。S3、获取与所述一级名称对应的第二字典树;所述第二字典树用于存储与所述当前省份名称对应的市名称、县名称和区名称。其中,所述第二字典树中的一节点表示一市名称、一县名称或一区名称。所述第二字典树的根节点为所述一级名称。例如,图5为与福建省对应的第二字典树。S4、根据所述第二字典树识别与所述待纠错地址对应的县名称或区名称,得到二级名称。例如,所述待纠错地址所属的区为鼓楼区,则二级名称为鼓楼区。S5、获取与所述二级名称对应的第三字典树;所述第三字典树用于存储与所述二级名称对应的乡镇名称、村名称和街道名称;具体为:获取与所述二级名称对应的字典树,得到第三字典树;从所述待纠错地址中获取位于所述二级名称后,且与预设次序对应的字符,得到当前字符;根据所述第三字典树中与所述当前字符适配的分支裁剪需构造的第三字典树;所述第三字典树的根节点为所述二级名称。其中,所述第三字典树中的一节点表示乡镇名称、村名称或街道名称中的一个字符。其中,所述与预设次序对应的字符为所述二级名称后的第一个字符和所述二级名称后的第四个字符。例如,图6为与鼓楼区对应的第三字典树。第三字典树是按照单字形成节点保存,查询时输入地址比如为“福建省福州市鼓楼区洪山镇洪山桥”,区以后地址为“洪山镇洪山桥”,根据第一个字“洪”,可以筛选出需要恢复的字典树的节点第一个为“洪”的分支,其他分支比如“五凤街”则不需要恢复,减少内存占用。第一个字符和第四个字符一般是镇和村的首字,考虑一般情况来减少需要恢复的字典树分支,不符合的情况则无法减少,只能恢复原始的第三字典树。构建出经过裁剪的第三字典树,根据待纠错地址的县区名以后的每个字进行查询。如果查询不到,则将第三字典树中当前分支所有节点的子节点作为候选节点,在候选节点中查询下一个字。比如待纠错地址为“福建省福州市鼓楼区五x北路”,在图6中,“鼓楼区”以后可以查到“五”,“五”后查询不到“x”字,则将“四”、“一”、“凤”这些节点的子节点作为候选节点,查询下一个字,则可以查询到“北”字。S6、根据所述第三字典树获取与所述待纠错地址对应的一个以上候选地址,得到候选地址集合。其中,随着逐级匹配省、市、县区、乡镇村街道,动态获取与各层级对应的字典树,并构造出与所述待纠错地址对应的完整字典树,如图7所示。查询结束可以得到一个最低层的节点,根据此节点的指针可以找到上一层的唯一父节点,而此父节点又可以找到它的唯一父节点,这个过程称为回溯。最低层的节点经过回溯可以得到第一个节点,从第一个节点连接到最低层节点可以得到一个字符串。根据这个字符串返回以这个字符串为前缀的所有地址,作为候选地址。比如图7中,得到最低层节点为“桥”字,根据节点指针可以得到上一层唯一父节点为“山”,重复这个过程回溯得到最后的父节点即区名后的第一个节点为“洪”。将第一个节点连接到最后一个节点可以得到“洪山镇洪山桥”。从根节点至最低层节点对应的字符串为“福建省福州市鼓楼区洪山镇洪山桥”。S7、根据所述候选地址集合选取一最佳地址。具体为:S71、从所述候选地址集合中获取一候选地址,得到当前候选地址。S72、统计所述当前候选地址与所述待纠错地址的相同位置上字符相同的个数,得到匹配个数。S73、重复执行所述S71至所述S72,直至所述候选地址集合被遍历。S74、获取所述候选地址集合中具有最大匹配个数的候选地址,得到最佳地址。S75、根据所述最佳地址更新所述待纠错地址,得到正确地址。具体为:若所述最佳地址存在两个以上连续的,且与所述待纠错地址不适配的字符,则:从所述最佳地址中获取位于两个以上连续的,且与所述待纠错地址不适配的字符之前的字符串;根据所述字符串更新所述待纠错地址,得到正确地址;否则,设置所述最佳地址为正确地址。其中,根据OCR(光学字符识别技术)识别得到的地址称为待纠错地址,待纠错地址可能存在错误。将待纠错地址在字典树进行查询可以得到候选地址。选择候选地址中与待纠错地址最相似的地址作为最佳地址,相似程度根据相同位置的汉字相同的数量来评价。再将最佳地址与待纠错地址比较,如果连续不同的汉字数量在两个字以内,将这部分最佳地址作为正确地址;连续不同字数为两个及两个以上,则将这部分之后的待纠错地址作为正确地址。根据上述纠错原则将最佳地址和待纠错地址组合作为最后的正确地址。比如待纠错地址为“福建省福川市鼓楼区洪山滇洪山侨”,候选地址为“福建省福州市鼓楼区洪山镇洪山桥”。在市这一级中,由于连续不同的汉字为一个,则将“福州市”作为正确地址,代替待纠错地址中的“福川市”。同理,在区县级以后,“洪山镇洪山桥”中连续不同的汉字也只有一个(不连续的不同字则为两个),因此最后的纠错后地址为“福建省福州市鼓楼区洪山镇洪山桥”。因为查询时按省、市、县和县级以后分级进行,因此纠错时也按照分级对比识别结果和查询结果,根据上述纠错原则选择是否进行纠错。由上述描述可知,本发明将全国地址按照省市、区县、乡镇村街道分级保存,将省份名称保存为第一字典树,用于查询待纠错地址所属省份。再将省份的省、市、县地址保存为第二字典树,用于查询区县名称。最后将乡镇村街道级地址按单字构建字典树减少冗余后进行存储,需要查询时恢复字典树,根据待纠错地址对需要恢复的字典树进行裁剪,减少节点数量。按省市、区县、乡镇村街道级查询时,只要待纠错地址中出现错字数量不多,在省、市、区县级根据相似度能够得到正确的地址名称,在村级根据节点回溯能够得到最接近正确地址的候选地址。最后根据纠错原则将待纠错地址和候选地址进行比较,得出纠错后的地址。比如待纠错地址为“福建省福川市鼓楼区洪山滇洪山侨”,在省、市、区县级根据相似度能够得出“福建省”下一级地址为“福x市”的只有“福州市”,在村级根据能够查询到的最低层节点“山”进行回溯可以得到“洪山镇洪山”,因此候选地址为“福建省福州市洪山镇洪山”为前缀的地址,比如“福建省福州市洪山镇洪山桥”。根据纠错原则,连续不同的汉字不超过一个,因此待纠错地址经过纠错为“福建省福州市洪山镇洪山桥”。与基于词的统计语言模型相比,本发明不需要训练参数模型,也不需要多次计算词出现的概率,使用搜索算法寻找最优路径,只需要构建出字典树后,进行查询即可,速度更快。不同的市可能有相同名称的县或者乡镇或者村,根据统计模型的一阶马尔可夫可能无法判断,而增大阶数来判断时,计算量也随之增大。而本发明在分级查询时,根据构建的字典树进入不同的分支查询,对于县以下的地址名用单字存为节点,再从最底层节点回溯就可以得到候选地址。与构建全国地址的字典树相比,本发明根据待纠错地址的信息,针对需要查询的省、市、县,构建该县的字典树即可,再根据待纠错地址对县字典树进行裁剪,大大减少了需要的空间和查询时间。假如全国地址数据保存为文本约60M,一个省份的地址数据平均约为2M,查询时构建整个省份地址字典树则至少占用十几M内存,查询一次地址需要接近5s。而根据县名进行划分,查询村级地址时只需要恢复该县下的地址,经过裁剪后恢复的字典树一般数据量只有几K,查询一次地址需要0.05s左右。将全国地址构建为字典树后再将树节点按层保存为文本大约为10M,说明字典树结构有效去除了村级地址的冗余。县字典树中的节点使用双向指针,查询到的最后一个节点可以回溯到第一个节点,连接得到地址前缀,再根据地址前缀可以得到候选纠错地址。一般的字典树结构是用于搜索,指针为单向,只能从上到下查询节点,而本发明的字典树为双向指针,可以根据低层节点回溯到第一个节点,得出候选地址。查询时间是在同一台笔记本电脑的VisualStudio软件的Debug模式下得出的。方案原始文本数据Access数据库SQLite数据库字典树结构数据存储空间60M100M50M10M查询一次用时-0.5s-2s0.05s0.05s本发明的实施例二为:本实施例提供一种地址纠错终端,包括一个或多个处理器1及存储器2,所述存储器2存储有程序,并且被配置成由所述一个或多个处理器1执行以下步骤:S1、获取待纠错地址。可选地,通过光学字符识别技术识别身份证中的地址信息,得到所述待纠错地址。S2、根据第一字典树识别与所述待纠错地址对应的省份名称,得到一级名称;所述第一字典树用于存储省份名称和市名称。具体为:当所述第一字典树中不存在与所述待纠错地址适配的省份名称时,获取与所述待纠错地址适配的市名称,得到当前市名称;获取与所述当前市名称对应的省份名称,得到所述一级名称。其中,所述第一字典树中的一节点表示一省份名称或一市名称;省份名称位于第一层,与省份名称对应的市名称位于第二层。S3、获取与所述一级名称对应的第二字典树;所述第二字典树用于存储与所述当前省份名称对应的市名称、县名称和区名称。其中,所述第二字典树中的一节点表示一市名称、一县名称或一区名称。所述第二字典树的根节点为所述一级名称。S4、根据所述第二字典树识别与所述待纠错地址对应的县名称或区名称,得到二级名称。S5、获取与所述二级名称对应的第三字典树;所述第三字典树用于存储与所述二级名称对应的乡镇名称、村名称和街道名称;具体为:获取与所述二级名称对应的字典树,得到第三字典树;从所述待纠错地址中获取位于所述二级名称后,且与预设次序对应的字符,得到当前字符;根据所述第三字典树中与所述当前字符适配的分支裁剪需构造的第三字典树;所述第三字典树的根节点为所述二级名称。其中,所述第三字典树中的一节点表示乡镇名称、村名称或街道名称中的一个字符。其中,所述与预设次序对应的字符为所述二级名称后的第一个字符和所述二级名称后的第四个字符。S6、根据所述第三字典树获取与所述待纠错地址对应的一个以上候选地址,得到候选地址集合。S7、根据所述候选地址集合选取一最佳地址。具体为:S71、从所述候选地址集合中获取一候选地址,得到当前候选地址。S72、统计所述当前候选地址与所述待纠错地址的相同位置上字符相同的个数,得到匹配个数。S73、重复执行所述S71至所述S72,直至所述候选地址集合被遍历。S74、获取所述候选地址集合中具有最大匹配个数的候选地址,得到最佳地址。S75、根据所述最佳地址更新所述待纠错地址,得到正确地址。具体为:若所述最佳地址存在两个以上连续的,且与所述待纠错地址不适配的字符,则:从所述最佳地址中获取位于两个以上连续的,且与所述待纠错地址不适配的字符之前的字符串;根据所述字符串更新所述待纠错地址,得到正确地址;否则,设置所述最佳地址为正确地址。综上所述,本发明提供的一种地址纠错方法及终端,将全国地址按照省、市县区、乡镇村街道分级保存,依次核查待纠错地址中的省份信息、市县区信息和乡镇村街道信息,并根据每次的核查结果动态调取与下一级地址对应的字典树,极大程度上减少了在地址纠错过程中内存空间的占用情况,且具有较高的准确度。进一步地,在待纠错地址的省份名称错误程度较严重的情况下,可通过市名称确认与待纠错地址对应的省份名称,有利于提高纠错的准确度。进一步地,一般省、市、县名称重复的可能性比较小,可以将整个词存为一个节点,而县级以后可能为乡镇、村级或者街道,重复出现的可能性比较大,共用相同前缀可以有效减少冗余,减少所需占用的空间。进一步地,通过指定特定位置的字符,并选取与特定位置的字符适配的分支信息作为候选的地址,减少了第三字典树的容量,即减少了核查乡镇村街道地址时所需占用的空间。进一步地,二级名称后的第一个字符一般为镇名称的首字符,二级名称后的第四个字符一般为村名称的首字符,一般可以筛选县名后的镇和村,能有效减少需生成的字典树节点。进一步地,提高了从一个以上候选地址中选取与待纠错地址相似度最大的地址作为正确地址的正确率。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1