朱明 何永寧 吳博
摘要:【目的】研究高并發、大流量農業信息地理匹配引擎,改進其算法,解決廣西區內壯語地名匹配問題,實現農業信息的自動匹配與空間定位,以滿足農業大數據平臺高并發、大流量的地理匹配需求。。【方法】通過改造開源的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.]
(責任編輯 鄧慧靈)