一种地址识别方法及装置与流程

文档序号:11707591阅读:252来源:国知局
一种地址识别方法及装置与流程

本申请涉及计算机领域,尤其涉及一种地址识别方法及装置。



背景技术:

分拣是指根据邮件或快件上所书写的地址,按照预设分拣的路由(即路向)逐渐分入相关格口或码堆的过程。为了提高分拣效率,自动分拣已经逐渐代替了人工分拣。

提供给自动分拣系统地收货地址通常为如下数据结构{"province":"浙江省","city":"杭州市","area":"余杭区","town":"仓前街道","address_detail":"测试地址"},其中,"province"、"city"、"area"及"town"为行政区划。"province"代表第一级行政区划:省、直辖市、自治区或特别行政区,"city"代表第二级行政区划:地级市、自治州、直辖市辖区或直辖市辖县等,"area"代表第三级行政区划:县、县级市、地级市辖区等,"town"代表第四级行政区划:乡、镇、街道等,"address_detail"表示详细地址。

常用的自动分拣方式以末节地址为分拣单位,末级地址是指国家、省、市、区(县)、街道(乡镇)等行政区划中,非空的最小行政区划。可见,自动分拣高度依赖收货地址,所以,一旦收货地址的填写不符合自动分拣的规则,自动分拣即会失败,所以,如何提高自动分拣的成功率成为目前亟待解决的问题。



技术实现要素:

本申请提供了一种地址识别方法及装置,目的在于解决如何提高自动分拣的成功率的问题。

为了实现上述目的,本申请提供了以下技术方案:

一种地址识别方法,包括:

从原始地址中提取行政级别最低的地址名称,所述原始地址包括所述地址名称以及原始上级地址集合,所述原始上级地址集合是所述原始地址中除所述地址名称以外其它地址名称的集合;

从预设的地址数据库中查找与提取到的所述行政级别最低的地址名称相同的目标地址;

判断所述原始地址中的所述原始上级地址集合与所述目标地址的目标上级地址集合是否满足匹配条件,如果是,则将所述目标地址及所述目标上级地址集合中的地址组成的地址链作为所述原始地址的识别结果;

其中,所述目标上级地址集合为所述目标地址在所述地址数据库中的上级地址按照行政级别进行前后顺序的排序而形成的集合,所述匹配条件包括:所述原始上级地址集合为所述目标上级地址集合的子集,并且所述原始上级地址集合中的地址名称之间的相对顺序与所述目标上级地址集合中相同的地址名称之间的相对顺序相同。

可选地,在所述判断所述原始地址中的所述原始上级地址集合与所述目标地址的目标上级地址集合是否满足匹配条件之前,还包括:

确定所述目标地址的行政级别符合分拣规则的要求。

可选地,所述从原始地址中提取级别最低的地址名称包括:

从所述原始地址中的各个非空的行政区划中提取地址名称;

从所提取的各个地址名称中选择行政级别最低的地址名称。

可选地,所述预设的数据库中包括地址数据结构,每一个地址数据结构包括:编号、上级地址编号及地址名称;

所述从预设的地址数据库中查找与提取到的所述行政级别最低的地址名称相同的目标地址,包括:

从所述预设的地址数据库中查找与提取到的所述行政级别最低的地址名称相同的地址名称,作为目标地址;

确定所述目标地址的目标上级地址集合,包括:

依据所述目标地址所对应的上级地址编号,从所述预设的地址数据库中找到所述目标地址的上级地址,并且以此类推,直到找到所述目标地址的所有上级地址,由此构成所述目标上级地址集合。

可选地,还包括:

如果所述原始上级地址集合与所述目标上级地址集合不满足所述匹配条件,将所述原始地址中各个行政区划和详细地址中的地址名称拼接为字符串;

对所述字符串进行分词处理,得到各个分词;

从预设的地址词典中查找所述各个分词匹配的地址行政区划,将所述各个分词匹配的地址行政区划作为所述原始地址的识别结果。

可选地,在所述从预设的地址词典中查找所述各个分词匹配的地址行政区划之后,还包括:

使用所述原始地址的识别结果进行地址分拣。

一种地址识别装置,包括:

提取模块,用于从原始地址中提取行政级别最低的地址名称,所述原始地址包括所述地址名称以及原始上级地址集合,所述原始上级地址集合是所述原始地址中除所述地址名称以外其它地址名称的集合;

查找模块,用于从预设的地址数据库中查找与提取到的所述行政级别最低的地址名称相同的目标地址;

