发明内容
为了解决上述技术问题,本发明提供了一种地址信息识别方法及装置,通过对地址信息的解析得到地址链和后缀字符串,为后续的识别打好基础,先对地址链进行判断,以识别地址信息的区域从属关系是否正确;在区域从属关系正确的情况下,进而识别后缀字符串是否有效,通过对地址信息中两部分信息的识别以保证识别的准确性和时效性。
一方面,本发明提供了一种地址信息识别方法,所述方法包括:
根据预先构造的地址单元的数据结构表,解析待识别的地址信息的字符串得到地址链和后缀字符串;所述数据结构表是基于国家行政区划信息构造的地址单元的数据结构表;
根据预先建立的行政区域的从属关系链表,判断所述地址链的区域从属关系是否正确;所述从属关系链表是基于国家行政区划信息建立的行政区域级别从属关系链表;
当所述地址链的区域从属关系正确时,查看所述后缀字符串是否包含预设的后缀关键字;如果是,确定地址信息是有效的;否则,确定地址信息是无效的;
当所述地址链的区域从属关系不正确时,则确定地址信息为无效的。
可选的,所述根据预先建立的行政区域的从属关系链表,判断所述地址链的区域从属关系是否正确,具体包括:
根据预先建立的行政区域从属关系链表,按照级别由高到低的正向匹配方式,判断所述地址链里的区域从属关系是否正确;所述从属关系链表是基于国家行政区划信息,按照行政区域级别由高到低的方式建立的正向级别从属关系链表。
可选的,所述根据预先建立的行政区域的从属关系链表,判断所述地址链的区域从属关系是否正确,具体包括:
根据预先建立的行政区域从属关系链表,按照级别由低到高的逆向匹配方式,判断所述地址链里的区域从属关系是否正确;所述从属关系链表是基于国家行政区划信息,按照行政区域级别由低到高的方式建立的逆向级别从属关系链表。
可选的,所述逆向级别从属关系链表包括:
相邻级别的逆向级别从属关系链表和跨级别的逆向级别从属关系链表。
可选的,所述判断所述地址链的区域从属关系是否正确,具体包括:
判断所述地址链里第一个地址单元是否为直辖市;
如果是,根据预先建立的行政区域的从属关系链表以及所述地址链中的前两个地址单元,判断所述地址链的区域从属关系是否正确;
否则,根据预先建立的行政区域的从属关系链表以及所述地址链中的前三个地址单元,判断所述地址链的区域从属关系是否正确。
可选的,当所述地址链的区域从属关系正确时,在执行所述查看所述后缀字符串是否包含预设的后缀关键字步骤之前,所述方法还包括:
对所述后缀字符串进行去重处理,以去掉所述后缀字符串中与所述地址链中信息相同的部分;
判断去重后的后缀字符串的长度是否大于预设阈值;如果是,则执行所述查看所述后缀字符串是否包含预设的后缀关键字的步骤。
可选的,当查看所述后缀字符串不包含预设的后缀关键字时,所述方法还包括:
判断所述后缀字符串是否包含预设的垃圾关键字;如果是,则确定地址信息是无效的;否则,确定地址信息是有效的。
可选的,所述数据结构表是基于字典树的结构,将国家行政区划信息中的地址单元按照单字拆开的方式构造生成的地址单元的字典树。
另一方面,本发明提供了一种地址信息识别装置,其特征在于,所述装置包括:
地址信息解析单元,用于根据预先构造的地址单元的数据结构表,解析待识别的地址信息的字符串得到地址链和后缀字符串;所述数据结构表是基于国家行政区划信息构造的地址单元的数据结构表;
从属关系判断单元,用于根据预先建立的行政区域的从属关系链表,判断所述地址链的区域从属关系是否正确;所述从属关系链表是基于国家行政区划信息建立的行政区域级别从属关系链表;如果是,进入第一查看单元;否则,进入第二确定单元;
第一查看单元,用于查看所述后缀字符串是否包含预设的后缀关键字;如果是,进入第一确定单元;否则,进入第二确定单元;
所述第一确定单元,用于确定地址信息是有效的;
所述第二确定单元,用于确定地址信息是无效的。
可选的,所述区域从属关系判断单元具体用于:
根据预先建立的行政区域从属关系链表,按照级别由高到低的正向匹配方式,判断所述地址链里的区域从属关系是否正确;所述从属关系链表是基于国家行政区划信息,按照行政区域级别由高到低的方式建立的正向级别从属关系链表。
可选的,所述区域从属关系判断单元具体用于:
根据预先建立的行政区域从属关系链表,按照级别由低到高的逆向匹配方式,判断所述地址链里的区域从属关系是否正确;所述从属关系链表是基于国家行政区划信息,按照行政区域级别由低到高的方式建立的逆向级别从属关系链表。
可选的,所述逆向级别从属关系链表包括:
相邻级别的逆向级别从属关系链表和跨级别的逆向级别从属关系链表。
可选的,所述区域从属关系判断单元,包括:
第一判断子单元,用于判断所述地址链里第一个地址单元是否为直辖市;如果是,进入第二判断子单元;否则,第三判断子单元;
第二判断子单元,用于根据预先建立的行政区域的从属关系链表以及所述地址链中的前两个地址单元,判断所述地址链的区域从属关系是否正确;
第三判断子单元,用于根据预先建立的行政区域的从属关系链表以及所述地址链中的前三个地址单元,判断所述地址链的区域从属关系是否正确。
可选的,所述装置还包括:
去重处理单元,用于对所述后缀字符串进行去重处理,以去掉所述后缀字符串中与所述地址链中信息相同的部分;
长度判断单元,用于判断去重后的后缀字符串的长度是否大于预设阈值;如果是,进入所述第一查看单元。
可选的,所述装置还包括:
第二查看单元,用于在所述第一查看单元查看出后缀字符串不包含预设的后缀关键字时,查看后缀字符串是否包含预设的垃圾关键字;如果是,进入第二确定单元;否则,进入第一确定单元。
可选的,所述数据结构表是基于字典树的结构,将国家行政区划信息中的地址单元按照单字拆开的方式构造生成的地址单元的字典树。
由上述技术方案可以看出,与现有技术相比,本发明具有如下有益效果:
本发明首先根据预先构造的地址单元的数据结构表,解析待识别的地址信息的字符串得到地址链和后缀字符串;其中,数据结构表是基于国家行政区划信息构造的地址单元的数据结构表;然后,根据预先建立的行政区域的从属关系链表,判断所述地址链的区域从属关系是否正确;其中,从属关系链表是基于国家行政区划信息建立的行政区域级别从属关系链表;这样,先判断出地址信息中的国家行政区域部分的内容是否正确;如果从属关系不正确,那么可以直接确定地址信息是无效的;如果从属关系是正确的,那么继续对后缀字符串部分进行识别,具体是通过查看所述后缀字符串是否包含预设的后缀关键字;如果是,确定地址信息是有效的;否则,确定地址信息是无效的。本发明通过对地址信息的解析为后续的两部分识别打好基础,一部分是基于从属关系链表对区域从属关系的识别,识别过程简单;另一部分是基于预设的后缀关键字对详细地址信息的识别,即是关键字匹配的识别方式,匹配过程简单;通过这两部分相结合的识别方式,既能保证对地址信息的完整识别保证其准确性,又能保证识别效率。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图2,图2为本发明提供的一种地址信息识别方法实施例1的流程图,由图2可知,该方法包括以下步骤:
S201,根据预先构造的地址单元的数据结构表,解析待识别的地址信息的字符串得到地址链和后缀字符串;所述数据结构表是基于国家行政区划信息构造的地址单元的数据结构表。
地址单元是指基于国家行政划分信息提取的,用于表征独立地域信息的单元。地址单元可以通过以下方式生成,包括:
先将国家行政区划信息进行区域分割,再对分割的单元进行归一化,以去除行政区划后缀(如“省、市、区、县”等后缀字),以得到地址单元。
举例说明,例1,国家行政区划信息为:北京市市辖区东城区东华门街道办事处;区划分割以及归一化得到“北京东城东华门街道”;例2,国家行政区划信息为:“广东省清远市连山壮族瑶族自治县福堂镇”,区划分割以及归一化为:“广东清远连山福堂镇”。
地址单元的数据结构表可以采用任意类型的结构来生成,例如可以采用哈希表结构、字典树(Trie树)等。发明人发现Trie树结构的遍历性能较高,那么为了提高识别效率,在具体实现时,上述数据结构表可以是基于字典树的结构,将国家行政区划信息中的地址单元按照单字拆开的方式构造生成的地址单元的字典树。下面对基于Trie树结构构造数据结构表的方法进行说明。
首先,按照单字拆开的方式将地址单元拆成单字,然后,将一个单独的字作为一个节点来构造整个树,且每个节点上携带有地址单元是否终止的标识。例如:参见图3,图3是基于Trie树结构构造的地址单元的的数据结构表的示意图,在图3中仅以6个地址单元为例来展示对应的数据结构表,具体的6个地址单元为“山西、山东、山东庙街、太原、太原街、蒙古”,每个地址单元均被拆成单字,每个字作为一个节点,在每个节点里的“0”或“1”是用于标识地址单元是否终止,在图3中用“0”标识地址单元没有终止,用“1”标识地址单元终止,在实际应用中也可以通过其他方式来进行标识。
上述S101就是基于预先构造的地址单元的数据结构表,来解析待识别的地址信息的字符串得到地址链和后缀字符串;地址链用于表征地址信息中的区划信息;后缀字符串是地址信息中除去地址链后剩余的字符串;在具体实现时,基于预先构造的地址单元的数据结构表,按照最长匹配原则解析地址信息的字符串得到地址单元,所有地址单元按照原始位置关系组合成地址链。
举例说明,例如:“山东省烟台市蓬莱市蓬达望阁楼5楼3059”,解析到的地址链为:“山东烟台蓬莱”,后缀字符串为“蓬达望阁楼5楼3059”。再例如:“北京市朝阳区东三环中路32号”解析到的地址链为:“北京朝阳”,后缀字符串为“东三环中路32号”。
完成S201之后,进入S202步骤。
S202,根据预先建立的行政区域的从属关系链表,判断所述地址链的区域从属关系是否正确;所述从属关系链表是基于国家行政区划信息建立的行政区域级别从属关系链表。
发明人首先提供了一种方式来是实现S202,第一种方式:根据预先建立的行政区域从属关系链表,按照级别由高到低的正向匹配方式,判断所述地址链里的区域从属关系是否正确;所述从属关系链表是基于国家行政区划信息,按照行政区域级别由高到低的方式建立的正向级别从属关系链表。
考虑到中国地理环境复杂,行政区域从属关系复杂,一个地址单元的下级地址可能有多个,例如:河北省的下级地址有33个市、108个县;再例如:山东省的下级地址有17个市、139个县或区。发明人又提供了一种方式来实现S202,以提高区域从属关系识别效率。
第二种方式:根据预先建立的行政区域从属关系链表,按照级别由低到高的逆向匹配方式,判断所述地址链里的区域从属关系是否正确;所述从属关系链表是基于国家行政区划信息,按照行政区域级别由低到高的方式建立的逆向级别从属关系链表。
另外,发明人还考虑到用户输入地址信息的一些常规习惯,如跨级别的地址信息,如用户经常会漏掉中间级别的区划信息,如漏掉市级别、漏掉区级别,例如,“陕西省宝鸡市金台区陈仓园北金色花园小区”用户一般会写成“陕西省金台区陈仓园北金色花园小区”,漏掉了中间级别的“宝鸡市”或者“陕西省宝鸡市陈仓园北金色花园小区”,漏掉了中间级别的“金台区”;针对用户输入的此类地址信息,为了进一步提高区域从属关系的识别效率,发明人还提供了更好的方案,在第二种方式中,所述逆向级别从属关系链表包括:相邻级别的逆向级别从属关系链表和跨级别的逆向级别从属关系链表。
举例说明,例如:“北京东城东华门街道”可构造成“东华门街道—>东城—>北京,东华门街道—>北京(跨级别从属关系链表),东城—>北京”三个逆向从属关系链。此外,对于一个地址单元可能出现在多个辖区中的情况,则针对一个地址单元可以构造多重关系链表,例如:“安徽芜湖镜湖北京路街道”和“山东日照东港北京路街道”都含有“北京路街道”,因此,可以构造“北京路街道—>镜湖—>芜湖—>安徽”和“北京路街道—>东港—>日照—>山东”。
下面对上述“按照级别由低到高的逆向匹配方式,判断所述地址链里的区域从属关系是否正确”的实现过程进行举例说明。
例如:地址链为“辽宁沈阳和平太原街”,按照级别由低到高的逆向匹配方式具体为:先判断“沈阳”是否隶属于“辽宁”,再判断“和平区”是否属于“沈阳”,最后判断“太原街”是否属于“和平区”,只有所有从属关系正确才可以认为是正确的从属关系。整个判断过程是基于地址链中的地址单元位置顺序,再按照级别由低到高的逆向方式进行判断。
另外,考虑到中国关于市级设置了直辖市,对于直辖市的区划信息,其下级地址单位只是区、县等,对于非直辖市的区划信息,其包括省、市、区、县等,为了进一步提高区域从属关系的识别效率,发明人还提供了一种实现方式,第三种方式,包括:
判断所述地址链里第一个地址单元是否为直辖市;
如果是,根据预先建立的行政区域的从属关系链表以及所述地址链中的前两个地址单元,判断所述地址链的区域从属关系是否正确;
否则,根据预先建立的行政区域的从属关系链表以及所述地址链中的前三个地址单元,判断所述地址链的区域从属关系是否正确。
目前中国有4个直辖市,分别为北京市、上海市、天津市、重庆市;那么在具体实现时,仅需要判断地址链里的级别最高的单元,即,第一个地址单元是否为上述四个直辖市中任一个。在按照第三种方式实现S202时,可以采用上述第一种方式或上述第二种方式来判断区域从属关系是否正确。
完成S202之后,当所述地址链的区域从属关系正确时,进入S203步骤;当所述地址链的区域从属关系不正确时,进入S205步骤。
S203,查看所述后缀字符串是否包含预设的后缀关键字;如果是,进入S204;否则,进入S205。
S204,确定地址信息是有效的。S205,确定地址信息是无效的。
在这里,预设的后缀关键字是通过预先统计合法地址信息中的标志性的字。一般情况下,先统计合法地址的标志性字出现的频率,将出现频率较高的字设置为预设的后缀关键字,如:“号、栋、室、路、弄、苑……等”。在具体实现时,将这些预设的后缀关键字组合成一个预设的关键字集合,那么在实现S203时,将所述后缀字符串与预设的关键字集合进行文本遍历,以确定所述后缀字符串是否包含预设的关键字;如果按照集合中字的顺序进行遍历,只要确定出后缀字符串包含了一个预设的关键字,就可以停止遍历。
另外,发明人结合用户撰写地址信息的习惯,在大量地址信息数据的统计规律的基础上,统计得到一个阈值可以作为区分后缀字符串正确与否的判断阈值,进一步地,发明人在上述实施例1的基础上,还提供了另一种更优化的实现方案。
参见图4,图4为本发明提供的一种地址信息识别方法实施例2的流程图;图4的方案是在图2方案的基础上,增加了如下步骤:
在执行S201和S202,完成S202之后,当所述地址链的区域从属关系正确时,进入执行S206步骤;当所述地址链的区域从属关系不正确时,进入S205。
S206,对所述后缀字符串进行去重处理,以去掉所述后缀字符串中与所述地址链中信息相同的部分。
这里的去重处理主要是为了解决在实际应用中,用户重复输入区划信息以至于后缀字符串中还会包含区划信息,进而影响后续识别效果的问题。
在完成S206时,进入S207。
S207,判断去重后的后缀字符串的长度是否大于预设阈值;如果是,进入S203以及进入S204或S205。
另外,发明人在上述实施例2的基础上,还提供了另一种更优化的实现方案。
参见图5,图5为本发明提供的一种地址信息识别方法实施例3的流程图;图5的方案是在图4方案的基础上,增加了如下步骤:
在执行S203判断结果为是时,进入S208。
S208,判断所述后缀字符串是否包含预设的垃圾关键字;如果是,进入S205,否则,进入S204。
这里的预设的垃圾关键字是通过统计错误地址信息中频繁出现的垃圾关键字。需要说明的是,在各个方案中各步骤的序列号并不直接决定步骤的执行顺序,而是根据上下文逻辑关系来决定步骤的执行顺序。
通过上述实施例可以看出,本发明基于国家区划信息建立的数据结构表来对地址信息进行划分得到地址链和后缀字符串,接着采用两重识别方式,既识别表征区划信息的地址链,又识别表征具体位置信息的后缀字符串,保证了识别完整性提高了精确度,且地址链从属关系的识别和后缀字符串的识别均是字符串查找过程,实现过程简单快速,使得识别效率较高;另外,在后缀字符串的识别,可以利用预设的后缀关键字,还可以结合后缀字符串的长度,也还可以结合预设的垃圾关键字对后缀字符串的有效性进行准确识别。因此,本发明能够提高地址信息识别的效率和准确性。
上文是对本发明提供的地址信息识别方法进行了说明,下面对本发明提供的地址信息识别装置进行说明。
参见图6,图6是本发明提供的一种地址信息识别装置实施例1的结构图,所述装置包括:
地址信息解析单元601,用于根据预先构造的地址单元的数据结构表,解析待识别的地址信息的字符串得到地址链和后缀字符串;所述数据结构表是基于国家行政区划信息构造的地址单元的数据结构表;
从属关系判断单元602,用于根据预先建立的行政区域的从属关系链表,判断所述地址链的区域从属关系是否正确;所述从属关系链表是基于国家行政区划信息建立的行政区域级别从属关系链表;如果是,进入第一查看单元603;否则,进入第二确定单元605;
第一查看单元603,用于查看所述后缀字符串是否包含预设的后缀关键字;如果是,进入第一确定单元604;否则,进入第二确定单元605;
所述第一确定单元604,用于确定地址信息是有效的;
所述第二确定单元605,用于确定地址信息是无效的。
优选的,所述区域从属关系判断单元具体用于:
根据预先建立的行政区域从属关系链表,按照级别由高到低的正向匹配方式,判断所述地址链里的区域从属关系是否正确;所述从属关系链表是基于国家行政区划信息,按照行政区域级别由高到低的方式建立的正向级别从属关系链表。
优选的,所述区域从属关系判断单元具体用于:
根据预先建立的行政区域从属关系链表,按照级别由低到高的逆向匹配方式,判断所述地址链里的区域从属关系是否正确;所述从属关系链表是基于国家行政区划信息,按照行政区域级别由低到高的方式建立的逆向级别从属关系链表。
优选的,所述逆向级别从属关系链表包括:
相邻级别的逆向级别从属关系链表和跨级别的逆向级别从属关系链表。
优选的,所述区域从属关系判断单元,包括:
第一判断子单元,用于判断所述地址链里第一个地址单元是否为直辖市;如果是,进入第二判断子单元;否则,第三判断子单元;
第二判断子单元,用于根据预先建立的行政区域的从属关系链表以及所述地址链中的前两个地址单元,判断所述地址链的区域从属关系是否正确;
第三判断子单元,用于根据预先建立的行政区域的从属关系链表以及所述地址链中的前三个地址单元,判断所述地址链的区域从属关系是否正确。
优选的,所述数据结构表是基于字典树的结构,将国家行政区划信息中的地址单元按照单字拆开的方式构造生成的地址单元的字典树。
参见图7,图7的方案是在图6方案的基础上还包括:
去重处理单元606,用于对所述后缀字符串进行去重处理,以去掉所述后缀字符串中与所述地址链中信息相同的部分;
长度判断单元607,用于判断去重后的后缀字符串的长度是否大于预设阈值;如果是,进入所述第一查看单元503。
参见图8,图8的方案是在图7方案的基础上还包括:第二查看单元608,用于在所述第一查看单元查看出后缀字符串不包含预设的后缀关键字时,查看后缀字符串是否包含预设的垃圾关键字;如果是,进入第二确定单元605;否则,进入第一确定单元604。
这里需要说明的是,图8相比图7的方案增加的单元也可以直接增加到图6所示的方案以生成优选方案。
通过上述实施例可以看出,本发明基于国家区划信息建立的数据结构表来对地址信息进行划分得到地址链和后缀字符串,接着采用两重识别方式,既识别表征区划信息的地址链,又识别表征具体位置信息的后缀字符串,保证了识别完整性提高了精确度,且地址链从属关系的识别和后缀字符串的识别均是字符串查找过程,实现过程简单快速,使得识别效率较高;另外,在后缀字符串的识别,可以利用预设的后缀关键字,还可以结合后缀字符串的长度,也还可以结合预设的垃圾关键字对后缀字符串的有效性进行准确识别。因此,本发明能够提高地址信息识别的效率和准确性。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法中的全部或部分步骤可借助软件加通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者诸如媒体网关等网络通信设备)执行本发明各个实施例或者实施例的某些部分所述的方法。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备及系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的设备及系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本发明的优选实施方式,并非用于限定本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。