Bert+GRU地址归一算法

一、 算法简介

本地址归一算法(已经下简称算法)旨在对输入文本中出现的地址信息或一般地址信息做地址结构化抽取,并输出该地址映射到数据库中的标准化地址。

二、算法模块

算法由以下不同模块共同组成,各模块在算法的各个生命周期起到重要作用:

1、建立原始地址库

使用postgres数据库(以下简pg)创建存储全国各级原始地址的原始地址库。通过网络爬虫不断采集和更新地址数据(主要来源为高德地图),并存储到原始地址库,地址库包括地址的名称信息、poi信息、类别信息、经纬度信息等原始内容,为后续工作的开展做数据支撑。

2、文本地址抽取

使用UIE(Universal Information Extraction)框架,结合ERNIE3.0模型,使模型具备从无结构或半结构的文本中抽取地址信息的能力。

3、地址分级算法

i)分级标准

首先需要确定一套地址的分级标准细节,本算法采用的分级标准基于阿里《文地址要素解析标注规范》,并做一定程度范围的修改,将地址分为18个不同级别:

① Prov:省级行政区划,省、自治区、直辖市

② City:地级行政区划,地级市、地区、自治州等

③ District:县级行政区划,市辖区、县级市、县等

④ Devzone:广义的上的开发区,包含一般性产业 园区、度假区

⑤ Town:乡级行政区划,镇、街道、乡等

⑥ Community:包含社区、行政村(生产大队、村委会),自然村

⑦ Village Group:限定 xx 组、xx 队、xx 社

⑧ Road:有正式名称的道路,包括隧道、高架、街、弄、巷等。 步行街、商业街

⑨ Roadno:路牌号

⑩ Poi:目标兴趣点

⑪ Subpoi:目标兴趣点的子兴趣点

⑫ Houseno:楼栋号,农村地址的门牌号(包括类似南楼、北楼一类的描述)

⑬ Cellno:单元号,包括甲乙丙丁等

⑭ Floorno:楼层号

⑮ Roomno:房间号

⑯ Assist:定位词,包括方位、解释性名词

⑰ Intersection:路桥交叉口、交汇处、十字路口等

⑱ Distance:距离

ii)算法细节

从爬虫获取的原始地址库构建地址结构化数据集,并对数据集划分为训练集和验证集进行数据标注。标注方式采用B-I-E-O-S五位序列标注法,该标注法将尽可能的保留被标注地址的分级信息。

构建地址分级模型。使用基于多头注意力机制Transformers架构的BERT大模型作为预训练模型,并将模型结合CRF、GRU算法。CRF:全称为条件随机场(Conditional Random Fields),结合了最大熵模型和隐马尔可夫模型的特点,是一种无向图模型。它在序列标注任务如分词、词性标注和命名实体识别等方面取得了很好的效果;GRU:全称为门控循环单元(Gated Recurrent Unit),是一种常用于序列数据建模的神经网络模型,能够很好解决BERT循环神经网络中的长期依赖问题,捕获序列中的长期特征,避免训练过程中的梯度消失和梯度爆炸,使完成的模型结构具有更优秀的泛化能力、更好地拟合真实地址数据。

4、建立标准地址库

使用pg数据库建立标准地址库,地址库将包括地址的原始id、名称信息、poi信息、类别信息、经纬度信息以及18级分级信息。

通过上一步骤训练好地址分级模型,并封装进数据计算中心,使用GPU并发计算原始地址库的数据,并将结果输出保存进标准地址库。

5、地址排序算法

主要是基于希尔排序算法思想将模块二抽取到的地址信息进行排列组合,去除噪声、过滤冗余结构,最后拟合得到数据库中最接近当前地址信息的查询条件。

6、建立地址分级匹配系统(检索)

通过pg数据库的高效检索功能,实现对地址数据的实时结构化查询和数据推送,实现算法完整功能。

三、接口服务

算法目前可提供5类接口:

1、文本地址自动归一接口:提取文本中的所有地址,并标准化;

2、地址检索接口:自动拆分、检索相关地址;

3、地址提取接口:仅提取文本中所有地址,不做标准化处理;

4、地点检索接口:检索相关地点的标准地址;

5、地址分级接口:对输入地址进行层级划分。

四、模型更新 & 数据运维

当前版本模型的更新包括分级模型的更新(再训练)和排序算法的更新。数据的维护主要从三个方面进行:

1、爬虫脚本的定期维护,更新原始地址pg数据库;

2、维持标准地址库的数据计算中心与爬虫同步运转;

3、对标准地址库中的错误信息做提取,添加进训练集。

五、机器配置

算法和模型的各个模块使用python语言编写,在linux服务器上进行训练和测试,并使用基于NVIDIA CUDA生态的Torch框架进行科学计算。

目前满足模型各功能正常快速运转占用的显存理论上不低于5GB,显卡显存不低于8GB。

六、问题

目前模型版本可能存在的问题:

1、B-I-E-O-S序列标注法数据标注过程复杂,且对数据集的精度要求较高;

2、部分复杂结构地址样本暂不充足;

3、爬虫模块需要账号支撑正常运行,爬虫目前递归算法(DFS),可能存在遗漏情况;

4、全国地址更新较为频繁,需要从爬虫和数据计算中心两个层面分别解决数据更新的问题;

5、目前使用pg模糊检索不支持字段索引,随数据量指数上升可能存在性能瓶颈,暂未验证。

Powered by Hexo and Hexo-theme-hiker

Copyright © 2017 - 2024 青域 All Rights Reserved.

UV : | PV :