一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于双数组的地址补全方法及装置、存储介质与流程

2022-07-30 19:31:24 来源:中国专利 TAG:


1.本技术涉及数据处理技术领域,尤其是涉及到一种基于双数组的地址补全方法及装置、存储介质、计算机设备。


背景技术:

2.当前已经进入大数据社会,每天都会产生大量的数据,其中包括地址数据。完整的地址数据可以在多个领域得到广泛应用。然而,在日常生活中,地址数据往往是非结构化数据,存在地址信息不全等问题,对地址数据中的地址信息进行补全具有非常重要的意义和作用。
3.现有技术中对地址数据中的地址信息进行补全时,往往先通过硬性规则及正则匹配对地址数据进行分解得到地址信息,之后再对地址信息进行补全,这种方法往往存在匹配速度过慢,匹配准确率不高等问题。


技术实现要素:

4.有鉴于此,本技术提供了一种基于双数组的地址补全方法及装置、存储介质、计算机设备,可以有效提升地址信息的提取效率以及提取准确率,提高地址补全的速度。
5.根据本技术的一个方面,提供了一种基于双数组的地址补全方法,包括:
6.获取地址片段,将所述地址片段输入至预设双数组字典树中,基于所述预设双数组字典树中包括的预设地址提取所述地址片段中包含的匹配地址,其中,所述预设双数组字典树中包括至少一种地址等级的所述预设地址,所述地址等级包括省级、市级、区级、街道级以及社区级;
7.依据预设地址字典,确定每个所述匹配地址对应的地址编码以及所述地址等级,基于每个所述匹配地址对应的所述地址编码以及所述地址等级,确定待补全地址,以及与所述待补全地址对应的目标地址编码,其中,所述预设地址字典中包括所述预设地址、与任一所述预设地址对应的所述地址编码以及所述地址等级;
8.基于所述目标地址编码以及所述预设地址字典,补全所述待补全地址。
9.根据本技术的另一方面,提供了一种基于双数组的地址补全装置,包括:
10.地址提取模块,用于获取地址片段,将所述地址片段输入至预设双数组字典树中,基于所述预设双数组字典树中包括的预设地址提取所述地址片段中包含的匹配地址,其中,所述预设双数组字典树中包括至少一种地址等级的所述预设地址,所述地址等级包括省级、市级、区级、街道级以及社区级;
11.待补全地址确定模块,用于依据预设地址字典,确定每个所述匹配地址对应的地址编码以及所述地址等级,基于每个所述匹配地址对应的所述地址编码以及所述地址等级,确定待补全地址,以及与所述待补全地址对应的目标地址编码,其中,所述预设地址字典中包括所述预设地址、与任一所述预设地址对应的所述地址编码以及所述地址等级;
12.地址补全模块,用于基于所述目标地址编码以及所述预设地址字典,补全所述待
补全地址。
13.依据本技术又一个方面,提供了一种存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述基于双数组的地址补全方法。
14.依据本技术再一个方面,提供了一种计算机设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述基于双数组的地址补全方法。
15.借由上述技术方案,本技术提供的一种基于双数组的地址补全方法及装置、存储介质、计算机设备,首先,可以获取地址片段,接着,可以将获取的地址片段输入到预设双数组字典树中,通过预设双数组字典树中包括的预设地址可以从地址片段中提取出包含的匹配地址。在这里,预设双数组字典树是预先构建的,预设双数组字典树中可以包括一种或者几种不同地址等级的预设地址,这里的地址等级可以是省级、市级,也可以是区级、街道级以及社区级。进一步以预设地址字典为基础,从预设地址字典中找到每个匹配地址对应的地址编码,还可以确定每个匹配地址对应的地址等级。在这里,预设地址字典中可以包括各个地址等级的预设地址,还可以包括每个预设地址对应的地址编码以及地址等级。确定每个匹配地址对应的地址编码和地址等级后,可以根据这些匹配地址对应的地址编码和地址等级确定与地址片段对应的待补全地址。此外,还可以确定与待补全地址相对应的目标地址编码。确定待补全地址和目标地址编码后,可以根据目标地址编码和预设地址字典,对待补全地址中的空地址进行补全。本技术实施例根据预设双数组字典树从地址片段中提取匹配地址,可以有效提升地址信息的提取效率以及提取准确率,提高地址补全的速度。
16.上述说明仅是本技术技术方案的概述,为了能够更清楚了解本技术的技术手段,而可依照说明书的内容予以实施,并且为了让本技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本技术的具体实施方式。
附图说明
17.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
18.图1示出了本技术实施例提供的一种基于双数组的地址补全方法的流程示意图;
19.图2示出了本技术实施例提供的一种预设双数组字典树构建过程的示意图;
20.图3示出了本技术实施例提供的一种预设双数组字典树构建过程的示意图;
21.图4示出了本技术实施例提供的一种预设双数组字典树构建过程的示意图;
22.图5示出了本技术实施例提供的一种预设双数组字典树构建过程的示意图;
23.图6示出了本技术实施例提供的一种预设双数组字典树构建过程的示意图;
24.图7示出了本技术实施例提供的一种基于双数组的地址补全装置的结构示意图。
具体实施方式
25.下文中将参考附图并结合实施例来详细说明本技术。需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。
26.在本实施例中提供了一种基于双数组的地址补全方法,如图1所示,该方法包括:
27.步骤101,获取地址片段,将所述地址片段输入至预设双数组字典树中,基于所述
预设双数组字典树中包括的预设地址提取所述地址片段中包含的匹配地址,其中,所述预设双数组字典树中包括至少一种地址等级的所述预设地址,所述地址等级包括省级、市级、区级、街道级以及社区级;
28.本技术实施例提供的基于双数组的地址补全方法,可以应用于客户端一侧,也可以应用于服务器一侧,可以大大提升地址信息提取效率以及地址信息匹配的准确性。首先,可以获取地址片段,其中,地址片段中可以包括一部分地址信息,例如,地址片段“我的家在浙江拱墅万达东边50米小区内”,从该句话中可以确定与地址信息相关的词汇包括浙江、拱墅、万达,其中浙江为省,拱墅为区,万达为广场名称,也就是说,该地址片段中不包括市的信息、社区的信息、街道的信息等,因此,从这种地址片段中提取地址信息后可以进一步进行地址的补全。接着,可以将获取的地址片段输入到预设双数组字典树中,通过预设双数组字典树中包括的预设地址可以从地址片段中提取出包含的匹配地址。在这里,预设双数组字典树是预先构建的,预设双数组字典树中可以包括一种或者几种不同地址等级的预设地址,这里的地址等级可以是省级、市级,例如浙江省、杭州市,也可以是区级、街道级以及社区级,例如长宁区、吉如社区、长宁街道等。除了上面五个地址等级外,还可以包括poi级以及道路级。其中poi(point of interesting)指的是兴趣点,即地图上任何非地理意义的有意义的点,比如商店、酒吧、加油站、医院、车站等。道路级指的是具体的道路,例如中山路、解放路等。道路级和poi级预设地址可以是通过地图爬虫爬取得到的。预设双数组字典树具体可以是双数组trie树,在将预设地址存入预设双数组字典树时,可以根据双数组trie树中经典的t=base[i] a,check[t]=i进行存储,其中,预设双数组字典树中包括两个数组,可以称之为第一数组和第二数组,第一数组可以是base数组,第二数组可以是check数组。base数组中每个位置对应的数组值表示一个trie节点,即一个状态,check数组中每个位置对应的数组值表示该位置处状态的前驱状态。第一数组和第二数组中的位置可以用i表示,如果base[i]、check[i]均为0,表示该位置为空;如果check[i]为负值,表示该状态可以为结束状态。第一数组中的i代表当前状态的下标,t代表转移状态的下标,a代表输入字符的数值。此外,在从地址片段中找到匹配地址后,为了避免匹配地址中存在重复,可以进一步对提取的匹配地址进行去重处理。
[0029]
步骤102,依据预设地址字典,确定每个所述匹配地址对应的地址编码以及所述地址等级,基于每个所述匹配地址对应的所述地址编码以及所述地址等级,确定待补全地址,以及与所述待补全地址对应的目标地址编码,其中,所述预设地址字典中包括所述预设地址、与任一所述预设地址对应的所述地址编码以及所述地址等级;
[0030]
在该实施例中,可以进一步以预设地址字典为基础,从预设地址字典中找到每个匹配地址对应的地址编码,还可以确定每个匹配地址对应的地址等级。由于匹配地址不同,因此找到的地址编码也是各不相同的。在这里,预设地址字典中可以包括各个地址等级的预设地址,还可以包括每个预设地址对应的地址编码以及地址等级。其中,当地址等级中不包括poi级和道路级时,地址编码的位数可以是和地址等级数量直接相关的,每个地址编码中可以包括不同的子编码,每个子编码对应一个地址等级。例如,地址等级按照省级、市级、区级、街道级以及社区级的顺序可以命名为1-5级,即范围越大的预设地址,对应的地址等级越高。每个预设地址对应的地址编码可以是12位,其中,第1-2位代表省级地址对应的子编码,第3-4位代表市级地址对应的子编码,第5-6位代表区级地址对应的子编码,第7-9位
代表街道级地址对应的子编码,第10-12位代表社区级地址对应的子编码。比如,“浙江省”对应的地址编码可以是330000000000,“杭州市”对应的地址编码可以是330100000000,也就是说,当预设地址属于省级地址时,该预设地址对应的地址编码中除了第1-2位之外,其余位数均可以用0填满,当预设地址属于区级地址时,该预设地址对应的地址编码中除了前6位之外的位数可以用0填满,依次类推。当地址等级仅包括省级和市级时,对应的地址编码也可以只包括4位,在此不作要求。此外,当地址等级中包括poi级和道路级时,由于poi级和道路级本身没有对应的子编码,因此对于poi级预设地址和道路级预设地址来说,这两种预设地址的地址编码可以为对应社区的地址编码,例如poi级预设地址为拱宸桥,拱宸桥对应的社区级预设地址为吉如社区,而吉如社区的地址编码为330105101123,那么拱宸桥这一poi级预设地址对应的地址编码同样也可以为330105101123。另外,poi级预设地址对应的地址等级可以为6级,道路级预设地址对应的地址等级可以为7级。确定每个匹配地址对应的地址编码和地址等级后,可以根据这些匹配地址对应的地址编码和地址等级确定与地址片段对应的待补全地址。例如,提取的匹配地址有三个,分别是浙江省、拱墅区、吉如社区,其中浙江省对应的地址等级是1级,对应的地址编码是330000000000,拱墅区对应的地址等级是3级,对应的地址编码是330105000000,吉如社区对应的地址等级是5级,对应的地址编码是330105101123。经过对比这三个匹配地址的地址编码可知,这三个地址编码中省级地址等级对应的子编码是相同的,且拱墅区与吉如社区对应的地址编码中,与区级地址等级对应的子编码也是相同的,说明这三个匹配地址中存在包含关系,将这三个匹配地址按照地址等级从高至低进行排序,发现匹配地址中只有1级地址、3级地址以及5级地址,缺少2级地址和4级地址,因此可以得到待补全地址为[

浙江’、
‘’


拱墅’、
‘’


吉如社区’]。此外,还可以确定与待补全地址相对应的目标地址编码,例如,上述吉如社区对应的地址编码即可作为目标地址编码。
[0031]
步骤103,基于所述目标地址编码以及所述预设地址字典,补全所述待补全地址。
[0032]
在该实施例中,确定待补全地址和目标地址编码后,可以进一步根据目标地址编码和预设地址字典,对待补全地址中的空地址进行补全。
[0033]
通过应用本实施例的技术方案,首先,可以获取地址片段,接着,可以将获取的地址片段输入到预设双数组字典树中,通过预设双数组字典树中包括的预设地址可以从地址片段中提取出包含的匹配地址。在这里,预设双数组字典树是预先构建的,预设双数组字典树中可以包括一种或者几种不同地址等级的预设地址,这里的地址等级可以是省级、市级,也可以是区级、街道级以及社区级。进一步以预设地址字典为基础,从预设地址字典中找到每个匹配地址对应的地址编码,还可以确定每个匹配地址对应的地址等级。在这里,预设地址字典中可以包括各个地址等级的预设地址,还可以包括每个预设地址对应的地址编码以及地址等级。确定每个匹配地址对应的地址编码和地址等级后,可以根据这些匹配地址对应的地址编码和地址等级确定与地址片段对应的待补全地址。此外,还可以确定与待补全地址相对应的目标地址编码。确定待补全地址和目标地址编码后,可以根据目标地址编码和预设地址字典,对待补全地址中的空地址进行补全。本技术实施例根据预设双数组字典树从地址片段中提取匹配地址,可以有效提升地址信息的提取效率以及提取准确率,提高地址补全的速度。
[0034]
进一步的,作为上述实施例具体实施方式的细化和扩展,为了完整说明本实施例
的具体实施过程,提供了另一种基于双数组的地址补全方法,该方法包括:
[0035]
步骤201,获取地址信息,其中,所述地址信息包括所述预设地址、所述地址等级以及所述地址编码;基于所述预设地址,确定每个所述预设地址对应的同义地址,基于所述同义地址对所述预设地址进行更新,得到更新后的预设地址,并基于所述更新后的预设地址,以及与每个所述更新后的预设地址对应的所述地址等级以及所述地址编码,构建所述预设地址字典;
[0036]
在该实施例中,可以先获取地址信息,具体地,可以以国家统计局网站的区域划分等级名录为基础,利用爬虫爬取得到全国各个区域的地址信息。在这里,地址信息可以包括三个部分,分别是预设地址、地址等级以及地址编码。在这里,地址等级可以是省级、市级、区级、街道级以及社区级,也可以是poi级以及道路级。接着,可以以获取到的地址信息中的预设地址为基础,确定每个预设地址对应的同义地址,例如,对于“浙江省”这一预设地址,其同义地址可以包括“浙江”、“浙”等,“浙江”、“浙”这些同义地址对应的地址等级和地址编码与“浙江省”这一预设地址对应的地址等级和地址编码是相同的,对于“清华大学”这一poi级预设地址,其同义地址可以包括“清华”等,“清华”等同义地址对应的地址等级和地址编码与“清华大学”这一预设地址对应的地址等级和地址编码是相同的,且“清华大学”的地址编码与“清华大学”所在的社区对应的地址编码是相同的。之后,可以利用这些同义地址对预设地址进行更新和扩充,得到更新后的预设地址。得到更新后的预设地址后,以更新后的预设地址、地址等级以及地址编码为基础,构建预设地址字典。
[0037]
步骤202,从所述预设地址字典中获取全部所述预设地址,将所述预设地址中包括的字进行去重处理,得到预设目标字,并为每个所述预设目标字设置初始值;
[0038]
在该实施例中,可以从预设地址字典中获取所有的预设地址,其中,每个预设地址中可以包括一个或多个字,例如,“浙江”这一预设地址,包括“浙”和“江”两个字,“沪”这一预设地址,仅包括“沪”一个字。将全部预设地址拆成单字之后,可以将这些单字进行去重处理,去掉这些单字中的重复单字,将去重后剩余的单字作为预设目标字,同时可以为每个预设目标字设置一个初始值。
[0039]
步骤203,基于每个所述预设目标字对应的所述初始值以及所述预设地址,构建所述预设双数组字典树,其中,所述预设双数组字典树包括第一数组以及第二数组,所述第二数组中任一位置对应的数组值用于指示所述任一位置对应的预设目标字或者预设目标字组合的上级状态对应的位置;
[0040]
在该实施例中,为每个预设目标字设置对应的初始值之后,进一步可以以这些预设目标字对应的初始值和全部预设地址为基础,构建预设双数组字典树。具体地,预设双数组字典树中可以包括两个数组,可以分别称之为第一数组和第二数组。预设双数组字典树可以是双数组trie树,第一数组可以是base数组,第二数组可以是check数组,存储时满足t=base[i] a,check[t]=i,其中,第一数组中的i代表当前状态的下标,t代表转移状态的下标,a代表输入字符的数值。第一数组与第二数组可以有相同的数组长度,预设双数组字典树中每个位置对应有一个预设目标字或者一个预设目标字组合,在这里,第二数组中每个位置对应的数组值为该位置处对应的预设目标字或者预设目标字组合的上级状态对应的位置。例如预设目标字组合“浙江”由预设目标字“浙”和预设目标字“江”组成,对于预设目标字组合“浙江”来说,其上级状态为预设目标字“浙”,预设目标字组合“浙江”在预设双
数组字典树中对应的位置为第七位置,预设目标字“浙”对应的位置为第四位置,那么第二数组中“浙江”位置处对应的数组值为4。又例如,第一数组中的第一个位置可以设置数组值为0,现将预设地址“浙江”和“江苏”对应存储在预设双数组字典树中,其中,预设目标字分别为“浙”、“江”以及“苏”,将这三个预设目标字分别设置初始值为1、2、3。首先,将“浙”存储在预设双数组字典树中,“浙”这一状态相当于(状态“空” 状态“浙”)得到,设置base[0]=0,即第一数组(base数组,以下简称第一数组)中位置0处对应的数组值为0,因此t

