掌桥专利:专业的专利平台
掌桥专利
首页

一种加快非结构化企业地址转换为经纬度的方法

文献发布时间:2023-06-19 11:22:42



技术领域

本发明涉及数据处理技术领域,尤其涉及一种加快非结构化企业地址转换为经纬度的方法。

背景技术

现今部门中存储着大量与企业地址有关的信息,例如市场监管部门中存储的企业注册地址、经营地址等信息。这些企业地址信息基本上是非结构化、非空间化的数据,以字符串的形式存储在数据库中。某些情况下,需要将这些非结构化的企业地址数据转换为空间化的地址数据,如转换为经纬度地理数据,供后续进行分析或在GIS展现。

目前,地址经纬度转换的方法一般是批量获取非结构化地址数据,以此为参数请求地图供应商的地理编码API,从而得到对应的空间化经纬度数据。但是地图供应商提供的API通常会限制每日的最大调用量和每秒并发量,因此降低了转换的效率。其次,将地址库每个地址都作为参数请求地理编码API,而不注意这些地址之间存在的共性,也会造成地图供应商资源浪费,因此在精度损失可以接受的前提下,制定算法充分分析利用地址间的共性,从而减少调用地理编码API的次数,是可以有效提高转换效率的。

综上,目前使用的方法难以在短时间内将大量非结构化地址转换为空间化经纬度数据,存在流程和技术手段上的优化空间。

发明内容

为了解决以上技术问题,本发明提供了一种加快非结构化企业地址转换为经纬度的方法。

针对企业注册地址、经营地址等某些方面具有聚集性特质(大部分企业会选择在写字楼、工业区进行办公)的地址数据,在保证一定程度的精确度的前提下,为了快速将大量以字符串形式存储的非结构化地址数据转换成空间化经纬度数据,并尽可能减少资源占用、API调用次数等,使用地址分词、结构化重组、缓存等手段进行处理。

一种加快非结构化企业地址转换为经纬度的方法,使用地址数据训练后的分词器、地址组合规则和城市地址字典三项手段,对地址A进行分词,形成原始地址要素数组B;利用空间化数据的特点,剔除地址要素数组中不影响最终精度的部分,得到简化的地址要素数组C;建立多叉树T,按照地址要素分层结构存储地址转换结果,供后续地址转换查询利用。

具体包括如下步骤:

(1)使用特化的分词工具以及先验知识对企业地址进行分词;

(2)对分词后的企业地址数据进行结构化重组,剔除对转换精度影响较少的部分;

(3)对重组后的企业地址数据进行空间化经纬度转换;

(4)对转换后的数据,针对分词后的企业地址和空间化经纬度转换结果,形成一棵多叉树,供第三步的转换工作检索使用。

通过上述步骤,比起将企业地址库中每一条企业地址数据都直接进行空间化经纬度转换,上述方法利用了部分企业地址在前半段相同,仅在楼层数、房间号不同的特质,从而舍弃不影响空间化经纬度转换精确度的部分,总体上减少了大量企业地址进行空间化经纬度转换的时间和资源占用

进一步的,

建立一棵多叉树,缓存已经解析过的非结构化地址数据,并提供已转换的地址数据的快速检索功能;内节点为地址分词结果的各部分,叶节点为结构化数据;地址通过分词工具和先验知识分割为一个以上的部分;

其中,多叉树的根节点作为查询搜索的起始点,并不会存放信息,是一个空节点;而多叉树的内节点则存储着地址分词结果的每一部分,同一高度内,节点间按拼音音序从小到大排列。

最后,叶子结点存储着一个空间化的经纬度数据,表示从根节点进行深度优先搜索到此叶子结点过程中遍历到的地址分词部分组合成的非结构化地址数据对应的空间化经纬度数据。

进一步的,

遍历地址库,使用特化的分词工具和先验知识对非结构化地址进行分词;

在进行地址的空间化转换前,首先需要对非结构化地址进行分词处理;

针对地址的中文分词器需要使用地址进行训练,以提高其针对地址的分词准确性;其次,使用关于地址的先验知识对分词结果进行验证和再处理;