第一识别模块,用于判断所述原始地址中的所述原始上级地址集合与所述目标地址的目标上级地址集合是否满足匹配条件,如果是,则将所述目标地址及所述目标上级地址集合中的地址组成的地址链作为所述原始地址的识别结果;

其中,所述目标上级地址集合为所述目标地址在所述地址数据库中的上级地址按照行政级别进行前后顺序的排序而形成的集合,所述匹配条件包括:所述原始上级地址集合为所述目标上级地址集合的子集,并且所述原始上级地址集合中的地址名称之间的相对顺序与所述目标上级地址集合中相同的地址名称之间的相对顺序相同。

可选地,所述第一识别模块还用于:

在所述判断所述原始地址中的所述原始上级地址集合与所述目标地址的目标上级地址集合是否满足匹配条件之前,确定所述目标地址的行政级别符合分拣规则的要求。

可选地,所述提取模块用于从原始地址中提取行政级别最低的地址名称包括:

所述提取模块具体用于,从所述原始地址中的各个非空的行政区划中提取地址名称;从所提取的各个地址名称中选择行政级别最低的地址名称。

可选地,所述预设的数据库中包括地址数据结构,每一个地址数据结构包括:编号、上级地址编号及地址名称;

所述提取模块

具体用于,从所述预设的地址数据库中查找与提取到的所述行政级别最低的地址名称相同的地址名称,作为目标地址;

所述提取模块还用于:依据所述目标地址所对应的上级地址编号,从所述预设的地址数据库中找到所述目标地址的上级地址,并且以此类推,直到找到所述目标地址的所有上级地址,由此构成所述目标上级地址集合。

可选地,还包括:

第二识别模块,用于如果所述原始上级地址集合与所述目标上级地址集合不满足所述匹配条件,将所述原始地址中各个行政区划和详细地址中的地址名称拼接为字符串;对所述字符串进行分词处理,得到各个分词;从预设的地址词典中查找所述各个分词匹配的地址行政区划,所述各个分词匹配的地址行政区划为所述原始地址的识别结果。

可选地,还包括:

地址分拣模块,用于在所述第二识别模块从预设的地址词典中查找所述各个分词匹配的地址行政区划之后,使用所述原始地址的识别结果进行地址分拣。

本申请所述的地址识别方法及装置,从原始地址中提取行政级别最低的地址名称,并从预设的数据库中查找与政级别最低的地址名称相同的目标地址,判断原始地址中的原始上级地址集合与目标地址的目标上级地址集合是否满足匹配条件,如果是,则将目标地址及所述目标上级地址集合中的地址组成的地址链作为原始地址的识别结果,因为目标上级地址集合为目标地址在地址数据库中的上级地址按照行政级别进行前后顺序的排序而形成的集合,原始上级地址集合是原始地址中除地址名称以外其它地址名称的集合,匹配条件包括:原始上级地址集合为目标上级地址集合的子集,并且原始上级地址集合中的地址名称之间的相对顺序与所述目标上级地址集合中相同的地址名称之间的相对顺序相同,所以,能够依据预设的地址数据库将不规范的地址识别为符合地址分拣规则的地址,从而为后续的自动分拣奠定基础。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种地址识别方法的流程图;

图2为本申请实施例公开的一种地址分拣方法的流程图;

图3为本申请实施例公开的一种地址识别装置的结构示意图。

具体实施方式

本申请实施例提供了一种地址识别方法,可以应用在自动分拣之前,目的在于对不符合自动分拣的规则的原始地址进行识别,得到符合自动分拣规则的地址,再对识别后的地址进行自动分拣,以提高自动分拣的成功率。

进一步地,本申请实施例提供的地址识别方法,更加适合行政区划错位或部分缺失、或者行政区划地址错误但是详细地址正确的场景。

所谓行政区划错位是指,在地址数据结构中,各级行政地址的名称正确,但是行政地址的名称与行政区划名称之间出现了错位,例如province:杭州,city:余杭区,area:仓前街道,其中,各级行政地址的名称正确,但是将第二级行政区划的名称“杭州”填入了本应该填写第一级行政区划的位置,“city”和“area”情况类似。

所谓行政区划部分缺失是指各个行政级别的地址名称不完整,例如地址中市“city”为空。

所谓行政区划地址错误是指,在地址数据结构中,行政区划全部或部分缺失,例如,province、city及area均为空(未填写),或者,行政区划地址名称后有不规范的后缀,例如,city:余杭市(将“区”错填为“市”)。

详细地址正确是指详细地址中包括各级行政区划的地址名称。

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