=base[i] a=base[0] 1,在这里,a可以表示每个预设目标字对应的初始值,“浙”的初始值为1,因此a=1,t

=0 1=1,而check[t

]=i,因此check[1]=0,所以第二数组(check数组,以下简称第二数组)中第一位置对应的数组值为0,具体见图2。由于t代表转移状态的下标,因此状态“浙”对应于预设双数组字典树中的第一位置。接着,可以将状态“浙江”存储在预设双数组字典树中,“浙江”这一状态相当于(状态“浙” 状态“江”)得到,因此t
浙江
=base[i] a,即为t
浙江
=base[1] 2=未知 2,由于预设双数组字典树中第二位置对应状态为空,假如将状态“浙江”对应于预设双数组字典树中的第二位置,那么此时t
浙江
=2,即2=base[1] 2,所以此时base[1]=0,check[2]=1,所以,第一数组中第一位置对应的数组值为0,第二数组中第二位置对应的数组值为1,具体见图3。之后,可以将状态“江”存储在预设双数组字典树中,“江”这一状态相当于(状态“空” 状态“江”)得到,因此t

=base[i] a,即为t

=base[0] 2=0 2=2,因此将状态“江”对应于预设双数组字典树中的第二位置,然而前面状态“浙江”已经对应于预设双数组字典树中的第二位置,所以存在冲突。此时可以将状态“浙江”对应于预设双数组字典树中的最大位置,在本技术实施例中假设最大位置为7,那么t
浙江
=7=base[1] 2,所以base[1]=5,check[7]=1,也就是说将状态“浙江”对应于预设双数组字典树中的第七位置,将第一数组中第一位置处对应的数组值修改为5,第二数组中第七位置处对应的数组值为1。而状态“江”对应于预设双数组字典树中的第二位置,第二数组中第二位置对应的数组值为check[2]=0,具体见图4。最后,可以将状态“江苏”存储在预设双数组字典树中,“江苏”这一状态相当于(状态“江” 状态“苏”)得到,因此t
江苏
=base[i] a,即为t
江苏
=base[2] 3=未知 3,由于预设双数组字典树中第三位置对应状态为空,假如将状态“江苏”对应于预设双数组字典树中的第三位置,那么此时t
江苏
=3,即3=base[2] 3,所以此时base[2]=0,check[3]=2,所以,第一数组中位置三对应的数组值为0,第二数组中第三位置对应的数组值为2,具体见图5。以此类推,将预设地址全部存储在预设双数组字典树中。需要说明的是,当每个预设地址存储结束时,第二数组中对应位置处的数组值可以是负值,具体见图6。
[0041]
步骤204,获取地址片段,将所述地址片段输入至所述预设双数组字典树中,从所述预设目标字中确定所述地址片段中包含的目标字,其中,所述预设双数组字典树中包括至少一种地址等级的所述预设地址,所述地址等级包括省级、市级、区级、街道级以及社区级;
[0042]
在该实施例中,获取地址片段,并将该地址片段输入到预设双数组字典树中,将该地址片段中与预设双数组字典树中的预设目标字进行匹配,找出预设片段中包括的目标字。在这里,预设双数组字典树中可以包括一种地址等级的预设地址,也可以包括多种地址等级的预设地址,地址等级可以是省级地址、市级地址,此外也可以是区级地址、街道级地址、社区级地址等,还可以包括poi级地址、道路级地址等。
[0043]
步骤205,在所述地址片段中确定任一所述目标字的位置,并确定所述目标字的下一相邻字,判断所述下一相邻字是否属于所述预设目标字;
[0044]
在该实施例中,确定地址片段中包括的目标字之后,分别确定每个目标字在地址片段中的位置,之后确定每个目标字对应的下一相邻字,例如,地址片段为“我的家在浙江拱墅万达东边50米小区内”,第一个目标字为“浙”,在该地址片段中确定“浙”的位置后,可以确定下一相邻字为“江”。接着,可以确定预设目标字中是不是包括该下一相邻字。如果目标字的下一相邻字属于预设目标字,那么说明由目标字和目标字的下一相邻字组成的目标字组合可能属于预设地址,如果目标字的下一相邻字不属于预设目标字,那么说明由目标字和目标字的下一相邻字组成的目标字组合肯定不属于预设地址。
[0045]
步骤206,当所述下一相邻字属于所述预设目标字时,基于所述目标字在所述预设双数组字典树中对应的目标位置,确定所述目标位置处所述第一数组对应的数组值,计算所述目标位置处所述第一数组对应的数组值与所述下一相邻字对应的所述初始值之间的第一和值,并基于所述第一和值提取所述地址片段中包含的所述匹配地址;
[0046]
在该实施例中,当目标字的下一相邻字属于预设目标字时,可以进一步以该目标字在预设双数组字典树中的目标位置为基础,验证目标字以及目标字的下一相邻字组成的目标字组合对应的上一状态是否是该目标字,以验证该目标字组合是否属于预设地址。在构建预设双数组字典树时,将目标字组合中的上一状态设置为该目标字组合中除最后一个目标字之外的目标字组合或目标字,例如,目标字组合可以是“连云港”,那么“连云港”的上一状态为“连云”;目标字组合可以是“连云”,那么“连云”的上一状态为“连”。由于在构建预设双数组字典树时,第二数组中目标字或者目标字组合对应的位置处的数组值为该目标字或者目标字组合的上一状态对应的位置,所以,验证目标字与下一相邻字组成的目标字组合是否属于预设地址时,首先确定目标字在预设双数组字典树中的目标位置,以及该目标位置处第一数组对应的数组值,计算目标位置处第一数组对应的数组值和下一相邻字对应的初始值之间的第一和值,接着可以根据该第一和值从地址片段中提取出匹配地址。
[0047]
步骤207,当所述下一相邻字不属于所述预设目标字时,基于所述目标字在所述预设双数组字典树中对应的所述目标位置,确定所述目标位置处所述第二数组对应的数组值是否为负值,并当结果为是时,将所述目标字作为所述匹配地址;
[0048]
在该实施例中,如果目标字的下一相邻字并不属于预设目标字时,那么可以进一步以目标字在预设双数组字典树中的目标位置为基础,判断该目标位置处第二数组中的数组值是不是负值,如果是负值,说明该目标字即为一个完整的预设地址,此时可以将该目标字作为匹配地址输出,如果不是负值,则说明该目标字不是预设地址,直接舍弃。
[0049]
步骤208,依据预设地址字典,确定每个所述匹配地址对应的地址编码以及所述地址等级;将任意两个所述匹配地址对应的地址编码进行比对,确定比对结果中存在包含关系的所述匹配地址,将比对结果显示存在包含关系的所述匹配地址按照所述地址等级从高至低进行排序,得到第一待补全地址;基于不存在所述包含关系的所述匹配地址,确定第二待补全地址;对所述第一待补全地址以及所述第二待补全地址进行置信度计算,确定所述待补全地址,并将所述待补全地址中所述地址等级最低的所述匹配地址对应的所述地址编码作为所述目标地址编码;
[0050]
在该实施例中,可以以预设地址字典为基础,确定与每个匹配地址相对应的地址
编码和地址等级。接着,可以根据每个匹配地址对应的地址编码确定这些匹配地址中的包含关系。具体地,可以将这些匹配地址对应的地址编码两两之间进行比较,如果两个匹配地址之间存在包含关系,那么这两个匹配地址对应的地址编码中势必存在相同的子编码,在这里,每个匹配地址均可以由不同地址等级对应的子编码组成。例如:地址编码为12位编码,其中包括6个子编码,第1~2位属于省级地址对应的子编码,第3~4位属于市级地址对应的子编码,第5~6位属于区级地址对应的子编码,第7~9位属于街道级地址对应的子编码,第10~12位属于社区级地址对应的子编码,匹配地址分别为“浙江”和“拱墅”,由于“拱墅”属于“浙江”管辖下的区级地址,因此“拱墅”和“浙江”对应的地址编码中,第1~2位对应的子编码是相同的。如果比对结果显示有些匹配地址之间存在包含关系,那么将存在包含关系的匹配地址按照地址等级从高至低进行排序,进而得到第一待补全地址,地址等级较高的匹配地址包含的地址范围更大。例如,经过比对发现“浙江”、“拱墅”、“吉如社区”这三个匹配地址之间存在包含关系,且“浙江”对应的地址等级为“1”,“拱墅”对应的地址等级为“3”,“吉如社区”对应的地址等级为“5”,那么第一待补全地址可以是[“浙江”、
“”
、“拱墅”、
“”
、“吉如社区”]。匹配地址中除了存在包含关系的匹配地址外,根据剩余与其他匹配地址之间不存在包含关系的匹配地址,确定出第二待补全地址。例如,匹配地址中除了包括“浙江”、“拱墅”以及“吉如社区”之外,还包括“望花社区”,“望花社区”对应的地址等级为“5”,且“望花社区”对应的地址编码中从省级地址对应的子编码开始即与其余匹配地址不同,因此可以根据“望花社区”确定第二待补全地址,第二待补全地址可以是[
“”

“”

“”

“”
、“望花社区”]。此外,对匹配地址进行地址编码比对之后,可以确定一个或多个第一待补全地址,以及一个或多个第二待补全地址。之后,可以对第一待补全地址和第二待补全地址进行置信度计算,最终确定出待补全地址。计算置信度的方法可以有多种,常用的为第一待补全地址和第二待补全地址后内容空数据次数的逆排序,如果有可能出现位置的编码也会考虑到置信度中。确定待补全地址之后,可以进一步确定待补全地址对应的目标地址编码,具体可以从待补全地址中包括的全部匹配地址对应的地址等级中,找出地址等级最低的匹配地址对应的地址编码,将该地址编码作为目标地址编码。
[0051]
步骤209,确定所述待补全地址中的空地址;基于所述目标地址编码以及所述预设地址字典,确定所述目标地址编码对应的所述目标地址,并基于所述目标地址补全所述待补全地址中的所述空地址。
[0052]
在该实施例中,确定待补全地址后,可以进一步确定待补全地址中的空地址。例如,待补全地址为[“浙江”、
“”
、“拱墅”、
“”
、“吉如社区”],其中市级地址和街道级地址均为空地址。接着,根据目标地址编码从预设地址字典中确定市级地址和街道级地址,在这里,市级地址和街道级地址可以称之为目标地址,进而根据目标地址对待补全地址进行补全,即根据市级地址和街道级地址补全待补全地址中的空地址,从而得到完整地址。具体地,当确定待补全地址中的空地址为市级地址和街道级地址时,首先针对市级地址来说,可以将目标地址编码中市级地址之后的子编码全部变为0,之后根据调整的地址编码找到对应的市级地址,例如目标地址编码为330105101123,想要确定市级地址时,将目标地址编码调整为330100000000,根据调整后的地址编码330100000000从预设地址字典中确定市级地址;想要确定街道级地址时,将目标地址编码调整为330105101000,根据调整后的地址编码330105101000从预设地址字典中确定街道级地址。
[0053]
在本技术实施例中,步骤206中所述“基于所述第一和值提取所述地址片段中包含的所述匹配地址”,具体包括:在所述第二数组中查找所述第一和值位置处对应的数组值,当所述第二数组中所述第一和值位置处的数组值与所述目标位置对应的数值相同时,将所述目标字与所述下一相邻字作为目标字组合,并确定所述第一和值位置处所述第二数组对应的数组值是否为负值;当结果为否时,确定所述目标字组合在所述地址片段中的下一相邻字,当所述下一相邻字属于所述预设目标字时,基于所述目标字组合在所述预设双数组字典树中对应的第一和值位置,确定所述第一和值位置处所述第一数组对应的数组值,计算所述第一和值位置处所述第一数组对应的数组值与所述下一相邻字对应的所述初始值之间的第二和值,在所述第二数组中查找所述第二和值位置处对应的数组值,当所述第二数组中所述第二和值位置处的数组值与所述第一和值相同时,通过所述目标字组合与所述下一相邻字更新所述目标字组合,判断所述第二和值位置处所述第二数组对应的数组值是否为负值,并当结果为否时,返回上述确定所述目标字组合在所述地址片段中的下一相邻字的步骤,直至所述结果为否;当所述结果为是时,将所述目标字组合作为所述匹配地址。
[0054]
在该实施例中,在根据第一和值从地址片段中提取匹配地址时,首先,可以在第二数组中确定第一和值位置处对应的数组值,如果第二数组中第一和值位置处对应的数组值和目标位置对应的数值一致,那么就可以将目标字和该目标字的下一相邻字作为目标字组合。例如,目标字“浙”在预设双数组字典树中对应的目标位置为第五位置,下一相邻字“江”对应的初始值为2,那么第一和值为第五位值处第一数组对应的数组值与初始值2之间的和,假设第五位值处第一数组对应的数组值为4,那么第一和值为(4 2)=6,接着确定第二数组中第一和值位置处(即第六位置处)对应的数组值,如果第二数组中第一和值位置处对应的数组值为5,即check[6]=5,那么根据预设双数组字典树的构建原理(存储时第二数组中某一位置对应的数组值为该位置处对应的预设目标字或预设目标字组合的上级状态对应的位置),说明可以将目标字与下一相邻字作为目标字组合,此目标字组合可能是预设地址,如果第二数组中第一和值位置处对应的数组值不为5,那么说明目标字与下一相邻字的组合并不是预设地址。
[0055]
接着,将目标字和下一相邻字作为目标字组合后,可以确定该目标字组合是否是完整的预设地址。具体地,可以确定第一和值位置处第二数组对应的数组值是不是负值,在构建预设双数组字典树时,如果某一位置对应的目标字或者目标字组合是完整的预设地址,那么该位置处第二数组中的数组值是负值。之后,如果第一和值位置处第二数组对应的数组值不是负值时,那么可以进一步确定目标字组合在地址片段中的下一相邻字,并且再次判断该下一相邻字是不是预设目标字。如果该下一相邻字不是预设目标字,那么说明上述目标字组合并不是预设地址,直接舍弃并结束。如果该下一相邻字是预设目标字,那么可以根据目标字组合在预设双数组字典树中对应的第一和值位置,确定第一和值位置处第一数组对应的数组值,计算第一和值位置处第一数组对应的数组值与下一相邻字对应的初始值之间的第二和值,在第二数组中查找第二和值位置处对应的数组值,当第二数组中第二和值位置处的数组值与第一和值相同时,可以通过目标字组合与下一相邻字更新目标字组合,更新后的目标字组合中为三个字,判断第二和值位置处第二数组对应的数组值是否为负值,并当结果为否时,重新确定目标字组合在地址片段中的下一相邻字,并判断该下一相邻字是否是预设目标字,并当是预设目标字时,计算第三和值
……
直至计算得到的和值位
置处第二数组对应的数组值为负值时结束,将最后的目标字组合输出,作为匹配地址。
[0056]
在本技术实施例中,可选地,步骤208中所述“将任意两个所述匹配地址对应的地址编码进行比对,确定比对结果中存在包含关系的所述匹配地址”,具体包括:当任意两个所述匹配地址对应的所述地址等级不同时,确定所述任意两个所述匹配地址对应的所述地址等级中的较高地址等级,并分别确定所述任意两个所述匹配地址对应的地址编码中所述地址等级不低于所述较高地址等级的子编码,并通过比对确定所述子编码是否相同;当比对结果显示所述子编码相同时,确定所述任意两个所述匹配地址存在所述包含关系。
[0057]
在该实施例中,所述地址编码中包括与所述不同地址等级一一对应的子编码。在确定匹配地址之间是否存在包含关系时,可以将匹配地址对应的地址编码两两进行比对。具体地,如果从匹配地址中选取的两个进行比对的匹配地址对应的地址等级不同,那么说明这两个匹配地址之间可能存在包含关系,如果对应的地址等级相同,那么说明这两个匹配地址之间不可能存在包含关系。当任意选取的两个匹配地址对应的地址等级不同,那么确定哪一地址等级较高,接着可以分别确定这两个匹配地址对应的地址编码中高于以及等于该较高地址等级的地址等级对应的子编码。例如,“浙江”对应的地址编码为330000000000,“拱墅”对应的地址编码为330105000000,“浙江”对应的地址等级为1级,“拱墅”对应的地址等级为3级,所以较高地址等级为1级,针对“浙江”这一匹配地址对应的地址编码,从中确定地址等级不低于较高地址等级的子编码,即为地址编码中第1~2位(省级地址)对应的子编码,为33,针对“拱墅”这一匹配地址对应的地址编码,从中确定地址等级不低于较高地址等级的子编码,即为地址编码中第1~2位(省级地址)对应的子编码同样也为33,因此可以确定“浙江”和“拱墅”这两个匹配地址存在包含关系。又例如,“吉如社区”对应的地址编码为330105101123,祥符街道对应的地址编码为330105101000,“吉如社区”对应的地址等级为5级,“祥符街道”对应的地址等级为4级,所以较高地址等级为4级,针对“吉如社区”这一匹配地址对应的地址编码,从中确定地址等级不低于较高地址等级的子编码,即为地址编码中第1~9位(省级地址对应的子编码、市级地址对应的子编码、区级地址对应的子编码、街道级地址对应的子编码),为330105101,针对“祥符街道”这一匹配地址对应的地址编码,从中确定地址等级不低于较高地址等级的子编码,同样为地址编码中第1~9位(省级地址对应的子编码、市级地址对应的子编码、区级地址对应的子编码、街道级地址对应的子编码),同样为330105101,因此可以确定“吉如社区”和“祥符街道”这两个匹配地址存在包含关系。再例如,“吉如社区”对应的地址编码为330105101123,长宁街道对应的地址编码为310101101000,“吉如社区”对应的地址等级为5级,“长宁街道”对应的地址等级为4级,所以较高地址等级为4级,针对“吉如社区”这一匹配地址对应的地址编码,从中确定地址等级不低于较高地址等级的子编码,即为地址编码中第1~9位(省级地址对应的子编码、市级地址对应的子编码、区级地址对应的子编码、街道级地址对应的子编码),为330105101,针对“长宁街道”这一匹配地址对应的地址编码,从中确定地址等级不低于较高地址等级的子编码,同样为地址编码中第1~9位(省级地址对应的子编码、市级地址对应的子编码、区级地址对应的子编码、街道级地址对应的子编码),为310101101,这两个子编码不同,因此可以确定“吉如社区”和“长宁街道”这两个匹配地址不存在包含关系。
[0058]
进一步的,作为图1方法的具体实现,本技术实施例提供了一种基于双数组的地址补全装置,如图7所示,该装置包括:
[0059]
地址提取模块,用于获取地址片段,将所述地址片段输入至预设双数组字典树中,基于所述预设双数组字典树中包括的预设地址提取所述地址片段中包含的匹配地址,其中,所述预设双数组字典树中包括至少一种地址等级的所述预设地址,所述地址等级包括省级、市级、区级、街道级以及社区级;
[0060]
待补全地址确定模块,用于依据预设地址字典,确定每个所述匹配地址对应的地址编码以及所述地址等级,基于每个所述匹配地址对应的所述地址编码以及所述地址等级,确定待补全地址,以及与所述待补全地址对应的目标地址编码,其中,所述预设地址字典中包括所述预设地址、与任一所述预设地址对应的所述地址编码以及所述地址等级;
[0061]
地址补全模块,用于基于所述目标地址编码以及所述预设地址字典,补全所述待补全地址。
[0062]
可选地,所述装置还包括:
[0063]
去重模块,用于所述获取地址片段之前,从所述预设地址字典中获取全部所述预设地址,将所述预设地址中包括的字进行去重处理,得到预设目标字,并为每个所述预设目标字设置初始值;
[0064]
字典树构建模块,用于基于每个所述预设目标字对应的所述初始值以及所述预设地址,构建所述预设双数组字典树,其中,所述预设双数组字典树包括第一数组以及第二数组,所述第二数组中任一位置对应的数组值用于指示所述任一位置对应的预设目标字或者预设目标字组合的上级状态对应的位置。
[0065]
可选地,所述地址提取模块,具体包括:
[0066]
输入单元,用于将所述地址片段输入至所述预设双数组字典树中,从所述预设目标字中确定所述地址片段中包含的目标字;
[0067]
判断单元,用于在所述地址片段中确定任一所述目标字的位置,并确定所述目标字的下一相邻字,判断所述下一相邻字是否属于所述预设目标字;
[0068]
计算单元,用于当所述下一相邻字属于所述预设目标字时,基于所述目标字在所述预设双数组字典树中对应的目标位置,确定所述目标位置处所述第一数组对应的数组值,计算所述目标位置处所述第一数组对应的数组值与所述下一相邻字对应的所述初始值之间的第一和值,并基于所述第一和值提取所述地址片段中包含的所述匹配地址;
[0069]
匹配地址确定单元,用于当所述下一相邻字不属于所述预设目标字时,基于所述目标字在所述预设双数组字典树中对应的所述目标位置,确定所述目标位置处所述第二数组对应的数组值是否为负值,并当结果为是时,将所述目标字作为所述匹配地址。
[0070]
所述计算单元,具体用于:
[0071]
在所述第二数组中查找所述第一和值位置处对应的数组值,当所述第二数组中所述第一和值位置处的数组值与所述目标位置对应的数值相同时,将所述目标字与所述下一相邻字作为目标字组合,并确定所述第一和值位置处所述第二数组对应的数组值是否为负值;当结果为否时,确定所述目标字组合在所述地址片段中的下一相邻字,当所述下一相邻字属于所述预设目标字时,基于所述目标字组合在所述预设双数组字典树中对应的第一和值位置,确定所述第一和值位置处所述第一数组对应的数组值,计算所述第一和值位置处所述第一数组对应的数组值与所述下一相邻字对应的所述初始值之间的第二和值,在所述第二数组中查找所述第二和值位置处对应的数组值,当所述第二数组中所述第二和值位置
处的数组值与所述第一和值相同时,通过所述目标字组合与所述下一相邻字更新所述目标字组合,判断所述第二和值位置处所述第二数组对应的数组值是否为负值,并当结果为否时,返回上述确定所述目标字组合在所述地址片段中的下一相邻字的步骤,直至所述结果为否;当所述结果为是时,将所述目标字组合作为所述匹配地址。
[0072]
可选地,所述装置还包括:
[0073]
地址信息获取模块,用于所述依据预设地址字典,确定每个所述匹配地址对应的地址编码以及所述地址等级之前,获取地址信息,其中,所述地址信息包括所述预设地址、所述地址等级以及所述地址编码;
[0074]
地址更新模块,用于基于所述预设地址,确定每个所述预设地址对应的同义地址,基于所述同义地址对所述预设地址进行更新,得到更新后的预设地址,并基于所述更新后的预设地址,以及与每个所述更新后的预设地址对应的所述地址等级以及所述地址编码,构建所述预设地址字典。
[0075]
可选地,所述待补全地址确定模块,具体包括:
[0076]
第一单元,用于将任意两个所述匹配地址对应的地址编码进行比对,确定比对结果中存在包含关系的所述匹配地址,将比对结果显示存在包含关系的所述匹配地址按照所述地址等级从高至低进行排序,得到第一待补全地址;
[0077]
第二单元,用于基于不存在所述包含关系的所述匹配地址,确定第二待补全地址;
[0078]
待补全地址确定单元,用于对所述第一待补全地址以及所述第二待补全地址进行置信度计算,确定所述待补全地址,并将所述待补全地址中所述地址等级最低的所述匹配地址对应的所述地址编码作为所述目标地址编码。
[0079]
可选地,所述地址编码中包括与所述不同地址等级一一对应的子编码;所述第一单元,具体用于:
[0080]
当任意两个所述匹配地址对应的所述地址等级不同时,确定所述任意两个所述匹配地址对应的所述地址等级中的较高地址等级,并分别确定所述任意两个所述匹配地址对应的地址编码中所述地址等级不低于所述较高地址等级的子编码,并通过比对确定所述子编码是否相同;当比对结果显示所述子编码相同时,确定所述任意两个所述匹配地址存在所述包含关系。
[0081]
可选地,所述地址补全模块,具体用于:
[0082]
确定所述待补全地址中的空地址;基于所述目标地址编码以及所述预设地址字典,确定所述目标地址编码对应的所述目标地址,并基于所述目标地址补全所述待补全地址中的所述空地址。
[0083]
需要说明的是,本技术实施例提供的一种基于双数组的地址补全装置所涉及各功能单元的其他相应描述,可以参考图1方法中的对应描述,在此不再赘述。
[0084]
基于上述如图1所示方法,相应的,本技术实施例还提供了一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述如图1所示的基于双数组的地址补全方法。
[0085]
基于这样的理解,本技术的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个
实施场景所述的方法。
[0086]
基于上述如图1所示的方法,以及图7所示的虚拟装置实施例,为了实现上述目的,本技术实施例还提供了一种计算机设备,具体可以为个人计算机、服务器、网络设备等,该计算机设备包括存储介质和处理器;存储介质,用于存储计算机程序;处理器,用于执行计算机程序以实现上述如图1所示的基于双数组的地址补全方法。
[0087]
可选地,该计算机设备还可以包括用户接口、网络接口、摄像头、射频(radio frequency,rf)电路,传感器、音频电路、wi-fi模块等等。用户接口可以包括显示屏(display)、输入单元比如键盘(keyboard)等,可选用户接口还可以包括usb接口、读卡器接口等。网络接口可选的可以包括标准的有线接口、无线接口(如蓝牙接口、wi-fi接口)等。
[0088]
本领域技术人员可以理解,本实施例提供的一种计算机设备结构并不构成对该计算机设备的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0089]
存储介质中还可以包括操作系统、网络通信模块。操作系统是管理和保存计算机设备硬件和软件资源的程序,支持信息处理程序以及其它软件和/或程序的运行。网络通信模块用于实现存储介质内部各组件之间的通信,以及与该实体设备中其它硬件和软件之间通信。
[0090]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本技术可以借助软件加必要的通用硬件平台的方式来实现,也可以通过硬件实现。首先,可以获取地址片段,接着,可以将获取的地址片段输入到预设双数组字典树中,通过预设双数组字典树中包括的预设地址可以从地址片段中提取出包含的匹配地址。在这里,预设双数组字典树是预先构建的,预设双数组字典树中可以包括一种或者几种不同地址等级的预设地址,这里的地址等级可以是省级、市级,也可以是区级、街道级以及社区级。进一步以预设地址字典为基础,从预设地址字典中找到每个匹配地址对应的地址编码,还可以确定每个匹配地址对应的地址等级。在这里,预设地址字典中可以包括各个地址等级的预设地址,还可以包括每个预设地址对应的地址编码以及地址等级。确定每个匹配地址对应的地址编码和地址等级后,可以根据这些匹配地址对应的地址编码和地址等级确定与地址片段对应的待补全地址。此外,还可以确定与待补全地址相对应的目标地址编码。确定待补全地址和目标地址编码后,可以根据目标地址编码和预设地址字典,对待补全地址中的空地址进行补全。本技术实施例根据预设双数组字典树从地址片段中提取匹配地址,可以有效提升地址信息的提取效率以及提取准确率,提高地址补全的速度。
[0091]
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本技术所必须的。本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
[0092]
上述本技术序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本技术的几个具体实施场景,但是,本技术并非局限于此,任何本领域的技术人员能思之的变化都应落入本技术的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献