首页 > Java > 基于规则的中文地址分词与匹配方法

基于规则的中文地址分词与匹配方法

2019年4月19日 admin 发表评论 阅读评论

研究背景及意义

随着地理信息系统(GIS)的不断发展和其在各行业的广泛应用,人们对信息共享

的要求也越来越迫切。例如在城市管网、交通导航、工商管理、公共卫生、灾害管理等

领域,地理信息系统作为信息共享的平台,其应用越来越广泛。城市各行业的数据库都

保存着大量和地理位置有关的非空间数据。但是这些行业建设的 GIS 系统并没有足够的

空间位置数据进行支撑,因为地址数据并不能够批量、准确地转化为空间化的信息。这

些数据大多都没有空间位置坐标,无法对应到电子地图上,也就无法进行空间分析和管

理决策。

地址匹配技术正是这一问题的解决方法。地址匹配技术就是把自然语言描述的地理

位置信息转换成地理坐标的过程。通过地址匹配技术,可以把城市各个行业的非空间

信息数据进行空间化,进而运用到 GIS 实际应用中,实现信息的集成与数据共享。

GIS    例如,百度地图

引入一些地址组成的基本概念:

(1)地址串:就是一般的地址,日常的通信地址。例如:青岛市黄岛区前湾港路 579 号。

(2)地址要素:组成地址串的若干词组,如上面的地址就是由 4 个地址要素组成的,分别是“青岛市”、“黄岛区”、“前湾港路”和“579 号”,每个地址要素相对独立。

(3)地址通名:顾名思义,就是地址要素中通用的那些字段。例如:地址要素 “黄岛区”中“区”为地址通名, “前湾港路”中“路”为地址通名。

(4)地址专名:例如:“黄岛区”中“黄岛”为地址专名。地址要素中去掉地址通名后剩余的部分就称为地址专名。

 

Key technologies on Address matching

 

 

Standard address model

 

标准地址模型举例

中文分词方法:

1.基于字典的分词方法

1)正向最大匹配法

2)逆向最大匹配法

3)最少切分词方法

4)逐词遍历法

2.基于理解的分词方法

3.基于统计的分词方法

在人工智能的自然语言处理(NLP)领域也会用到中文分词技术。

正向最大匹配法:

它的基本思想是:首先创建一个用于自动分词的中文词典,可以得知词典中的最长词条的汉字个数,假设个数为 n。然后,取待切分句子的前 n 个字符作为匹配字段,在分词词典中进行字段的查询匹配。如果词典中有这样的字段,则匹配成功。这样,由 n个字符组成的字段被切分出来,作为一个词。如果词典中不存在这样的字段,则匹配失败,将字段末尾去一个汉字,剩下的 n-1 个字符作为新的字段,再进行匹配,如此重复,直到匹配成功为止。

例如句子“我们是中华人民共和国的公民”,假设字典的最长词长为 7,它的正向最

大匹配法的分词流程如下表 所示。

 

分词过程实例

Process of segmentation

标准数据库的创建:

建立地址标准数据库系统是地址匹配的前提工作,需要将采集的城市地址按照确定

的标准地址模型进行标准化。

在创建的标准地址库中,分别存储地址的行政区划部分和详细街道地址部分。

 

中文地址的组成复杂多样,对比标准地址模型,可能存在地址表达不完整、残缺的情况。(设定:1道路名,2门牌号,3住宅小区,4楼牌号,5建筑物。)例如地址址武汉市青山区工业一路21号,是1(道路名)+2(门牌号)的模式,没有3、4、5三种地址要素。因此需要定义规则以便于后面地址匹配的进行。如下表所示。

 

 

 

 

地址匹配规则树

Geocoding rule tree

 

对于存在语义歧义的模糊地址,可以利用栈存储所有歧义情况,并构建一棵歧义地址树,按照深度优先原则遍历该树,直至查询到满足规则的地址记录为止。当查询失败时,可以读取栈中上一层的歧义地址继续查询。虽然一定程度上加大了查询的复杂度,但可以比较好的应对歧义模糊地址的匹配问题。

 

例如,地址“江汉墨水湖东侧12号楼B座301室”,首先,行政区划部分应该是“江汉区”,缺少地址通名“区”;“墨水湖”表述有歧义,可能是墨水湖路,也可能是墨水湖小区;另外,“东侧、B座301室”为多余信息,应该去掉。以此地址为例,算法的具体步骤如下:

1)判断字符串中是否存在行政区划。通过搜索标准地址库中行政区划表,查找到“江汉”一词与记录“江汉区”模糊匹配,将其分割出来。

2)对剩余字符串“墨水湖东侧12号楼B座301室”进行地址分词匹配。通过匹配规则树,限定了搜索字段为1(道路名)、3(住宅小区名)、5(建筑物)。调用最大正向匹配算法,查询到“墨水湖”分别与1墨水湖路和3墨水湖小区两个字段模糊匹配,因此产生语义歧义。并将1与3先后入栈,栈顶为3,故先将“墨水湖”匹配到3,查询规则库,没有满足条件的规则,故对“东侧12号楼B座301室”继续进行分词匹配。通过规则树,3后面只有4。继续调用最大匹配算法,在标准地址库中的4字段中查询剩余子串 “东侧12号楼B座301室”,无匹配结果。

故重新选取栈顶元素,将“墨水湖”匹配到1,查询规则库无满足的规则,故继续分词匹配。查询规则树并确定备选字段为2、3、4、5。搜寻字符串“东侧12号楼B座301室”,查找到“12号楼”,与4字段有一条匹配记录,将该词记入分词结果词组。此时查询规则库,找到规则三满足条件。分词匹配算法完成。

运算结果:对于模糊地址“江汉墨水湖东侧12号楼B座301室”,分词结果为“墨水湖、12号楼”,在标准地址库中找到了地址记录“墨水湖东路15号12号楼”。

 

分类: Java 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.