中文地址识别系统的制作方法

文档序号:16329948发布日期:2018-12-19 06:08阅读:324来源:国知局
中文地址识别系统的制作方法

本发明涉及一种中文地址识别系统。

背景技术

在地理信息系统中,地理编码技术有着广泛的应用。地理编码过程中,最核心的是地址匹配技术,地址匹配技术的好坏,直接影响到地理编码的准确性和效率。全文索引、中文分词、分级别匹配和模糊地址匹配是目前常用的地址匹配算法。陈细谦等尝试在地址标准化过程中通过错误总结和使用有限状态机实现地址的规范化,由于错误类型的复杂性,使得实际中总匹配率只有50%左右;孙亚夫等提出利用最大正向匹配算法在进行分词的同时查询判断地址要素,但地址匹配过分依赖词库,对于未登记的地址和包含干扰词的地址匹配率较低;孙存群等提出分级地址库模型,减少了维护分词的步骤,简化了实现流程,林澍哲提出分词和地址加权的匹配模型,减少了数据冗余,提高了匹配兼容性,但由于两者过分依赖数据库查询,性能不高;张作华等尝试先进行地址分词再按照不同公式进行数据库查询来减少查询次数,由于地址级别的复杂性,地址到公式的转换仍然是个比较困难的问题;程昌秀等用基于规则的模糊中文分词进行地址匹配,由于地址级别的跳跃不规律,规则很难做到通用。以上研究提出了很多地址匹配方法,但由于地址命名多样化,地址级别跳跃不规律,干扰词普遍存在,地址匹配还是存在着一些问题,同时由于地址匹配系统数据量庞大,系统的匹配性能低下也是亟须解决的问题。



技术实现要素:

本发明的目的在于提供一种中文地址识别系统,以克服现有技术中存在的缺陷。

为实现上述目的,本发明的技术方案是:一种中文地址识别系统,包括:

数据预处理模块;将源地址数据输入后进行预处理,并粗分成词;

地址标准化模块;对于行政区域地址数据,利用trie树结构寻找标准的前4级地址特征,得到相应行政区域包含的分级标注地址;对于非标准库内的地址数据,使用基于正则匹配的地址分级识别方法,进行关键字提取;使用有限状态自动机按照地址标注等级的跳转规则验证提取后地址的有效性;

地址清洗模块;地址清洗模块包括地址补全和地址去重;所述地址补全采用基于相似地址的相应部分进行补全,实现详细地址规范化;所述地址去重对同一人的多个地址进行去重,保留不同的地址以及统计每条地址的使用次数;

关系构建模块;关系构建模块包括地址标签识别与人群关系构建;所述地址标签识别将地址通过一api获取其地址标签并存入数据库;所述人群关系构建依据地址标签与人群关系的映射表确定人群关系;地址标签及人群关系构建的结果均存入数据库;

地址管理模块;地址管理模块包括地址模型管理和地址库管理;地址模型管理对trie树模型创建、存储、导入以及查询;地址库管理模块对mongodb数据库的插入、查询、修改和删除。

在本发明一实施例中,所述数据预处理模块对输入的邮递源地址数据进行去除噪声地址、去除地址中的特殊符号处理,排除无效或是不可识别的地址,然后再由hanlp切词工具将余下的有效地址粗分成词。

在本发明一实施例中,所述地址标准化模块通过trie树结构与正则匹配方式对有效地址进行十级地址标准化处理,包括:前四级的标准行政地址的标准化和后六级的详细地址的标准化;通过对标准的四级地址分词构建trie树,输出trie树模型并保存到数据库中;对于输入的待分级识别的样本数据,通过分词再导入tire树模型进行模糊匹配识别出前四级的标准行政地址,而后再导入有限状态自动机进行正则匹配出后六级的详细地址,最后合并输出地址的十级标注。

在本发明一实施例中,所述前四级的标准行政地址利用识别搜索算法在trie树中进行识别,所述识别搜索算法按照如下步骤实现:

步骤s1:输入分词后的样本数据地址段;

步骤s2:根节点放入队列;

步骤s3:判断当前队列是否为空;若不为空,转步骤s4;否则转步骤s10;

步骤s4:取出队首元素,并判断其是否有子节点;若有,转步骤s5;否则转步骤s3;

步骤s5:遍历一个子节点,判断子节点的值是否与当前地址段匹配;若匹配,转步骤s6;否则,转步骤s7;

步骤s6:判断当前是否是第一个地址段,并且与之匹配上的是第三级或第四级的地址,若是,将该节点存入一个list中,转步骤s7,否则,转步骤s8;

步骤s7:将当前节点的所有子节点放入队列中,转步骤s9;

步骤s8:判断上一步是否匹配到多个结果,并且与之匹配到的是第四级地址;若是,更新list,转步骤s9;否则,清空当前队列,再将当前节点加入队列,转步骤s3;