图1所示为本申请实施例提供的一种地址识别方法,包括以下步骤:

s101:获取原始地址。

所谓原始地址是指未经过规范化处理的地址,可能由于人员录入错误或不同系统间适配错误造成的地址行政区划错位、或缺失、或者行政区域地址被包含在详细地址中等一系列错误的地址。

本实施例中,以获取到如下原始地址数据为例:{province:杭州,city:余杭区,area:仓前街道,"address_detail":"测试地址"}。

s102:从原始地址中提取行政级别最低的地址名称。

原始地址包括行政级别最低的地址名称以及原始上级地址集合,其中,原始上级地址集合是原始地址中除行政级别最低的地址名称以外其它地址名称的集合。

具体地,提取行政级别最低的地址名称的操作过程为:从原始地址中的行政区划中提取地址名称,较优地,从原始地址中的各个非空的行政区划中提取地址名称,例如原始地址数据{province:杭州,city:余杭区,area:仓前街道}中非空的行政区划为“province”、“city”和“area”,从中提取地址名称“杭州”、“余杭区”及“仓前街道”。提取到各级行政区划的地址名称后,再从各个地址名称中选择行政级别最低的地址名称,实际应用中,可以依据预先设置的地址数据库例如中国地址库中设置的各级行政地址确定各个地址名称的行政级别。“杭州”、“余杭区”及“仓前街道”中的最低级别的地址名称为“仓前街道”。

提取行政级别最低的地址名称的目的在于,政级别最低的地址在地址链的末端,并且能够最精确的定位到具体的地址。

s103:从预设的地址数据库中查找与提取到的行政级别最低地址名称相同的目标地址。

接上例,从地址数据库中查询到两条目标地址,其名称均为“仓前街道”。

s104:判断目标地址的行政级别是否符合分拣规则的要求,如果是,执行s105,如果否,则执行s109。

所述分拣规则的要求是指能够实现自动分拣(或者在某些情况下是人工分拣)所需要的最低行政级别。例如,在一个示例中,自动分拣可以按照“区”行政级别来区分出不同路由,即可以将不同区的邮件分到不同的格口,则如果目标地址的行政级别为“市”,即使识别出了正确的地址,也无法实现成功分拣,所以,s104的目的在于,如果最终的自动分拣不能成功,则中断地址识别的过程,从而节省资源。

这里以分拣规则要求最低行政级别为“区”及以下为例,接上例,“仓前街道”为“区”以下级别,所以,满足分拣规则。本领域技术人员可以认识到,在其他实施情况下,自动分拣可以仅仅要求最低行政级别为“市”、或为“省”。

s105:从预设的地址数据库中获取目标地址的上级地址的集合。

本实施例中,目标地址的上级地址的集合为目标地址在地址数据库中的上级地址按照行政级别进行前后顺序的排序而形成的集合,简称为目标上级地址集合。

接上例,以行政级别从低到高进行排序,从地址数据库中查询到的两个“仓前街道”的上级地址的集合分别为:余杭区→杭州市→浙江省以及仓山区→福州市→福建省。

s106:从原始地址中获取提取到的地址名称的上级地址的集合。

本实施例中,提取到的地址名称的上级地址的集合为原始地址中非空的行政区划中的,除了提取到的地址名称之外其它地址名称按照行政级别排序形成的集合,简称为原始上级地址集合。

接上例,原始上级地址集合为余杭区→杭州市。

s107:判断原始上级地址集合是否为目标上级地址集合的子集,且原始上级地址集合中的地址名称之间的相对顺序与目标上级地址集合中相同的地址名称之间的相对顺序相同,如果是,执行s108,如果否,执行s109。

原始上级地址集合与目标上级地址集合中相同的地址名称是指,原始上级地址集合中包括地址名称a,目标上级地址集合中也包括地址名称a。

所谓相对顺序,是指集合中的两两地址名称间的顺序,举例说明:原始上级地址集合为{b,c,e},地址名称之间的相对顺序是指b在c之前,c在e之前,b在e之前。假设目标上级地址集合为{a,b,c,d,e},地址名称之间的相对顺序是指a在b之前,a在c之前,a在d之前,a在e之前,b在c之前,b在d之前,b在e之前等。可见,地址名称b、c、e在集合1中的相对顺序与地址名称b、c、e在集合2中的相对顺序相同。

需要说明的是,为了增加匹配成功的概率,以进一步提高地址识别的概率,在进行判断之前,可以使用目标上级地址集合使用的行政级别排序方式对原始上级地址集合中的地址名称进行排序,也就是说,两个集合或者都按照行政级别从高到低进行排序,或者都按照行政级别从低到高进行排序。