这些先验知识包括地址的组合规则和城市地址词典;

对于一个地址,省下一部分为市,市下一部分为区或县,区县下一部分为镇、街道等,根据这一规则,对分词结果的一部分在城市地址字典中的对应层级进行完整匹配,若成功匹配,进行下一部分的验证,否则,使用该部分及后续所有部分作为参数,在城市地址字典中进行正向最大匹配,即让地址数据按照正向递减的遍历规则依次与词典中词条进行匹配,保留最大长度;匹配成功后,剩余部分继续递归进行分词、校验和匹配流程,直至整个地址分割为每个均已进行校验的部分,或者城市地址字典无对应层级。

进一步的,

所述剔除分词结果中不影响最终精度的部分。

将企业地址分割为若干个可供验证的部分,并注意到分词结果的最后存在表示层数或园区具体位置的部分或地址的前半部分相同,仅在层数、房间号、园区具体位置不同,可以对这些部分进行剔除。

进一步的,

使用处理后的分词结果在多叉树中查找对应的空间化数据;根据得出的地址分词结果,在第一步中建立的多叉树中搜索已有的转换结果;

若该过程中某一个分词部分无法搜索到,表明这个分词结果对应的地址尚未进行空间化经纬度转换。

进一步的,

使用处理后的分词结果在地理编码API中进行空间化经纬度转换;经过处理的结果作为一连串的地址位置要素的组合,需要重新连接成一个非结构化的地址字符串,并进行实际的空间化转换。相比于第二步处理前的原地址,新连接的地址被剔除了不影响最终转换精度的部分。

进一步的,

将地理编码API的转换结果插入多叉树中对应分词结果的叶节点;通过得到空间化地址数据后,将其组合成“地址要素数组-空间化数据”的键值对;对于键“地址要素数组”,将其中每个部分按照从左到右的顺序插入第一步生成的多叉树中,若已存在对应节点,则处理下一个部分。

本发明的有益效果是

本发明通过分词处理、剔除不影响最终精度的地址要素、缓存转换结果等手段,针对企业地址这类在某些方面具有高度聚集性特质的地址,一个具体地点的地址只需要进行一次空间化经纬度转换并缓存结果,其后同样适用该地点的企业地址则可以直接使用该缓存结果,从而降低了实际进行地址转换操作的地址数量,进一步减少相关资源的使用。最终可以有效地满足短时间内使用有限的资源将大批量的非结构化地址数据转换为空间化经纬度数据的需求。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明采用的技术方案详述如下:

(一)建立一棵多叉树,内节点为地址分词结果的各部分,叶节点为结构化数据。在下述的步骤中,地址会通过分词工具和先验知识分割为多个部分,例如,“GD省SZ市福田区福田街道福安社区民田路178号HR大厦102”这个地址,将会分割为“GD省|SZ市|福田区|福田街道|福安社区|民田路|178号|HR大厦|102”这九个部分。其中,多叉树的根节点作为查询搜索的起始点,并不会存放信息,是一个空节点。而多叉树的内节点则存储着地址分词结果的每一部分,同一高度内,节点间按拼音音序从小到大排列。最后,叶子结点存储着一个空间化的经纬度数据,表示从根节点进行深度优先搜索到此叶子结点过程中遍历到的地址分词部分组合成的非结构化地址数据对应的空间化经纬度数据。这颗多叉树的作用是缓存已经解析过的非结构化地址数据,并提供已转换的地址数据的快速检索功能。

