通訊地址查詢郵政編碼系統設計論文

通訊地址查詢郵政編碼系統設計論文

  隨著電子商務的突飛猛進和物流行業的資訊化,使得人們在足不出戶的情況下完成購物和郵寄物品,大大節約了時間和金錢成本。

  1 現狀分析

  隨著電子商務的突飛猛進和物流行業的資訊化,使得人們在足不出戶的情況下完成購物和郵寄物品,大大節約了時間和金錢成本。電子商務和物流行業都離不開通訊地址(又稱為通訊地址,簡稱為地址)和郵編,這些資料都需要使用者提供,當前一些電子商務網站和物流行業的主要的做法如下:

  (1)讓使用者手工輸入完整的地址和地址對應的郵編。

  (2)透過下拉列表提供省,省下面地級市和地級市下面的區縣,這些比較固定的地址讓使用者選擇,餘下的地址和郵編由使用者手工輸入。

  (3)保留使用者輸入的地址和郵編,方便下次再次使用,即如果本次輸入的地址和郵編之前已經有了一份,直接選中,就避免了讓使用者重複輸入。

  這些做法主要存在的問題如下:

  (1)很多情況下使用者未必知道自己輸入的地址對應的郵編。

  (2)由於基於拼音的輸入法和漢語本身存在的缺陷(漢字存在多音字,多個漢字擁有相同的讀音,多數基於拼音的輸入法都是基於統計的語言模型),再加上地址中存在的一些生僻字的原因會導致輸入的地址存在錯別字。

  (3)由於地名存在別名現象,即同一個地名有多種叫法,例如“廣東省”的別名有“廣東”和“粵”,因此他們識別不了對同一個地名的不同描述。

  (4)有些情況下使用者無法輸入完整的地址,當輸入的時候一臉茫然和無助。

  (5)由於地址存在變更和蒐集不完全的問題,這些網站的資料往往得不到更新。

  當前一些其他的網站能夠解決第一個問題,即幫助使用者得到地址對應的郵編。但是他們往往採用資料庫技術來實現的系統,對於低於區縣級別的地址,往往採用字串模糊查詢(like %XXX%)的方式參與檢索,由於效能的原因此種方式對於大資料量的查詢效率很差。另外基於資料庫實現的查詢使得使用者的輸入格式和內容受到了很大的限制,比如:

  使用者首先選擇省級行政區(包括省、特別行政區、自治區和直轄市)的名字,其次是選擇地級行政區(包括地級市、自治州、地區和盟)級別的名字,然後再縣級行政區(包括市轄區、縣、旗、特區、林區、自治縣和自治旗等)級別的名字,最後使用者輸入鄉鎮級別及村莊道路等。查詢的輸入過程非常機械。

  另外基於資料庫的查詢模式,要求地址格式全部滿足四級,即省級,地級市級,區縣級,然後是其他具體地址。但是並不是所有的地址都滿足此種情況,例如直轄市下和省與直轄縣或省直轄縣級市之間就沒有地級市級,一些特殊的地級市沒有區縣級,如廣東省中山市、廣東省東莞市、海南省三亞市、海南省三沙市、甘肅省嘉峪關市;他們的解決辦法,起個其他的名字代替,例如“直轄區縣”,“市轄區”,“省直轄縣”等,但是查詢的結果中一般也包含這些非真正地址的資料。

  本方法嘗試解決如下問題:

  (1)幫助使用者輸入,即提供輸入提示功能(類似Google Suggestion)。

  (2)採用基於搜尋引擎技術使得使用者輸入的查詢格式更加自由,並且透過一個比較短的地址片段就可以找到完整的地址。

  (3)基於命名實體識別技術能夠識別出使用者輸入地址元資料的級別,從而實現地址的逐級查詢(例如已知一個地級市,給出該地級市下所有縣級行政區的名字和對應的郵編;已知一個省的名字,給出該省下所有地級行政區的名字和對應的郵編等)。

  (4)自動從網際網路上抓取地址資料,完成參考資料的更新。

  (5)對不用來源的參考資料進行校驗,識別出有問題的參考資料,使得參考資料更加準確。

  (6)有時候由於參考資料在鄉鎮級行政區級別及以下級別上收錄得不是很全,本方法可以透過地址補全方式完善查詢結果。

  (7)實現查詢結果地址的`切分和級別標註,方便使用者靈活使用結果。

  (8)將地址和對應的郵編加密到二維碼中,方便使用者透過二維碼掃描軟體直接獲取完整的地址和郵編。

  (9)將使用者的檢索結果連結到知名的地圖廠商(百度,谷歌,搜狗地圖等)獲取相關地址的經緯度資料。

  2 系統設計

  2.1 總體架構設計

  本系統的總體架構如圖1所示。

  從圖1郵編查詢系統的總體架構圖可以看出,該系統需要三種資料:

  (1)用於透過通訊地址查詢郵政編碼的通訊地址和郵政編碼對應關係的資料。

  (2)用於輸入地址提示的標準化的通訊地址資料。

  (3)用於地址切分,地址標註,命名實體識別和Query語句生成的地址元資料字典資料。

  第一種資料:通訊地址和郵政編碼的對應關係,可以從一些資料比較新而且資料比較標準和完整的郵編查詢網站上,利用基於種子的網路爬蟲和資訊抽取技術抓取相關資料。

  第二種資料:標準化的通訊地址資料,一種來源是第一種資料去掉郵政編碼後的通訊地址資料,第二種來源,從維基百科和國家統計局網站上,最新的有關中國行政區劃上的網頁上利用爬蟲技術和資訊抽取技術抽取得來。

  第三種資料:地址元資料字典資料,源自維基百科和國家統計局有關中國行政區劃的地址元資料,以及透過地址切分和識別技術從完整的通訊地址中獲得。

  地址元資料包含的資料主要有:省級行政區名(包括省、自治區、直轄市和特別行政區)、地級行政區名(地級市、自治州、地區、盟)、縣級行政區名(包含市轄區、縣級市、縣、自治縣、旗、自治旗、特區和林區)、鄉級行政區名(包括鄉、鎮、街道、蘇木、區公所),其他地址資料(包括道路名、村莊名、小區名、建築物名和廣場名)等。

  2.2 地址查詢編碼過程設計

  地址查詢郵編索引結構如圖2所示。

  其中地址的最低等級域(Level Field)包含的資料值如下:

  (1)省級行政區級(包括省、自治區、直轄市和特別行政區),用province表示。

  (2)地級行政區級(包括地級市、自治州、地區、盟、直轄市轄區),用city表示。

  (3)縣級行政區級(包括市轄區、縣、旗、特區、林區、自治縣和自治旗等),用district表示。

  (4)鄉級行政區級(包括鄉、鎮、街道、蘇木、區公所),用town表示。

  (5)低於鄉級行政區級,用all表示。

  一個地址文字,其對應的最低地址等級域的值計算如下:

  (1)首先對地址文字做預處理,預處理包括刪除多餘的空格,全形字元轉換成半形字元。

  (2)其次是地址切分和地址標註。

  (3)接著是地址命名實體識別,獲取最終的地名實體標註序列。

  (4)然後根據規則計算出此地址文字的最低地址等級的值。

  (5)將最低地址等級對映到最低地址等級域的值:1→province;2→city;3→district;4→town;0→all。

  2.3 地址解析過程

  本系統是基於開源的全文搜尋引擎工具包Lucene實現的系統,中文分詞模型採用的是二元模型(bigram)。為了提高搜尋的精度和排序的質量,需要對輸入的文字進行解析,解析的結果是生成相關的Query語句。因此整個流程為首先對使用者輸入的文字進行預處理,切分,標註和地名實體識別,識別出不同級別的地名,然後對不同級別的地名分別用半形的雙引號“””括起來生成PhraseQuery查詢語句,並賦以不同的權值,權值的設定應遵循如下原則,已被收錄到字典裡的地名(即確定被識別的地名)其對應的權值要大於未知的地名。舉例如圖3所示。

  圖3中“29號”是不能識別的地址,因此其對應的權值W5設定的值要比其他的權值小。通常情況下W5的值一般設定成1.0,其他確定已被識別的地址對應的權值的值一般大於1.0。

  接著用地址的標註等級序列獲得地址的最低標註等級,為了能夠支援地址的分級查詢(僅限四級以上的地址),即:搜尋的結果首先是當前地址的標準形式,其次是當前地址等級下的直屬行政等級(即子等級)的所有地址,然後才是更下一級的地址。例如:當輸入“深圳市”時,排在第一個的應該是“廣東省深圳市”,其次是“深圳市”下的直轄區縣,然後是區縣下的鄉鎮街道,最後是道路,小區,村莊等。系統在最低標註等級對映到最低等級域上要做分級查詢處理,具體做法是:獲得當前最低等級及下屬的等級域的值,然後按照逐級遞減的方向賦上遞減的加權值。規則如下:

  (1)1→province city;

  (2)2→city district town;

  (3)3→district town。

  當用戶提交查詢請求後,系統會返回查詢的結果,並把與使用者輸入的地址文字最相似的地址排在第一位。由於參考資料蒐集的不是太全,加上每年都有新增的建築,道路,小區等,還有一些行政區劃的變更等等,使得排在第一位置上的地址中區縣位置之後的地址和使用者輸入的地址有出入,本系統採用地址補全技術,對最相似的返回結果進行改造,使得更接近使用者的要求。

  2.4 地址補全

  地址補全是根據使用者的輸入來完善查詢結果的技術,使得結果更貼近使用者的需求。地址補全主要用在某一級別的地址很難蒐集全,而且新增量比較大,主要集中在四級和五級地址上。地址補全的條件時使用者輸入的地址文字其地址級別的順序是正常的,即不存在一二三級地址出現在四級或者五級地址之後。識別出使用者輸入的地址級別中四級地址及以後的部分,拼接到搜尋結果最相似的那條地址中三級地址之後。

  3 總結

  本文設計的系統是用來實現地址查詢編碼這一功能的。在分析了現有系統情況之後,使用了地址解析、補全、查詢等技術,來滿足實際生產的需要。實際使用情況顯示本文提出的諸多解決方案能夠很好地滿足需求。

最近訪問