s108:将目标地址及目标上级地址集合中的地址组成的地址链为原始地址的识别结果。

接上例,原始上级地址集合:余杭区→杭州市为目标上级地址集合余杭区→杭州市→浙江省的子集,并且,原始上级地址集合中两个地址的排序与目标上级地址集合中这两个地址的相对顺序相同,所以,行政区划错位的原始地址province:杭州,city:余杭区,area:仓前街道的识别结果为:province:浙江,city:杭州,area:余杭区,town:仓前街道。

以上为针对行政区划错位进行的地址识别,如果上述过程不能识别出正确的地址,则继续进行以下步骤,尝试从详细地址中识别:

s109:从原始地址中获取详细地址。

例如,原始地址数据为{province:空,city:空,area:空,"address_detail":浙江省杭州市余杭区仓前街道},利用上述过程不能识别出地址。原始地址中的详细地址为"address_detail":浙江省杭州市余杭区仓前街道。

s110:将原始地址中各个行政区划和详细地址中的地址名称拼接为字符串。

例如,将地址数据{province:空,city:空,area:空,"address_detail":浙江省杭州市余杭区仓前街道}中各个行政区划和详细地址中的地址名称进行拼接后形成的字符串为“浙江省杭州市余杭区仓前街道”。

s111:对字符串进行分词处理,得到各个分词。

例如,将“浙江省杭州市余杭区仓前街道”进行分词处理后得到分词:“浙江省”、“杭州市”、“余杭区”及“仓前街道”。

具体的分词算法可以参见先在技术,这里不再赘述。

s112:从预设的地址字典中查找各个分词匹配的地址行政区划。

接上例,可以查到各个分词的地址区划为:province:浙江,city:杭州,area:余杭区,town:仓前街道。

从图1所示的步骤可以看出,本实施例所述的地址识别方法,可以将不符合自动分拣规则的地址转换为符合地址分拣规则的地址,从而为后续的自动分拣奠定基础。

在上述执行过程中,s102和s106可以结合在步骤s102中执行,s103和s105也可以结合步骤s103中执行。

需要说明的是,通常,为了便于操作和区分,预设的地址数据库中的地址使用唯一的编号表示,例如,地址数据库中包括的地址均使用如下数据结构表示:

其中areaid是行政区划在地址库中的唯一编码,其值为123456,name是地址名称,其值为杭州市,abbname是地址简称,其值为杭州,parentid是管辖当前行政区划的上一级行政区划的唯一编码,其值为234567,在地址库中被称为当前地址对象的父对象。

在以上数据结构中,areaid、name、parentid以及abbname之间具有对应关系。

因此,图1中的s103:从预设的地址数据库中查找与提取到的地址名称相同的目标地址的具体实现方式可以为:从预设的地址数据库中查找与提取到的地址名称相同的地址名称,作为目标地址。

s104:判断目标地址是否为“区”及以下的行政级别的具体实现方式可以为:通过目标地址所对应的编码判断其是否为“区”及以下的行政级别。

其中,目标地址所对应的编码为,与目标地址处于同一个地址数据结构中的areaid的值。例如上例中,目标地址名称"杭州市"对应的编码为"123456"。

s105:从预设的地址数据库中获取目标地址的上级地址的集合的具体实现方式可以为:依据目标地址所对应的parentid值找到目标地址的上级地址。

具体地,通常,一条地址数据结构中仅包括一个地址,以及此地址的唯一的上一级地址。所以,可以依据目标地址数据结构中parentid的值找到具有与parentid的值相同的areaid的值的地址数据结构,找到的地址数据结构中的name的值即为目标地址的上级地址,依次类推,通过逐级地址数据结构的“parentid”依次找到全部上级地址,并依据找到的各个地址数据结构中的“parentid”值最终形成地址链。

例如上例中,目标地址名称"杭州市"对应的parentid值为“234567”,则在地址数据库中查找areaid的值为“234567”的地址数据结构如下:

其中,areaid的值为234567的地址数据结构中name的值为“浙江省”。可以认识到,“浙江省”为“杭州市”的上级地址。由此,这就找到了目标地址名称"杭州市"对应的上级地址。

进一步的,再依据此areaid的值为234567的地址数据结构中的parentid“000086”继续查找“浙江省”的上一级地址数据结构。在此不再累述。以此类推,直到找到目标地址的所有上级地址。

基于图1所示的步骤,图2为一种地址分拣方法的流程,包括以下具体步骤:

s201:判断原始地址是否能够被成功分拣,如果是,则进行分拣,如果否,执行s203。

本实施例中,被成功分拣除了包括上一实施例所述的能够实现自动分拣(或者在某些情况下是人工分拣)所需要的最低行政级别之外,还包括原始地址满足分拣的其它要求,例如,行政区划完整无缺失,行政区划无错位等。

s202:对原始地址进行地址链的识别。

具体地,通过执行s102~s108实现。

s203:判断是否识别出原始地址的地址链,如果是,执行s205,如果否,执行s204。

s204:对原始地址进行分词识别。

具体地,通过执行s109~s112实现。

s205:使用识别结果进行地址进行分拣。

如果经过地址链识别和分词识别均未识别出满足分拣规则的地址,则需要使用其它方式例如人工分拣对邮件进行分拣。

综上所述,地址链识别方法对用户传入的地址不要求完整性,可以是省镇,省区,市区,区镇等信息,且不要求位置正确,只要按照行政级别排序正确且末节地址为分拣单位,即可以识别得到正确的行政区划地址链。分词识别方法可以对行政区划地址错误但详细地址正确的原始地址进行行政区划的识别。实践表明,在使用了图3所示的方法后,分拣匹配率由原有的91.8%调高到97.5%。

图3为本申请实施例公开的一种地址识别装置,包括提取模块301、查找模块302和第一识别模块303。

其中,提取模块301用于从原始地址中提取行政级别最低的地址名称,所述原始地址包括所述地址名称以及原始上级地址集合,所述原始上级地址集合是所述原始地址中除所述地址名称以外其它地址名称的集合。

进一步地,提取模块从原始地址中提取行政级别最低的地址名称的具体实现方式可以为:从所述原始地址中的各个非空的行政区划中提取地址名称,并从所提取的各个地址名称中选择行政级别最低的地址名称。

查找模块302,用于从预设的地址数据库中查找与提取到的所述行政级别最低的地址名称相同的目标地址。

第一识别模块303,用于判断所述原始地址中的所述原始上级地址集合与所述目标地址的目标上级地址集合是否满足匹配条件,如果是,则将所述目标地址及所述目标上级地址集合中的地址组成的地址链作为所述原始地址的识别结果。

其中,所述目标上级地址集合为所述目标地址在所述地址数据库中的上级地址按照行政级别进行前后顺序的排序而形成的集合,所述匹配条件包括:所述原始上级地址集合为所述目标上级地址集合的子集,并且所述原始上级地址集合中的地址名称之间的相对顺序与所述目标上级地址集合中相同的地址名称之间的相对顺序相同。

可选地,第一识别模块303还用于:在判断所述原始地址中的所述原始上级地址集合与目标上级地址集合是否满足匹配条件之前,确定所述目标地址的行政级别符合分拣规则的要求。

可选地,本实施例所述装置还可以包括:

第二识别模块304,用于如果所述原始上级地址集合与所述目标上级地址集合不满足所述匹配条件,将所述原始地址中各个行政区划和详细地址中的地址名称拼接为字符串;对所述字符串进行分词处理,得到各个分词;从预设的地址词典中查找所述各个分词匹配的地址行政区划,所述各个分词匹配的地址行政区划为所述原始地址的识别结果。

可选地,本实施例所述的装置中,还可以包括:地址分拣模块(图3中未画出),用于在所述第二识别模块从预设的地址词典中查找所述各个分词匹配的地址行政区划之后,使用所述原始地址的识别结果进行地址分拣。

进一步地,如前述方法实施中所示,所述预设的数据库中包括地址数据结构,每一个地址数据结构包括:编号、上级地址编号及地址名称。由此,可以构成一个完整的地址数据结构。在此情况下,提取模块从预设的地址数据库中查找与提取到的所述行政级别最低的地址名称相同的目标地址的具体实现方式为:从预设的地址数据库中查找与提取到的行政级别最低的地址名称相同的地址名称,作为目标地址。

并且,基于以上地址数据结构,提取模块还用于:依据所述目标地址所对应的上级地址编号,从所述预设的地址数据库中找到所述目标地址的上级地址,并且以此类推,直到找到所述目标地址的所有上级地址,由此构成所述目标上级地址集合。

本实施例所述的地址识别装置,可以识别出不规范的地址,有利于提高分拣的成功率。本实施例所述装置对地址进行识别的具体流程以及与分拣过程的结合,均可以参见上述方法实施例,这里不再赘述。

本申请实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本申请实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1