本發(fā)明屬于數(shù)據(jù)處理領(lǐng)域,尤其涉及一種中文地址樹的構(gòu)建方法及裝置。
背景技術(shù):
隨著數(shù)字化城市的不斷快速發(fā)展,越來越多的城市規(guī)劃問題需要聯(lián)合空間信息加以分析,與此同時,傳統(tǒng)數(shù)據(jù)分析方法的局限性逐漸顯示出來。由于城市規(guī)劃管理數(shù)據(jù)不具備空間信息,因而在實際應(yīng)用中,通常會使用地址編碼(Geocoding)技術(shù)來對地址描述的信息進(jìn)行空間定位,建立起空間信息與非空間信息之間聯(lián)系的過程,以將信息系統(tǒng)和關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)與空間數(shù)據(jù)關(guān)聯(lián)起來。由于尚未存在統(tǒng)一的中文地址格式規(guī)范,如何對海量中文地址數(shù)據(jù)進(jìn)行結(jié)構(gòu)化的管理成為了當(dāng)前地址編碼技術(shù)發(fā)展的一大障礙。
建立地址詞典庫是對中文地址數(shù)據(jù)進(jìn)行結(jié)構(gòu)化管理的一種方式。城市地址編碼的核心技術(shù)包括地址要素解析,地理要素解析的過程可看作是一種特定的中文地址分詞任務(wù)。目前的大部分地址分詞方法都需要將待分析的字符串與地址詞典庫中的詞條進(jìn)行匹配或統(tǒng)計處理,因而分詞準(zhǔn)確率的高低往往取決于地址詞典庫構(gòu)建的好壞。建立地址詞典庫通常是由人工梳理和核對地址的方法來進(jìn)行,耗時巨大,地址庫構(gòu)建及數(shù)據(jù)管理效率十分低下。同時由于地址數(shù)據(jù)本身的不規(guī)則和隨意性,在地址數(shù)據(jù)管理過程中難以確定地址模型的元素以及各元素之間的空間約束關(guān)系,容易出現(xiàn)人為梳理錯誤,從而導(dǎo)致中文地址數(shù)據(jù)結(jié)構(gòu)化不準(zhǔn)確的問題發(fā)生。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例的目的在于提供一種中文地址樹的構(gòu)建方法及裝置,旨在解決解決目前中文地址結(jié)構(gòu)化不準(zhǔn)確以及中文地址數(shù)據(jù)管理效率低的問題。
本發(fā)明實施例是這樣實現(xiàn)的,一種中文地址樹的構(gòu)建方法,包括:
獲取地址數(shù)據(jù);
根據(jù)所述地址數(shù)據(jù)構(gòu)建原始地址樹;
對所述原始地址樹中具有相同父節(jié)點的每組兄弟節(jié)點分別進(jìn)行排序,并根據(jù)所述排序結(jié)果對所述兄弟節(jié)點的位置進(jìn)行調(diào)整,得到第二地址樹;
獲取所述兄弟節(jié)點之間相同的節(jié)點名稱前綴;
將所述相同的節(jié)點名稱前綴作為一個新節(jié)點的名稱,將所述新節(jié)點插入到所述第二地址樹中,并調(diào)整具有所述相同的節(jié)點名稱前綴的所述兄弟節(jié)點的名稱,得到第三地址樹;
遍歷所述第三地址樹中的所有節(jié)點,根據(jù)所述第三地址樹中的各個節(jié)點名稱與所述各個節(jié)點的父節(jié)點名稱之間的關(guān)聯(lián)關(guān)系,生成地址要素關(guān)系表;
在所述第三地址樹中建立節(jié)點名稱索引;
根據(jù)所述地址要素關(guān)系表及所述節(jié)點索引,判斷是否存在需要調(diào)整位置的節(jié)點,若存在需要調(diào)整位置的節(jié)點,執(zhí)行調(diào)整算法后得到最終地址樹,若不存在需要調(diào)整位置的節(jié)點,直接將第三地址樹輸出為最終地址樹。
本發(fā)明實施例的另一目的在于提供一種中文地址樹的構(gòu)建裝置,包括:
第一獲取單元,用于獲取地址數(shù)據(jù);
第一構(gòu)建單元,用于根據(jù)所述地址數(shù)據(jù)構(gòu)建原始地址樹;
排序單元,用于對所述原始地址樹中具有相同父節(jié)點的每組兄弟節(jié)點分別進(jìn)行排序,并根據(jù)所述排序結(jié)果對所述兄弟節(jié)點的位置進(jìn)行調(diào)整,得到第二地址樹;
第二獲取單元,用于獲取所述兄弟節(jié)點之間相同的節(jié)點名稱前綴;
第二構(gòu)建單元,用于將所述相同的節(jié)點名稱前綴作為一個新節(jié)點的名稱,將所述新節(jié)點插入到所述第二地址樹中,并調(diào)整具有所述相同的節(jié)點名稱前綴的所述兄弟節(jié)點的名稱,得到第三地址樹;
地址要素關(guān)系單元,用于遍歷所述第三地址樹中的所有節(jié)點,根據(jù)所述第三地址樹中的各個節(jié)點名稱與所述各個節(jié)點的父節(jié)點名稱之間的關(guān)聯(lián)關(guān)系,生成地址要素關(guān)系表;
索引建立單元,用于在所述第三地址樹中建立節(jié)點名稱索引;
層次調(diào)整單元,用于根據(jù)所述地址要素關(guān)系表及所述節(jié)點索引,判斷是否存在需要調(diào)整位置的節(jié)點,若存在需要調(diào)整位置的節(jié)點,執(zhí)行調(diào)整算法后得到最終地址樹,若不存在需要調(diào)整位置的節(jié)點,直接將第三地址樹輸出為最終地址樹。
在本發(fā)明實施例中,將原始地址樹中的各個兄弟節(jié)點進(jìn)行排序以獲取相同的節(jié)點名稱前綴,使得地址樹能夠利用相同的節(jié)點名稱前綴形成新節(jié)點,增強(qiáng)了地址數(shù)據(jù)管理的層次性,通過建立地址要素關(guān)系表及節(jié)點索引,能夠?qū)χ孛?jié)點的錯誤層次關(guān)系進(jìn)行糾正處理,提高了中文地址結(jié)構(gòu)化的準(zhǔn)確性,因整個地址樹的建立過程由各個處理單元自動識別完成,無須通過人工的方式實現(xiàn),提高了中文地址數(shù)據(jù)的管理效率。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實施例提供的中文地址樹構(gòu)建方法的實現(xiàn)流程圖;
圖2是本發(fā)明實施例提供的中文地址樹構(gòu)建方法S102的具體實現(xiàn)流程圖;
圖3是本發(fā)明實施例提供的中文地址樹構(gòu)建方法S102的一個實施示例圖;
圖4是本發(fā)明實施例提供的中文地址樹構(gòu)建方法S102的另一實施示例圖;
圖5是本發(fā)明實施例提供的中文地址樹構(gòu)建方法S103的實施示例圖;
圖6是本發(fā)明實施例提供的中文地址樹構(gòu)建方法S105的具體實現(xiàn)流程圖;
圖7是本發(fā)明實施例提供的中文地址樹構(gòu)建方法S105的實施示例圖;
圖8是本發(fā)明實施例提供的中文地址樹構(gòu)建方法S108的具體實現(xiàn)流程圖;
圖9是本發(fā)明實施例提供的中文地址樹構(gòu)建方法S108對應(yīng)的第三地址樹調(diào)整為最終地址樹的一個效果圖;
圖10是本發(fā)明實施例提供地址樹構(gòu)建方法S108對應(yīng)的第三地址樹調(diào)整為最終地址樹的另一效果圖;
圖11是本發(fā)明實施例提供的中文地址樹構(gòu)建裝置的結(jié)構(gòu)框圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
圖1示出了本發(fā)明實施例提供的中文地址樹構(gòu)建方法的實現(xiàn)流程,詳述如下:
在S101中,獲取地址數(shù)據(jù)。
在本實施例中,地址數(shù)據(jù)為用于表達(dá)指定地點地理位置的文本地址的集合,可以為包含有各種存儲格式的多條地址信息的集合。
包含有一條或多條地址信息的地址數(shù)據(jù)預(yù)先存儲于系統(tǒng)中,在建立地址樹時,直接讀取已經(jīng)存在的地址數(shù)據(jù);或者,在構(gòu)建地址樹時,實時從其他信息系統(tǒng)中搜集或調(diào)用地址數(shù)據(jù)。所述其他信息系統(tǒng)包含但不限于土地資源信息調(diào)查系統(tǒng)、社保系統(tǒng)以及人居委信息系統(tǒng)等。
在S102中,根據(jù)所述地址數(shù)據(jù)構(gòu)建原始地址樹。
在地址樹構(gòu)建之前,所有地址數(shù)據(jù)均處于非標(biāo)準(zhǔn)結(jié)構(gòu)化的狀態(tài)。對于地址數(shù)據(jù)中的每一條地址信息,依照地址元素的空間約束關(guān)系,將其構(gòu)建成以層次化樹形結(jié)構(gòu)存儲的原始地址樹。所述原始地址樹為地址樹構(gòu)建時的初始狀態(tài),通常包含有許多重名節(jié)點,且各條分支路徑相對較短或者具有較為冗余的節(jié)點名稱。每個節(jié)點代表地址數(shù)據(jù)中具有實際地理意義的地址實體,處于上下層位置的相鄰節(jié)點的父子關(guān)系表達(dá)了地址實體在地理空間中的上下級關(guān)系或大小關(guān)系。對于原始地址樹或處于任意時刻狀態(tài)下的地址樹來說,每個節(jié)點包含有自身的節(jié)點名稱、子節(jié)點集合及父節(jié)點信息。
在S103中,對所述原始地址樹中具有相同父節(jié)點的每組兄弟節(jié)點分別進(jìn)行排序,并根據(jù)所述排序結(jié)果對所述兄弟節(jié)點的位置進(jìn)行調(diào)整,得到第二地址樹。
在地址樹同一層次的節(jié)點中,具有相同父節(jié)點的所有節(jié)點互為兄弟節(jié)點。對所述原始地址樹中具有相同父節(jié)點的每組兄弟節(jié)點分別進(jìn)行排序,即在每一組兄弟節(jié)點的內(nèi)部對各個節(jié)點進(jìn)行排序。
例如,在地址樹中,節(jié)點A與節(jié)點B的父節(jié)點均為節(jié)點C,節(jié)點D與節(jié)點E的父節(jié)點均為節(jié)點F,則節(jié)點A與節(jié)點B為第一組兄弟節(jié)點,節(jié)點D與節(jié)點E為第二組兄弟節(jié)點。在每一組兄弟節(jié)點的內(nèi)部對各個節(jié)點進(jìn)行排序,即在節(jié)點A與節(jié)點B兩者之間進(jìn)行排序,在節(jié)點D與節(jié)點E兩者之間進(jìn)行排序,兩組兄弟節(jié)點的排序結(jié)果相互獨立。
所述排序依照預(yù)設(shè)的排序算法進(jìn)行,可以按照節(jié)點中的某個或某些關(guān)鍵值的大小進(jìn)行升序或降序等操作,使得將一個任意的兄弟節(jié)點序列,重新排列成一個關(guān)鍵字有序的節(jié)點序列。依照排序結(jié)果,調(diào)整每組兄弟節(jié)點之間的左右位置關(guān)系。所述原始地址樹經(jīng)過上述節(jié)點位置調(diào)整步驟后,形成了第二地址樹。
在S104中,獲取兄弟節(jié)點之間相同的節(jié)點名稱前綴。
在本實施例中,從兄弟節(jié)點的節(jié)點名稱的起始字符開始,利用正向最大匹配算法將節(jié)點名稱中相同的部分提取出來,所述節(jié)點名稱相同的部分為節(jié)點名稱前綴。
具體地,該相同的節(jié)點名稱前綴僅為具有地址實體意義的名詞,不包括單字符等不具備地址含義的字詞部分。
在S105中,將所述相同的節(jié)點名稱前綴作為一個新節(jié)點的名稱,將所述新節(jié)點插入到所述第二地址樹中,并調(diào)整具有所述相同的節(jié)點名稱前綴的所述兄弟節(jié)點的名稱,得到第三地址樹。
通過S104將各個兄弟節(jié)點的名稱中相同的部分提取出來后,構(gòu)建第二地址樹的一個新節(jié)點,且該新節(jié)點的名稱為所述相同的節(jié)點名稱前綴。由于新節(jié)點的出現(xiàn),需要將其插入到第二地址樹中合適的位置,作為一個分支中的某個節(jié)點,使該新節(jié)點能夠展現(xiàn)出新的地址結(jié)構(gòu)層次關(guān)系。
在本發(fā)明實施例中,為了在地址分詞或者地址篩選時能夠有較高的地址匹配效率,將具有相同的節(jié)點名稱前綴的所述兄弟節(jié)點的名稱進(jìn)行調(diào)整,簡化各層節(jié)點的節(jié)點信息,實現(xiàn)地址的精確、快速查找。該名稱調(diào)整過程可看作是,將已被提取出來的相同的節(jié)點名稱前綴去除,保留兄弟節(jié)點各自剩余的節(jié)點名稱部分。
第二地址樹經(jīng)過上述的節(jié)點名稱修改及節(jié)點位置調(diào)整后,形成第三地址樹。
在S106中,遍歷所述第三地址樹中的所有節(jié)點,根據(jù)所述第三地址樹中的各個節(jié)點名稱與所述各個節(jié)點的父節(jié)點名稱之間的關(guān)聯(lián)關(guān)系,生成地址要素關(guān)系表。
依據(jù)第三地址樹的層次結(jié)構(gòu),獲取每一個節(jié)點的名稱以及該節(jié)點對應(yīng)的父節(jié)點的名稱,根據(jù)兩者之間對應(yīng)的父子關(guān)系,可生成包含多對父子關(guān)系節(jié)點信息的地址要素關(guān)系表。
由于可能存在節(jié)點位置不同,但節(jié)點名稱相同的多個節(jié)點,因而在地址要素關(guān)系表中,一個節(jié)點名稱可能對應(yīng)一個或者多個父節(jié)點的名稱。
對于包含有數(shù)字或者英文的地址實體分詞,且以該分詞為父節(jié)點名稱時,地址要素關(guān)系表不記錄該父節(jié)點與其子節(jié)點的關(guān)聯(lián)情況。
S107,在所述第三地址樹中,以鍵名對應(yīng)鍵值的模式建立節(jié)點名稱索引,鍵名為所述節(jié)點名稱,鍵值為所述第三地址樹中所述節(jié)點名稱等于鍵名的所有節(jié)點的集合。
鍵名對應(yīng)鍵值的模式即為key-value模式,根據(jù)所述節(jié)點名稱索引,能夠快速獲取每個節(jié)點名稱對應(yīng)的所有節(jié)點的信息,可以包括重名節(jié)點的數(shù)目及位置狀況。
在S108中,根據(jù)所述地址要素關(guān)系表及所述節(jié)點索引,判斷是否存在需要調(diào)整位置的節(jié)點,若存在需要調(diào)整位置的節(jié)點,執(zhí)行調(diào)整算法后得到最終地址樹,若不存在需要調(diào)整位置的節(jié)點,直接將第三地址樹輸出為最終地址樹。
通過所述地址要素關(guān)系表所記錄的各節(jié)點名稱及其對應(yīng)父節(jié)點名稱之間的關(guān)系情況以及所述節(jié)點索引中各節(jié)點名稱對應(yīng)的所有節(jié)點信息,利用預(yù)設(shè)的檢測算法可獲知,對于某個節(jié)點來說,是否存在相同名稱的其他節(jié)點,且相同名稱的其他節(jié)點是否位于相同的分支,根據(jù)上述檢測結(jié)果可判斷出是否存在需要調(diào)整位置的節(jié)點。
經(jīng)過節(jié)點位置調(diào)整算法計算后,合并符合調(diào)整條件的相同名稱節(jié)點的位置,保留不符合調(diào)整條件的相同名稱節(jié)點的位置,以確認(rèn)地址樹中所有節(jié)點的層次位置均無錯誤,并得到處理過程結(jié)束后的最終地址樹。
在本發(fā)明實施例中,將原始地址樹中的各個兄弟節(jié)點進(jìn)行排序以獲取相同的節(jié)點名稱前綴,使得地址樹能夠利用相同的節(jié)點名稱前綴形成新節(jié)點,增強(qiáng)了地址數(shù)據(jù)管理的層次性,通過建立地址要素關(guān)系表及節(jié)點索引,能夠?qū)χ孛?jié)點的錯誤層次關(guān)系進(jìn)行糾正處理,提高了中文地址結(jié)構(gòu)化的準(zhǔn)確性,因整個地址樹的建立過程由各個處理單元自動識別完成,無須通過人工的方式實現(xiàn),提高了中文地址數(shù)據(jù)的管理效率。
圖2示出了本發(fā)明實施例提供的中文地址樹構(gòu)建方法S102的具體實現(xiàn)流程,詳述如下:
在S201中,建立根節(jié)點。
地址樹的構(gòu)建主要服務(wù)于特定地理區(qū)域的地址數(shù)據(jù),用作對該區(qū)域海量的地址數(shù)據(jù)進(jìn)行管理。根節(jié)點作為地址樹中所有節(jié)點的祖先,在整個樹形初始模型開始構(gòu)造之前應(yīng)當(dāng)設(shè)立完成。
根據(jù)數(shù)據(jù)管理員的自定義選擇,由系統(tǒng)完成根節(jié)點的設(shè)立過程。根據(jù)對需要進(jìn)行地址數(shù)據(jù)收集及管理的區(qū)域,建立以該區(qū)域為名稱的根節(jié)點。例如以區(qū)域的省份名或城市名為根節(jié)點的名稱。此后所有的地址節(jié)點均作為所述根節(jié)點的子節(jié)點加入到地址樹中。
在S202中,若所述地址數(shù)據(jù)為原始地址數(shù)據(jù),則將所述原始地址數(shù)據(jù)作為一個新節(jié)點,并將所述新節(jié)點作為所述根節(jié)點的一級子節(jié)點。
地址數(shù)據(jù)未經(jīng)任何分詞處理即輸入到本系統(tǒng)中,以進(jìn)行結(jié)構(gòu)化的層次地址樹構(gòu)建,則整條地址數(shù)據(jù)將直接作為地址樹的一個新節(jié)點的名稱,且該節(jié)點在地址樹中的節(jié)點深度為2,即作為所述根節(jié)點的下層子節(jié)點。
作為本發(fā)明實施例的一個示例,假設(shè)原始地址數(shù)據(jù)有4條,分別為“阿婆山荔枝林樓”、“阿婆山垃圾場公廁”、“阿婆山垃圾場處理站”及“阿婆山荔枝林林平房”,且預(yù)先設(shè)置的根節(jié)點為“維亞市”,則每條原始地址數(shù)據(jù)對應(yīng)的新節(jié)點以及構(gòu)成的原始地址樹如圖3所示。
在S203中,若所述地址數(shù)據(jù)已經(jīng)經(jīng)過分詞化處理,且包含多個地址實體名詞,則所述每個地址實體名詞對應(yīng)一個新節(jié)點,且排序最前的所述地址實體名詞對應(yīng)的新節(jié)點作為所述根節(jié)點的一級子節(jié)點,排序在后的所述地址實體名詞依次形成排序在前的所述地址實體分詞對應(yīng)的新節(jié)點的一級子節(jié)點。
地址數(shù)據(jù)是由其他信息系統(tǒng)中獲取時,往往已經(jīng)經(jīng)過一些初步的地址文本處理流程,主要為對地址數(shù)據(jù)進(jìn)行分詞處理,以獲取多個包含地址實體意義的名詞。此時的地址數(shù)據(jù)不屬于原始地址數(shù)據(jù),且每個地址實體名詞依照由前往后的次序排列成一條地址信息。
將每個地址實體名詞作為一個新節(jié)點的名稱,以第一個地址實體名詞對應(yīng)的新節(jié)點作為上述根節(jié)點的一級子節(jié)點,后面的地址實體名詞對應(yīng)的新節(jié)點依次作為該一級子節(jié)點的下層節(jié)點,次序越后的實體名詞,其節(jié)點深度越大,在地址樹中的位置層次越深。
作為本發(fā)明實施例的另一個實施示例,已經(jīng)經(jīng)過分詞化處理的地址數(shù)據(jù)為“馬鞍山|蘋果林|樓”,則每個分詞均含有地址實體意義。在本實施示例中,第一個地址實體名詞為“馬鞍山”,其位于“蘋果林”的前面,“蘋果林”位于“樓”的前面,且根節(jié)點仍為“維亞市”。因此,根據(jù)這條地址數(shù)據(jù)構(gòu)建的原始地址樹如圖4所示。
作為本發(fā)明的另一實施例,S103具體包括:
以所述每組兄弟節(jié)點中的每個節(jié)點的拼音名稱首字母作為排序比較對象,依照字母表順序,對所述每個節(jié)點進(jìn)行升序排列;
若所述排序比較對象相同,則依次將所述排序比較對象的下一個字母替換為所述排序比較對象,并依照字母表順序,對所述每個節(jié)點進(jìn)行升序排列。
由于本發(fā)明實施例中的地址樹為中文地址樹,各兄弟節(jié)點的名稱基于中文地址命名,為了獲取一個具有排序意義的關(guān)鍵字,取各個兄弟節(jié)點的拼音名稱中的首字母來作為排序比較對象。依照字母表中A至Z的排列順序?qū)Ω鱾€兄弟節(jié)點的首字母進(jìn)行升序比較,在兄弟節(jié)點之間能得到一個排序的結(jié)果。
特別地,當(dāng)排序過程中出現(xiàn)兩個兄弟節(jié)點的拼音名稱首字母相同時,無法依照上述規(guī)則進(jìn)行比較,因而將拼音名稱中首字母的下一個字母作為排序比較對象。若仍出現(xiàn)字母相同的情況,再取當(dāng)前字母比較對象的下一個字母作比較,直至得出排序結(jié)果,并依照排序結(jié)果調(diào)整節(jié)點的位置,獲得第二地址樹。
圖5作為本發(fā)明實施例的實現(xiàn)示例,經(jīng)過上述排序處理后,兄弟節(jié)點“阿婆山荔枝林樓”與“阿婆山垃圾場處理站”的位置發(fā)生了互換,圖5下方所示地址樹即為本示例中的第二地址樹。
作為本發(fā)明的另一個實施例,圖6示出了中文地址樹構(gòu)建方法S105的具體實現(xiàn)流程,包括:
在S601中,將所述新節(jié)點插入到所述具有相同節(jié)點名稱前綴的所述兄弟節(jié)點與所述兄弟節(jié)點的父節(jié)點之間。
在S602中,在所述兄弟節(jié)點的名稱中,刪除所述相同的節(jié)點名稱前綴。
本發(fā)明實施例的實現(xiàn)過程可以由圖7所示的現(xiàn)例來展示,圖7上方表示為第二地址樹,為了便于描述,以數(shù)字標(biāo)記地址樹的節(jié)點。
通過正向最大匹配算法,得到互為兄弟節(jié)點的節(jié)點1與節(jié)點2的相同節(jié)點名稱前綴為“阿婆山垃圾場”,互為兄弟節(jié)點的節(jié)點3與節(jié)點4的相同節(jié)點名稱前綴為“阿婆山荔枝林”,則構(gòu)建出兩個新節(jié)點的名稱分別為“阿婆山垃圾場”和“阿婆山荔枝林”。
節(jié)點1至節(jié)點4的父節(jié)點為“維亞市”,依照步驟S601,先將新節(jié)點“阿婆山垃圾場”插入到“維亞市”與節(jié)點1、2之間,新節(jié)點“阿婆山荔枝林”插入到“維亞市”與節(jié)點3、4之間,因而節(jié)點1、2、3、4的節(jié)點深度全部加一。
依照步驟S602,將節(jié)點1和節(jié)點2中的相同的節(jié)點名稱前綴“阿婆山垃圾場”刪除,分別得到節(jié)點5和節(jié)點6所示的名稱;將節(jié)點3和節(jié)點4中的相同的節(jié)點名稱前綴“阿婆山荔枝林”刪除,分別得到節(jié)點7和節(jié)點8所示的名稱。
圖7下方得到的地址樹為第三地址樹。
圖8示出了本發(fā)明實施例提供的中文地址樹構(gòu)建方法S108的具體實現(xiàn)流程,詳述如下:
S801,當(dāng)所述節(jié)點索引的一個鍵值包含多個節(jié)點元素時,獲取所述鍵值對應(yīng)的所述鍵名,所述多個節(jié)點元素互為節(jié)點名稱相同的節(jié)點。
由于Value為所述第三地址樹中所述節(jié)點名稱等于鍵名的所有節(jié)點的集合,因此,當(dāng)所述節(jié)點索引中的所有鍵值均只包含一個節(jié)點元素時,該節(jié)點沒有重名節(jié)點,因而無須對其進(jìn)行位置調(diào)整。
當(dāng)所述節(jié)點索引中出現(xiàn)有一個鍵值包含多個節(jié)點元素時,因節(jié)點索引的結(jié)構(gòu)為Key-Value模式,故該鍵值可唯一對應(yīng)一個鍵名,該鍵名為所述多個節(jié)點元素的共同節(jié)點名稱,這些節(jié)點元素互為重名節(jié)點。
S802,在所述地址要素關(guān)系表中,若所述鍵名表示的節(jié)點名稱存在唯一的父節(jié)點名稱,且所述節(jié)點名稱相同的各節(jié)點對應(yīng)的各個父節(jié)點不是相同節(jié)點時,獲取子節(jié)點數(shù)目最少的所述節(jié)點名稱相同的節(jié)點對應(yīng)的第一父節(jié)點,所述第一父節(jié)點的第一子節(jié)點屬于所述節(jié)點名稱相同的節(jié)點。
地址要素關(guān)系表記錄各節(jié)點名稱與其父節(jié)點名稱之間的關(guān)系,但對于包含有數(shù)字或者英文的地理實體分詞的父節(jié)點名稱,地址要素關(guān)系表并不記錄,因此,對于兩個位置不同的重名節(jié)點來說,即使對應(yīng)的真實父節(jié)點不相同,但在地址要素關(guān)系表中仍可以對應(yīng)相同的父節(jié)點名稱。
當(dāng)所述鍵名表示的節(jié)點名稱存在唯一的父節(jié)點名稱,且所述節(jié)點名稱相同的各節(jié)點對應(yīng)的各個父節(jié)點不是相同節(jié)點時,分別獲取N個重名節(jié)點的N個第一父節(jié)點的子節(jié)點數(shù),判斷得出子節(jié)點數(shù)最少的第一父節(jié)點,確認(rèn)其在地址樹中的位置。
例如,節(jié)點1與節(jié)點2為重名節(jié)點,則需要獲取節(jié)點1的父節(jié)點3的子節(jié)點總數(shù),以及節(jié)點2的父節(jié)點4的子節(jié)點總數(shù),在父節(jié)點3與父節(jié)點4中,若確認(rèn)父節(jié)點3為子節(jié)點數(shù)最少的父節(jié)點,則第一子節(jié)點為節(jié)點1,且需要獲取父節(jié)點3在地址樹中的具體位置。
S803,將所述節(jié)點名稱相同的所有節(jié)點與所述第一子節(jié)點合并,得到最終地址樹。
以第一子節(jié)點為目標(biāo)節(jié)點,將節(jié)點名稱相同的所有節(jié)點合并至該目標(biāo)節(jié)點,連接各個重名節(jié)點的子分支隨重名節(jié)點而移動,保證各個重名節(jié)點的子分支的父節(jié)點名稱不改變。
作為本發(fā)明實施例的一個實施示例,如圖9所示,節(jié)點1與節(jié)點3為名稱相同的節(jié)點,根據(jù)步驟S802可知,節(jié)點3為目標(biāo)節(jié)點,因而將節(jié)點1合并至節(jié)點3中,因重名節(jié)點1的子分支包含有節(jié)點2,故為了保證該子分支的父節(jié)點名稱仍為“海關(guān)驗證道”不改變,節(jié)點2隨節(jié)點3一起移動,最終形成圖9右側(cè)所示的最終地址樹。
S804,在所述地址要素關(guān)系表中,若所述鍵名表示的節(jié)點名稱存在多個父節(jié)點名稱時,獲取子節(jié)點數(shù)目最少的所述節(jié)點名稱相同的節(jié)點對應(yīng)的第二父節(jié)點,所述第二父節(jié)點的第二子節(jié)點屬于所述節(jié)點名稱相同的節(jié)點。
具體地,S804對應(yīng)的實際狀況為,同一路徑下出現(xiàn)節(jié)點名稱相同的兩個節(jié)點。
S805,將所述節(jié)點名稱相同的所有節(jié)點與所述第二子節(jié)點合并,得到最終地址樹。
S804與S805中的節(jié)點位置調(diào)整原理與S802和S803的實現(xiàn)原理相一致,因此不贅述。
圖10示出了本發(fā)明實施例提供地址樹構(gòu)建方法S108對應(yīng)的第三地址樹調(diào)整為最終地址樹的效果。左側(cè)為第三地址樹,其同一路徑下出現(xiàn)了節(jié)點名稱均為“海關(guān)驗證道”的兩個節(jié)點,經(jīng)過合并調(diào)整后糾正了層次錯亂的重名節(jié)點,并得到了右側(cè)的最終地址樹。
本發(fā)明實施例根據(jù)地址要素關(guān)系表及節(jié)點索引之間的關(guān)系,能夠識別當(dāng)前地址樹中具有錯亂層次的重名節(jié)點,并對其位置進(jìn)行糾正處理,確保最終地址樹能夠準(zhǔn)確地組織中文地址數(shù)據(jù),實現(xiàn)精確的層次化管理,提高了中文地址結(jié)構(gòu)化的準(zhǔn)確性。
圖11示出了本發(fā)明實施例提供的中文地址樹構(gòu)建裝置的結(jié)構(gòu)框圖,該裝置可以位于各種智能終端設(shè)備中,用于運行本發(fā)明圖1至圖10實施例所述的中文地址樹構(gòu)建方法。為了便于說明,僅示出了與本實施例相關(guān)的部分。
參照圖11,該裝置包括:
第一獲取單元111,用于獲取地址數(shù)據(jù)。
第一構(gòu)建單元112,用于根據(jù)所述地址數(shù)據(jù)構(gòu)建原始地址樹。
排序單元113,用于對所述原始地址樹中具有相同父節(jié)點的每組兄弟節(jié)點分別進(jìn)行排序,并根據(jù)所述排序結(jié)果對所述兄弟節(jié)點的位置進(jìn)行調(diào)整,得到第二地址樹。
第二獲取單元114,用于獲取兄弟節(jié)點之間相同的節(jié)點名稱前綴。
第二構(gòu)建單元115,用于將所述相同的節(jié)點名稱前綴作為一個新節(jié)點的名稱,將所述新節(jié)點插入到所述第二地址樹中,并調(diào)整具有所述相同的節(jié)點名稱前綴的所述兄弟節(jié)點的名稱,得到第三地址樹。
地址要素關(guān)系單元116,用于遍歷所述第三地址樹中的所有節(jié)點,根據(jù)所述第三地址樹中的各個節(jié)點名稱與所述各個節(jié)點的父節(jié)點名稱之間的關(guān)聯(lián)關(guān)系,生成地址要素關(guān)系表。
索引建立單元117,用于在所述第三地址樹中,以鍵名對應(yīng)鍵值的模式建立節(jié)點名稱索引,鍵名為節(jié)點名稱,鍵值為所述第三地址樹中所述節(jié)點名稱等于鍵名的所有節(jié)點的集合;
層次調(diào)整單元118,用于根據(jù)所述地址要素關(guān)系表及所述節(jié)點索引,判斷是否存在需要調(diào)整位置的節(jié)點,若存在需要調(diào)整位置的節(jié)點,執(zhí)行調(diào)整算法后得到最終地址樹,若不存在需要調(diào)整位置的節(jié)點,直接將第三地址樹輸出為最終地址樹。
可選地,所述第一構(gòu)建單元111包括:
根節(jié)點子單元,用于建立根節(jié)點;
新節(jié)點子單元,用于若所述地址數(shù)據(jù)為原始地址數(shù)據(jù),則將所述原始地址數(shù)據(jù)作為一個新節(jié)點,并將所述新節(jié)點作為所述根節(jié)點的一級子節(jié)點;
若所述地址數(shù)據(jù)已經(jīng)經(jīng)過分詞化處理,且包含多個地址實體名詞,則所述每個地址實體名詞對應(yīng)一個新節(jié)點,且排序最前的所述地址實體名詞對應(yīng)的新節(jié)點作為所述根節(jié)點的一級子節(jié)點,排序在后的所述地址實體名詞依次形成排序在前的所述地址實體分詞對應(yīng)的新節(jié)點的一級子節(jié)點。
可選地,所述排序單元113包括:
字母排序子單元,用于以所述每組兄弟節(jié)點中的每個節(jié)點的拼音名稱首字母作為排序比較對象,依照字母表順序,對所述每個節(jié)點進(jìn)行升序排列;
調(diào)整子單元,用于若所述排序比較對象相同,則依次將所述排序比較對象的下一個字母替換為所述排序比較對象,并依照字母表順序,對所述每個節(jié)點進(jìn)行升序排列。
可選地,所述第二構(gòu)建單元115還包括:
插入子單元,用于將所述新節(jié)點插入到具有所述相同的節(jié)點名稱前綴的所述兄弟節(jié)點與所述兄弟節(jié)點的父節(jié)點之間。
重命名子單元,用于在所述兄弟節(jié)點的名稱中,刪除所述相同的節(jié)點名稱前綴。
可選地,所述層次調(diào)整單元118包括:
獲取子單元,用于當(dāng)所述節(jié)點索引的一個鍵值包含多個節(jié)點元素時,獲取所述鍵值對應(yīng)的鍵名,所述多個節(jié)點元素互為節(jié)點名稱相同的節(jié)點;
合并子單元,用于在所述地址要素關(guān)系表中,若所述鍵名表示的節(jié)點名稱存在唯一的父節(jié)點名稱,且所述節(jié)點名稱相同的各節(jié)點對應(yīng)的各個父節(jié)點不是相同節(jié)點時,
獲取子節(jié)點數(shù)目最少的所述節(jié)點名稱相同的節(jié)點對應(yīng)的第一父節(jié)點,所述第一父節(jié)點的第一子節(jié)點屬于所述節(jié)點名稱相同的節(jié)點;
將所述節(jié)點名稱相同的所有節(jié)點與所述第一子節(jié)點合并,得到最終地址樹;
在所述地址要素關(guān)系表中,若所述鍵名表示的節(jié)點名稱存在多個父節(jié)點名稱時,
獲取子節(jié)點數(shù)目最少的所述節(jié)點名稱相同的節(jié)點對應(yīng)的第二父節(jié)點,所述第二父節(jié)點的第二子節(jié)點屬于所述節(jié)點名稱相同的節(jié)點;
將所述節(jié)點名稱相同的所有節(jié)點與所述第二子節(jié)點合并,得到最終地址樹。
在本發(fā)明實施例中,將原始地址樹中的各個兄弟節(jié)點進(jìn)行排序以獲取相同的節(jié)點名稱前綴,使得地址樹能夠利用相同的節(jié)點名稱前綴形成新節(jié)點,增強(qiáng)了地址數(shù)據(jù)管理的層次性,通過建立地址要素關(guān)系表及節(jié)點索引,能夠?qū)χ孛?jié)點的錯誤層次關(guān)系進(jìn)行糾正處理,提高了中文地址結(jié)構(gòu)化的準(zhǔn)確性,因整個地址樹的建立過程由各個處理單元自動識別完成,無須通過人工的方式實現(xiàn),提高了中文地址數(shù)據(jù)的管理效率。
本領(lǐng)域普通技術(shù)人員可以意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計算機(jī)軟件和電子硬件的結(jié)合來實現(xiàn)。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng)、裝置和單元的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。
在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的系統(tǒng)、裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。
所述功能如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機(jī)可讀取存儲介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機(jī)存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。