广西农业信息地理匹配引擎设计与实现
2019-09-10朱明何永宁吴博
朱明 何永宁 吴博
摘要:【目的】研究高并发、大流量农业信息地理匹配引擎,改进其算法,解决广西区内壮语地名匹配问题,实现农业信息的自动匹配与空间定位,以满足农业大数据平台高并发、大流量的地理匹配需求。。【方法】通过改造开源的Solr全文搜索引擎,结合广西地名中的少数民族语言特点,扩充地名词典、设计数据组织方式与逆向分词算法、改进TF-IDF算法。【结果】在改进方法的基础上设计并实现了农业地理信息地理匹配引擎。经过第三方15484条数据测试,能够准确切分壯语地名,引擎在500并发下仍具有良好的响应速度,匹配准确率达98.43%。地理匹配引擎目前已应用到糖业发展大数据平台中,并取得了良好的效果。【建议】针对测试中出现的问题,建议在下一步工作中扩充并完善词库内容、增强语义推理能力、研究基于空间语义的定位算法,提高广西农业信息的定位精度。
关键词: 农业信息;地理匹配引擎;地名分词;地名检索;地名匹配算法;广西
中图分类号: S126;P208 文献标志码: A 文章编号:2095-1191(2019)01-0201-07
0 引言
【研究意义】数据处理是农业地理信息系统建设的主要工作之一。在农业大数据时代,人工处理数据成本高、效率低,难以满足面向海量数据的实际应用需求。地理匹配引擎能根据农业信息中的地名快速匹配空间位置,批量完成数据的空间化处理,为农业地理信息系统的开发与应用带来极大的便利。在建设广西糖业发展大数据平台过程中,通过研发高效、准确的农业信息地理匹配引擎技术,利用匹配引擎自动完成海量农业信息的空间定位,能有效解决壮语地名匹配问题,实现提高系统效能,降低人工处理数据成本,改善用户体验等建设目标。【前人研究进展】在早期的地理匹配系统中,地理匹配一般利用通配符匹配,使用通配符构建SQL搜索语句进行模糊查询。陈德权(2013)、梁明等(2014)研究表明使用通配符匹配简单易行、实现难度较小,在数据量与用户并发量较小的情况下效率较高。但由于使用通配符进行查询,在数据大幅增加后查询效率下降明显,且对于非标准名址无法通过简单的模糊匹配检索到相关结果。针对上述问题,柴洁(2014)、徐道柱等(2017)提出了基于全文搜索引擎的地理编码系统,实现了地址匹配搜索引擎模糊查询、分级搜索,但未对中文分词算法作进一步完善,制约了中文地名匹配的准确率。马照亭等(2011)、夏兰芳等(2012)总结认为地名分词器的关键技术是通过地名分词算法、词库与分词处理,将搜索关键词按语义切分为包含若干地址要素或名称要素。邹崇尧等(2014)、陈利燕等(2016)、俞敬松等(2016)研究表明,地名匹配过程中由于中文本身的复杂性及地址信息描述规则的不确定性,使中文地名分词成为地理匹配引擎中的技术难点。上述研究一定程度上解决了地理匹配技术难点,有效提高了匹配准确率,但均属于实验性质或面向小型应用系统,未在大、中型系统上进行应用验证。【本研究切入点】目前针对广西地名的高性能地名匹配引擎的研究,以及满足省级农业大数据平台地理匹配关键技术的研究较少,特别是缺乏投入实际应用的地理匹配引擎。【拟解决的关键问题】通过改进地名分词技术、地名匹配算法,研发高性能农业信息地理匹配引擎,解决壮语地名识别率低、地名匹配破坏实际地名语义等问题,实现农业大数据的空间定位与自动匹配,降低数据采集成本,以满足农业大数据平台高并发、大流量的地理匹配需求。
1 数据来源与研究方法
1. 1 数据收集与处理
地理匹配引擎中地名数据来源于广西基础地理信息数据库,由地名、POI(Point of interest)、同义词及品牌词等数据组成。数据的采集与更新时间为2018年3月,总计106万条数据量,覆盖广西全部14个地市。各数据系统的关系如图1所示,数据主要存放在POI和(区划)地名数据表中,两个表中的数据按照标准地名与地址数据结构组织,具有规整的层次结构,能有效反映地名的所在位置与从属关系,是地理匹配引擎的主要检索对象。但在实际应用中,用户输入的历史地名、俗称、简称等不能与标准地名地址准确匹配。为了解决实际应用中的品牌与同义问题,本研究在数据设计上增加了品牌词和同义词数据表。其中,品牌词数据表记录明确带有企业品牌名称的关键词,主要用于分类搜索与关联搜索;同义词数据表记录同义地名,以提高搜索准确率并贴近用户日常使用习惯。POI数据、品牌词数据和同义词数据通过地理实体编码与地名数据关联。
1. 2 地名匹配算法设计
地名搜索模块是地理匹配引擎的核心,关键技术是地名分词算法、地名搜索匹配算法与排序算法的设计。搜索模块基于开源的Solr搜索引擎开发而成,Solr是基于JAVA开发的开源全文搜索引擎,能够提供基础的全文检索API与服务框架,支持二次开发,具有良好的算法扩展性。
1. 2. 1 地名分词算法设计 王俊超等(2012)对中文地名分词的研究证明,采用逆向分词方法的准确率高于正向分词。为提高分词准确率,本研究设计了地名逆向分词算法,算法具体分为4个步骤。步骤[①]:初始化分词集,即分词处理队列与分词回收栈,并将搜索关键词的字符逐个输入分词处理队列。步骤[②]:将分词处理队列中所有字符作为一个单词与词典匹配,如果匹配成功,则将单词输出到分词集,然后跳转到步骤[③];如果无匹配结果则首字符出队,出队字符输出到分词回收栈并继续重复本步骤。步骤[③]:如果分词回收栈为空,则跳转到步骤[④],否则将分词回收栈中的字符出栈并逐个输入到分词处理队列,并跳转回到步骤[②]。步骤[④]:输出分词集,结束分词处理过程。
1. 2. 2 地名搜索匹配与排序算法 地名搜索匹配与排序算法的主要步骤是构建相似度计算分词集、分词权重,并计算匹配相似度。构建相似度计算分词集是计算匹配相似度的基础,地理匹配引擎利用Solr的全文检索能力进行地名匹配,将含有i个分词的集合S={S1,S2,…,Si}进行全文检索,并返回所有有分词匹配的结果,形成搜索结果集R={R1,R2,…,Rn}。匹配相似度计算采用向量空间模型算法,先从结果集R中逐条取出搜索结果,将取出的第i个搜索结果Ri按匹配的分词打断为几部分,并将打断部分取出构成Rn的未匹配分词集T={T1,T2,…,Tj},匹配部分构成词集P={P1,P2,…,Pk},Rn的分词集为Rn=T∪P;将分词集S与T合并构建为含m个分词的相似度计算集合Sim={S1,S2,…,Si,T1,T2,…,Tj},构建过程如图3所示。
Solr采用的是词频—逆文档频率(Term frequency-inverse focument grequency,TF-IDF)搜索权重算法。唐旭日等(2010)、朱少楠等(2013)、程钢和卢小平(2014)研究发现中文地名地址一般由行政区域、基本区域限定物和局部点位置3个部分构成,该层次结构决定了中文地址的特征词一般位于名址词条的尾部,当词条含有多条分词时,处于词条尾部的分词一般具有較高的识别度。针对中文地名的上述特性,中文地名分词匹配权重需要根据匹配分词词频、词序和长度等因素以改进默认的TF-IDF算法。定义WF、WD和WL分别为词频、词序和词长的权重,搜索结果集R中总条目数为N,分词集中某个分词Si在搜索结果中的词频数为k,d为分词在词条中的词序,长度为LS,RN长度为LR,M为分词集合中分词的数量,W为总权重,各权重的计算公式为:
WF=1-[kN+1] (1)
WD=[dM12] (2)
WL=[LSLR] (3)
W=WF·WD·WL (4)
按照公式(1)~(4)对匹配向量[S]和[R]中的每个分词项计算匹配权重,匹配向量按权重调整为[S]=(WS1S1,WS2S2,…,WS3Sm),[R]=(WU1U1,WU2U2,…,WUmUm)。
构建完成集合后,将关键词S集合、搜索结果Ri分别与集合Sim进行匹配,按照匹配结果形成m维的匹配向量[S]=(S1,S2,…,Sm)和[R]=(U1,U2,…,Um)。匹配相似度[ρ]按公式(5)计算:
[ρ]=[1mWSiSiWUiUi1m(WSiSi)21m(WUiUi)2] (5)
在计算获得每个检索的匹配相似度后,将所有的搜索结果按匹配相似度排序,并根据不同的情况将搜索结果分为准确搜索结果、推荐结果及伪结果三类。准确搜索结果和推荐结果将推送给检索服务模块,通过封装后传输到请求方,伪命中结果将被系统直接抛弃,减少不必要的干扰项。
2 结果与分析
2. 1 地理匹配引擎实现与应用效果
本研究中地理匹配引擎由检索服务、全文检索及检索数据库3个模块构成(图4)。其中,检索服务提供地理匹配引擎的各类服务接口,全文检索主要负责实现地名的高效检索与准确匹配,检索数据库存放各类基础信息。
目前,地理匹配引擎已完成开发,并应用于广西糖业大数据平台,在大数据平台中引擎提供了地名搜索、POI搜索、地址搜索等一系列服务。在Web、移动客户端等跨平台服务应用上,通过JSON与XML方式封装的服务可将功能提供给其他糖业应用平台及移动调查终端使用。已有测试结果显示,地理匹配引擎性能稳定,取得了很好的应用效果。图5是地理匹配引擎在广西糖业发展大数据平台中的具体应用示例,左侧上部的搜索栏为地名搜索的输入接口,列表为根据地名关键词搜索返回的信息匹配结果,右侧地图模块将匹配结果按具体坐标位置逐一标注,方便用户查看信息的地理分布及具体内容。除直接调用方式外,还可通过服务接口调用地理匹配引擎以实现信息的自动化匹配。
2. 2 分词方法测试与分析
本研究在开发测试环境下进行,软件环境配置为Windows server 2008、Solr 6.6、JDK1.7和MySQ L5.7,硬件配置为E7-4830、32GB内存,测试数据为收集到广西全区范围内的15484条含有名址的文本属性数据,压力测试工具为LoadRunner 12.02。地理匹配引擎使用改进后的分词算法实现地名分词器,基于Java语言开发,地名分词处理过程主要包括词典加载、地名预处理和地名分词3个部分。
本研究对比了Solr分词器与改进分词器的应用效果,通过样例具体分析两个分词器的效能差异(表1)。在对比测试中,发现Solr自带的中文分词器对广西区内地名的分词准确率不高,特别是对壮语地名不能按实际语义正确切分,除了市一级地名外,其他地名均被分割为没有实际语义的单字,破坏了地名地址含义的层次性。产生上述问题的主要原因是Solr默认的分词词典仅包含一般地名,在分词算法上未针对地名的语义结构进行相应优化。而改进后的分词器除了算法以外,还针对上述问题进行如下改进:(1)词典加载。词典是地名分词器进行分词的基础,系统中加载的词典包括主词典、量词词典和扩展词典。针对广西地名的壮族语言特点,例如那坡县、那马镇、那弄村等专有名词,通过扩展词典进行补充。(2)地名预处理,主要针对关键词中的英文字符、数字、标点符号等非汉字部分进行规范化处理,完成全角字符到半角字符的转换,对可能存在的非法字符进行清洗处理。在样例对比中,对不规范的①号中含有的全角字符进行清洗。(3)地名分词,即搜索过程的关键环节。由于地名特点,不同的算法会产生不同的分词结果,导致出现搜索歧义,影响匹配引擎的匹配效率。在地名分词过程中遵循以下原则:一是分词过程中尽可能完整解析出包含地名的部分;二是分词过程中尽可能保留最大语义分词;三是对于关键词中的数字与英文部分直接保留不进行拆分。对比测试结果表明,上述改进已达到预期目的,切分的地名能正确识别壮语地名并且符合地名语义特点。
2. 3 匹配准确率分析
匹配准确率包含匹配准确度和空间精度两个方面,其中,匹配准确度是指关键词与地名在文本上是否正确匹配,空间精度是指匹配后的空间定位精度是否与关键词的地理位置相一致。地理匹配流程如图6所示。
匹配准确率是地理匹配引擎的重要指标,由于本测试数据来源于人工填报,在填报过程中对名址的书写未进行标准化约束,部分信息中的地名不规范或存在错别字。测试过程中对比了传统的SQL语句匹配法、Solr默认分词搜索方法与改进后的算法,从表2可看出,经过改进后的匹配算法准确率最高,正确匹配15241条,匹配成功率达98.43%。243条数据无法匹配和错误匹配,其中,错误匹配87条,占比0.56%,主要是个别地名地址数据在录入阶段出现文字错误,导致分词存在歧义,如“大明纸业有限公司”被错误记录为“大名纸业有限公司”;无法匹配的数据156条,占比1.01%,主要是存在地名数据库中没有的新地名,说明在现有搜索匹配算法下,制约搜索准确率的主要原因是地名库中数据的丰富程度。在空间匹配精度方面,13704条地名地址能够实现准确定位,1537条数据仅能实现大致定位。经过具体分析,不能准确定位的数据主要集中在农村地区,具体原因是大多数农村地址缺乏具体的门牌编号,地址的最小单元一般为自然村或屯,导致定位无法精确到具体空间位置。
2. 4 检索效率分析
地理匹配引擎在准确检索的前提下必须具备高并发下良好的响应速度。为测试改进后地理匹配引擎的效率,使用LoadRunner分别模拟100、300和500并发访问效果进行对比试验,结果如表3所示,3种搜索方法中Solr默认引擎在各种模拟条件下的搜索响应速度最快,本研究中使用的引擎速度次之,二者在500并发情况下均能获得较好的搜索响应速度,对用户搜索体验未产生明显影响。在实际应用中,地理匹配引擎将被部署到高性能服务器集群,500并发搜索响应时间能降至100 ms以内。
3 讨论
本研究从实际应用需求出发,设计并实现了适用于广西糖业发展大数据平台的农业信息地理匹配引擎。其中,全文检索模块采用开源软件,开发成本低廉、扩展性好。通过扩充广西壮语地名词典、改进地名匹配规则及排序算法,使地理匹配引擎适应广西区域地名地址搜索需求,经过第三方实际业务数据测试验证,系统相比原有基于SQL语句的检索与默认的Solr引擎,在保证匹配速度的同时提高了匹配精度,完全能够满足广西糖业发展大数据平台的应用需求。
在王俊超等(2012)研究成果的基础上,本研究总结了地名匹配的主要规则,针对地名语义的分词进行算法改进与优化,设计了逆向地名分词算法,使分词结果更加符合地名语义。经过对比测试分析,发现面向普通文本的分词引擎对广西区内地名分词一般破坏了实际地名语义,而改进后的分词算法能按地名语义完成分词,匹配精度从75.19%提高到98.43%。在匹配及排序算法上,参考了公冶小燕等(2017)、武永亮等(2017)、叶敏等(2017)的研究成果,针对壮语地名与地名地址数据特点进一步改进TF-IDF匹配算法,通过权重提高模糊搜索的准确率,降低了伪命中项对匹配精度的影响程度。通过15484条数据测试结果表明,与陈利燕等(2016)基于开源Lucene构建的地理匹配引擎相比,本研究开发的方法将匹配精度从91.00%提高到98.43%;在匹配效率方面,改进算法增加了计算步骤,计算量增大,500并发条件下,平均响应时间由373 ms增加到541 ms,匹配速率有所下降,但考虑到测试环境设备计算能力远低于实际运行环境,在实际应用中不会对用户体验造成不良影响。
本研究不足之处主要表现为:检索词库依赖于静态词库,需要定期更新才能保证检索精度;缺乏联系上下文的地名推理能力,对用户输入过程中的人为错误无法进行自动纠正;匹配排序权重主要与语义相关,不能根据用户匹配频率动态调整排序,无法使排序结果符合大多数用户的预期目标。
4 建议
4. 1 扩充并完善词库内容
从测试结果来看,影响匹配准确率的关键因素是词库数据的丰富程度。目前引擎使用的是静态词库,数据需要定期更新,且涉及农村地区的信息,地址的最小粒度一般为自然村或屯,缺少具体的门牌号,影响了定位的空间精度。在下一步的工作中,一是需要进一步完善广西全区的地名地址库,尤其是加强对农村地区地址数据的采集与补充工作;二是研究从民政、公安、电力、工商及互联网等多种数据来源动态提取地址数据,实现地名词库的多源数据更新,确保已经实际编号的地址及时联动更新入库;三是扩充地址表达的维度,研究并制定一套适用于不同粒度的地址表达方式,形成规范的地址层级结构。
4. 2 增強语义推理能力
当前的匹配精度主要依赖文本匹配,对于因人为输入错误的地名缺乏语义纠错能力,对于两个以上分词出现错误的文本一般无法正确匹配;此外,对数据库中不存在的地名切分准确率较低。针对上述问题,应研究新的算法和数据组织模式,综合考虑信息来源、用户访问IP地址、用户检索习惯及信息类别等多源数据分析信息的潜在语义,在潜在语义基础上总结其与潜在地名的关联规则,增强联合上下文推理地名的能力,从而实现识别潜在地名并进行正确匹配。
4. 3 研究基于空间语义的定位算法
目前的匹配引擎可做到精确的点到点匹配,但缺乏处理复杂的语义匹配与语义定位能力,对语义方位上进行定位精度较低。尽管Solr本身具有空间语义搜索能力,但对于“村委会斜对面”此类以地标作为参照物的空间表述,仅能做到范围定位,不能根据建筑物的坐落方位、围墙隔离及街道走向等空间语义来精确确定匹配位置。因此,需进一步研究改进算法,研发理解人类思维的空间语义定位方法,提高此类信息的定位精度。
参考文献:
柴洁. 2014. 基于IKAnalyzer和Lucene的地理编码中文搜索引擎的研究与实现[J]. 城市勘测,(6): 45-50. [Chai J. 2014. Research and implementation of Chinese search engine in geocoding based on IKAnalyzer and Lucene[J]. Urban Geotechnical Investigation & Surveying,(6): 45-50.]
陈德权. 2013. GIS地名搜索系统的关键技术设计与实现[J]. 测绘与空间地理信息,36(8): 58-60. [Chen D Q. 2013. Design and implementation of key technologies for GIS place search system[J]. Geomatics & Spatial Information Technology, 36(8): 58-60.]
陈利燕, 林鸿, 张新长. 2016. 一种改进的Lucene算法及在空间数据融合中的应用[J]. 测绘通报,(10):106-109. [Chen L Y, Lin H, Zhang X C. 2016. An improved Lucene algorithm and its application to spatial data fusion[J]. Bulletin of Surveying and Mapping,(10):106-109.]
程钢, 卢小平. 2014. 顾及通名语义的汉语地名相似度匹配算法[J]. 测绘学报,43(4): 404-410. [Cheng G, Lu X P. 2014. Matching algorithm for Chinese place names by similarity in consideration of semantics of general names for place[J]. Acta Geodaetica et Cartographica Sinica, 43(4): 404-410.]
公冶小燕, 林培光, 任威隆, 张晨, 张春云. 2017. 基于改进的TF-IDF算法及共现词的主题词抽取算法[J]. 南京大学学报(自然科学),53(6): 1072-1080. [Gongye X Y,Lin P G,Ren W L,Zhang C,Zhang C Y. 2017. A method of extracting subject words based on improved TF-IDF algorithm and co-occurrence words[J]. Journal of Nanjing University(Natural Science), 53(6): 1072-1080.]
梁明, 罗荣, 胡最. 2014. 基于Lucene和PostGIS的地图搜索研究[J]. 测绘通报,(11): 42-45. [Liang M, Luo R, Hu Z. Map search based on Lucene and PostGIS[J]. Bulletin of Surveying and Mapping,(11): 42-45.]
马照亭, 李志刚, 孙伟, 印洁. 2011. 一种基于地址分词的自动地理编码算法[J]. 测绘通报,(2): 59-62. [Ma Z T, Li Z G,Sun W,Yin J. 2011. An automatic geocoding algorithm based on address segmentation[J]. Bulletin of Surveying and Mapping,(2): 59-62.]
唐旭日,陈小荷,张雪英. 2010. 中文文本的地名解析方法研究[J]. 武汉大学学报(信息科学版),35(8): 930-935. [Tang X R,Chen X H,Zhang X Y. 2010. Research on toponym resolution in Chinese text[J]. Geomatics and Information Science of Wuhan University,35(8):930-935.]
王俊超, 刘晨帆, 徐明世, 纪山, 兰伟. 2012. 语义相似性度量技术在地名匹配研究中的应用[J]. 辽宁工程技术大学学报(自然科学版),31(6): 871-874. [Wang J C, Liu C F,Xu M S, Ji S,Lan W. 2012. Application of semantic similarity measurement technology in place name ma-tching[J]. Journal of Liaoning Technical University(Natural Science), 31(6): 871-874.]
武永亮, 赵书良, 李长镜, 魏娜娣, 王子晏. 2017. 基于TF-IDF和余弦相似度的文本分类方法[J]. 中文信息学报, 31(5):138-145. [Wu Y L, Zhao S L,Li C J,Wei N D,Wang Z Y. Text classification method based on TF-IDF and cosine similarity[J]. Journal of Chinese Information Processing, 31(5): 138-145.]
夏兰芳,毛炜青,郭功举. 2012. 上海城市地理编码系统应用与研究[J]. 测绘通报,(1):78-80. [Xia L F, Mao W Q, Guo G J. 2012. The application and research of geoco-ding system based on the city of Shanghai[J]. Bulletin of Surveying and Mapping,(1):78-80.]
徐道柱,焦洋洋,苏雪梅. 2017. 基于Lucene的地名管理模型设计与实现[J]. 测绘与空间地理信息,40(3):6-10. [Xu D Z,Jiao Y Y,Su X M. 2017. Design and implementation of toponym management model based on Lucene[J]. Geomatics & Spatial Information Technology,40(3):6-10.]
葉敏,汤世平,牛振东. 2017. 一种基于多特征因子改进的中文文本分类算法[J]. 中文信息学报,31(4): 132-137. [Ye M,Tang S P,Niu Z D. 2017. An improved Chinese text classification algorithm based on multiple feature factors[J]. Journal of Chinese Information Processing,31(4): 132-137.]
俞敬松, 王惠临, 杨洁. 2016. 大规模地名本体数据库系统的建构技术与方法[J]. 图书情报工作,60(8): 126-131. [Yu J S,Wang H L,Yang J. 2016. Research on large-scale toponym ontology database construction techniques and methods[J]. Library and Information Serivce,60(8): 126-131.]
朱少楠,张雪英,李明,王宇. 2013. 基于行政隶属关系树状图的地名消歧方法[J]. 地理与地理信息科学, 29(3): 39-42. [Zhu S N,Zhang X Y,Li M,Wang Y. 2013. Topo-nym disambiguation based on administrative district relation tree[J]. Geography and Geo-Information Science,29(3): 39-42.]
邹崇尧,朱贵方,赵双明. 2014. 基于搜索引擎技术的地名地址定制查询研究[J]. 测绘通报,(8): 92-94. [Zou C Y, Zhu G F, Zhao S M. 2014. Research on customized query of geographic name and address based on search engine[J]. Bulletin of Surveying and Mapping,(8): 92-94.]
(责任编辑 邓慧灵)