步骤s9:判断当前元素是否为最后一个子节点;若是,转步骤s3;否则,转步骤s5;

步骤s10:从list中找出地址级别最大的节点,依次向上找出其父节点,得到匹配完的前四级结果;

步骤s11:判断以上结果中是否包含null,并且剩余地址段是否存在前四级地址;若是,转s12,否则输出结果;

步骤s12:将剩余地址再次进行树匹配,将再次匹配的结果与原结果进行比较;若再次匹配得到的结果包含了原结果,那么更新这个结果,并输出。

在本发明一实施例中,所述后六级利用所述有限状态自动机的状态转移规则对地址信息逐层进行正则匹配,得到相应级层地址的地址要素;识别前四级地址后,余下的地址作为初始状态导入有限状态自动机进行后六级正则匹配;当符合路级别的提取规则时,由初始状态转向状态1,状态1匹配到符合路号级别的提取规则时转向状态2,状态2匹配到符合楼号级别的提取规则时转向状态3,状态3匹配到符合单元号级别的提取规则时转向状态4,状态4匹配到符合户号级别的提取规则时转向状态5;无法满足剩余状态提取规则的地址内容作为备注级内容转向状态6,最后转向结束状态,实现后六级的详细地址的识别。

在本发明一实施例中,所述地址补全通过采用基于snm算法补全窗口内的不完整地址。

相较于现有技术,本发明具有以下有益效果:本发明通过结合trie树与有限自动机能有效提高中文地址标准化分级的准确率,对于庞大的地址数据有较快的处理速率,对于相似地址的智能识别也有较高的准确率,并能根据地址信息获取人群关系。

附图说明

图1(a)为本发明中构建trie树模型流程图。

图1(b)为本发明地址标准化流程图。

图2为本发明前四级地址识别算法流程图。

图3为本发明有限状态自动机状态转移结构示例流程图。

图4为本发明地址清洗流程图。

图5为本发明地址标签获取流程图。

图6为本发明人群关系构建流程图。

图7为本发明中文地址识别系统的软件架构图。

具体实施方式

下面结合附图,对本发明的技术方案进行具体说明。

本发明提供一种中文地址识别系统。该系统采用基于tire树和有限状态自动机的地址解析模型,结合最长公共子序列算法的模糊匹配方法以及地址数据库管理实现对中文地址的层级识别。实验结果表明该系统能实现对邮递地址的分级识别,并根据地址信息构建人群间的关系。如图7所示,该系统包括以下5个模块:

(1)数据预处理模块:将源地址数据输入后进行去除噪声地址、去除地址中的特殊符号等工作后,由hanlp切词工具粗分成词。

(2)地址标准化模块:对于行政区域地址数据,利用trie树结构来寻找标准的前4级地址特征,得到相应行政区域包含的分级标注地址。对于非标准库内的地址数据,使用基于正则匹配的地址分级识别方法,即使用路、路号、街等关键字进行提取;随后,使用有限状态自动机按照地址标注等级的跳转规则来验证提取后地址的有效性。

(3)地址清洗模块:地址清洗包括地址补全和地址去重两个步骤。地址补全,对于每一条不完整的十级地址的缺失部分,尽可能地利用其相似地址的相应部分进行补全,实现将绝大部分的详细地址规范化;地址去重指对同一人的多个地址进行去重,保留不同的地址以及统计每条地址的使用次数。

(4)关系构建模块:关系构建模块分为地址标签识别与人群关系构建两个步骤。标签识别实现将地址通过百度api获取其地址标签并存入数据库的功能;人群关系构建实现依据地址标签与人群关系的映射表来确定人群关系的功能。地址标签及关系构建的结果均存入数据库。

(5)地址管理模块:地址管理模块主要包括地址模型管理和地址库管理两部分。地址模型管理实现对trie树模型的创建、存储、导入以及查询功能;地址库管理模块主要实现对mongodb数据库的插入、查询、修改和删除。

进一步的,数据预处理模块在输入的邮递源地址数据中去除噪声地址、去除地址中的特殊符号等工作,排除无效或是不可识别的地址,然后再由hanlp切词工具将余下的有效地址粗分成词。

进一步的,地址标准化模块通过trie树与正则匹配方式对有效地址进行十级地址标准化处理,包括前四级的标准行政地址的标准化和后六级详细地址的标准化。具体流程图如1(a)和1(b)所示。

十级地址标准化首先通过对标准的四级地址分词构建trie树,输出trie树模型并保存到数据库中。对于输入的待分级识别的样本数据,通过分词再导入tire树模型进行模糊匹配识别出前四级的标准地址,而后再导入有限状态自动机进行正则匹配出后六级的地址,最后合并输出地址的十级标注。