(二)遍历地址库,使用特化的分词工具和先验知识对非结构化地址进行分词。在进行地址的空间化转换前,首先需要对非结构化地址进行分词处理。由于地址分词与一般的中文语句分词不同,许多在中文语义上视为两个词组的部分,实际上应视为一个完整的地址要素。例如,“南山区工业七路”这个地址,地址要素的正确划分是“南山区|工业七路”,但在一般的中文分词中,容易被划分为“南山区|工业|七路”。究其原因,地址的分词主要是依据地名和地标建筑,是依据“省”、“市”、“区”、“街道”、“社区”、“路”等一系列的特有词汇,而非普遍意义上的中文词组。因此,针对地址的中文分词器需要使用大量地址进行训练,以提高其针对地址的分词准确性。其次,使用分词工具进行处理,难免会出现疏漏和错误。为应对这些错误,需要使用关于地址的先验知识对分词结果进行验证和再处理。这些先验知识包括地址的组合规则和城市地址词典。对于一个地址,省下一部分为市,市下一部分为区或县,区县下一部分为镇、街道等,根据这一规则,对分词结果的某一部分在城市地址字典中的对应层级进行完整匹配,若成功匹配,进行下一部分的验证,否则,使用该部分及后续所有部分作为参数,在城市地址字典中进行正向最大匹配,即让地址数据按照正向递减的遍历规则依次与词典中词条进行匹配,尽可能保留最大长度。匹配成功后,剩余部分继续递归进行分词、校验和匹配流程,直至整个地址分割为每个均已进行校验的部分,或者城市地址字典无对应层级。例如,“南山区|工业|七路|132号|2 层|102”作为分词器的输出结果,“南山区”可在地址字典中完整匹配,但“工业”无法在南山区下一层级的地址字典中完整匹配,那么,“工业七路132号2 层102”作为输入参数,在南山区下一层级的地址字典中进行正向最大匹配,最终匹配到“工业七路”,剩余的“132号2层102”则重新进行分词,得到“132号|2层|102”。然后“132号”完成验证匹配后,“号”的下一层级不在城市地址字典中,“2层102”作为最后部分,整个地址分词过程完成。

(三)剔除分词结果中不影响最终精度的部分。通过上述步骤后,已经将企业地址分割为若干个可供验证的部分,并注意到分词结果的最后存在“2层102”、“3栋405”等表示层数或园区具体位置的部分。视具体使用场景,例如企业经营地址的转换,大量地址的前半部分相同,位于某一个写字楼或某个工业园,仅在层数、房间号、园区具体位置不同,在保证结果在一定精度范围内的前提下,可以对这些部分进行剔除,从而减少大量实际的地址转换操作和相关资源占用。

(四)使用处理后的分词结果在多叉树中查找对应的空间化数据。根据第二步和第三步得出的地址分词结果,在第一步中建立的多叉树中搜索已有的转换结果。例如,对于地址“GD省SZ市福田区福田街道福安社区民田路178号HR大厦 102”,最终得到“GD省|SZ市|福田区|福田街道|福安社区|民田路|178号”的分词结果,那么在多叉树中进行深度优先搜索直到查询到“178号”这个内节点,那么它的唯一的子节点就存储着该地址的空间化经纬度数据,对于该地址的空间化经纬度转换已经完成。若该过程中某一个分词部分无法搜索到,表明这个分词结果对应的地址尚未进行空间化经纬度转换,需要进行第五步。

(五)使用处理后的分词结果在地理编码API中进行空间化经纬度转换。经过第二步和第三步处理的结果作为一连串的地址位置要素的组合,需要重新连接成一个非结构化的地址字符串,并进行实际的空间化转换。相比于第二步处理前的原地址,新连接的地址被剔除了不影响最终转换精度的部分。关于使用何种地理编码API及如何使用,不在本方法涉及范围内。

(六)将地理编码API的转换结果插入多叉树中对应分词结果的叶节点。通过第(五)步得到空间化地址数据后,可以将其组合成“地址要素数组-空间化数据”的键值对。对于键“地址要素数组”,可以将其中每个部分按照从左到右的顺序插入第一步生成的多叉树中,若已存在对应节点,则处理下一个部分。例如,对“GD省|SZ市|福田区|福田街道|福安社区|民田路|178号-(114.053558, 22.537898)”这个键值对,“GD省”为多叉树根节点的子节点,“SZ市”为“广东省”的子节点,以此类推,“178号”为“民田路”的子节点,而“178号”的子节点,则为最终存储空间化地址数据(114.053558,22.537898)的叶子结点。

(七)重复上述步骤直至全部非结构化地址转换完成。

以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

相关技术
  • 一种加快非结构化企业地址转换为经纬度的方法
  • 一种大型企业非结构化平台的性能优化方法
技术分类

06120112900354