进一步的,前四级地址利用搜索算法在trie树中进行识别,具体流程如图2所示:

从图中可以看出识别算法的流程:

(1)输入分词后的样本数据地址段。

(2)根节点放入队列。

(3)判断当前队列是否为空,若不为空,转(4),否则转(10)。

(4)取出队首元素,并判断其是否有子节点,若有,转(5),否则转(3)。

(5)遍历一个子节点,判断子节点的值是否与当前地址段匹配(模糊匹配),若匹配,转(6),否则,转(7)。

(6)判断当前是否是第一个地址段,并且与之匹配上的是第三级或第四级的地址,若是,将该节点存入一个list中,转(7),否则,转(8)。

(7)将当前节点的所有子节点放入队列中,转(9)。

(8)判断上一步是否匹配到多个结果,并且与之匹配到的是第四级地址,若是,更新list,转(9),否则,清空当前队列,再将当前节点加入队列,转(3)。

(9)判断当前元素是否为最后一个子节点,若是,转(3),否则,转(5)。

(10)从list中找出地址级别最大的节点,依次向上找出其父节点,得到匹配完的前四级结果。

(11)判断以上结果中是否包含null,并且剩余地址段是否存在前四级地址,若是,转(12),否则输出结果。

(12)将剩余地址再次进行树匹配,将再次匹配的结果与原结果进行比较。若再次匹配得到的结果包含了原结果,那么更新这个结果,并输出。

进一步的,后六级利用有限状态自动机的状态转移规则来对地址信息逐层进行正则匹配,从而得到相应级层地址的地址要素,自动机状态转移结构示例如图3所示。识别前四级地址后,余下的地址作为初始状态导入有限状态自动机进行后六级正则匹配,当符合路级别的提取规则时,由初始状态转向状态1,状态1匹配到符合路号级别的提取规则时转向状态2,以此类推,无法满足剩余状态提取规则的地址内容作为备注级内容转向状态6,最后转向结束状态,从而实现后六级地址的识别。

进一步的,地址清洗模块包括地址补全和地址去重。具体流程如图4所示。

地址补全采用基于snm算法,设定一定大小的窗口,对窗口内的地址两两进行比对和匹配,对于每一条不完整的十级地址的缺失部分,尽可能地利用其相似地址的相应部分进行补全,实现将绝大部分的详细地址规范化。基于snm的地址补全算法的伪代码如下所示:

/*w表示窗口长度,ai表示第i个地址,w1表示当前窗口内的第一个地址位置*/滑动窗口从地址数据子集的第一个位置开始滑动;

将每个地址的标志位初始化为false;while(滑动窗口没有滑动到地址数据子集的尾部){fori=w1tow{

计算窗口内详细地址字符串的长度;

选出窗口内长度最大的三个地址,两两分为一组

对每组计算相同的地址级数;

选出地址级数最大的一组地址中长度较长的那条地址作为标准详细地址ao;

根据公式1计算地址ai和标准详细地址ao的相似度sima(ao,ai);

if(sima(ao,ai)>u)//u表示地址相似度阈值,多次试验u取0.66效果最佳。地址ai用标准地址替换;}else{

计算ai和ao的相同地址级数的最大下标j;

将地址ai的前j级地址要素用标准地址的对应要素替换;

}

i=i+1;向下滑动窗口;

}

}

两条地址间的相似度计算公式如公式1所示:

公式1

其中,用wk来表示第k级地址的相似贡献权重,层级越高的权重越大,本次实验wk=k。flagk表示两条地址的第k级地址要素是否相同,相同时flagk=1,不相同则flagk=0。

进一步的,地址去重指对同一人的多个地址进行去重,保留不同的地址。地址去重伪代码如下:

/*addresssize表示待去重的地址长度*/

创建hashmap<string,set<list<string>>map用于存放结果数据。/*key为人名,value为address集*/

fori=0toaddresssize://遍历所有记录

提取记录中的姓名name

提取记录中的地址address

if(name不在map的key集合中){

获取map中该name所对应的地址列表list

if(address不在list中){

}else{

将地址加入list列表;

}

将<name,list>键值对加入到map中;

}else{

创建一个地址空列表list2;

将address加入list2列表;

将<name,list2>键值对加入到map中

}

进一步的,关系构建模块分为地址标签识别与人群关系构建两个部分。地址标签识别利用百度地图提供的地点检索服务和地点输入提示服务获取请求地址的标签以及经纬度,步骤流程如图5所示。关系构建根据地址和标签查表匹配构建对应人物关系表,步骤流程如图6所示。

进一步的,地址管理模块主要包括地址模型管理和地址库管理两部分。地址模型管理实现对trie树模型的创建、存储、导入以及查询功能。地址库管理模块主要实现对mongodb数据库的插入、查询、修改和删除。

以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。

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