陳健鵬,陳 劍,佘祥榮,水新瑩,陳 剛
(長(zhǎng)三角信息智能創(chuàng)新研究院,安徽 蕪湖 241000)
地名地址作為智慧城市建設(shè)中最重要的基礎(chǔ)數(shù)據(jù)資源之一,如何從地址文本中挖掘其特征內(nèi)涵進(jìn)行規(guī)范化建設(shè),是直接影響智慧城市建設(shè)水平的關(guān)鍵因素。當(dāng)前對(duì)地名地址的研究主要有以下2類(lèi)方法:一類(lèi)是對(duì)單一非標(biāo)準(zhǔn)地址的匹配,這類(lèi)方法主要以基于字符串的方法和基于規(guī)則庫(kù)的方法為主;另一類(lèi)是基于已構(gòu)建的標(biāo)準(zhǔn)庫(kù)的地址匹配,這類(lèi)方法以基于文本統(tǒng)計(jì)特征的方法為主,如支持向量機(jī)[1,2]、最長(zhǎng)公共子串和編輯距離[3]等。然而這2類(lèi)方法均存在一定的問(wèn)題,對(duì)于規(guī)則庫(kù)來(lái)說(shuō),由于中文地址信息的整體結(jié)構(gòu)非常復(fù)雜,規(guī)則在處理錯(cuò)亂或缺失的地址問(wèn)題上,顯示出一定的局限性;而基于統(tǒng)計(jì)特征的方法雖然一定程度上規(guī)避了地址結(jié)構(gòu)復(fù)雜帶來(lái)的問(wèn)題,但標(biāo)準(zhǔn)地址庫(kù)的建立難度非常大。同時(shí),此類(lèi)方法對(duì)于具有復(fù)雜結(jié)構(gòu),或者包含冗余信息的地址不能起到很好的標(biāo)準(zhǔn)化作用,究其原因在于這些方法缺乏對(duì)地址的語(yǔ)義理解,不能很好地提取地址的語(yǔ)義特征。
針對(duì)這一問(wèn)題,本文提出一種基于注意力(Attention)機(jī)制和Bi-LSTM-CNN(Bidirectional Long Short-Term Memory-Convolutional Neural Network)的地名地址匹配算法,首先利用Trie語(yǔ)法樹(shù)構(gòu)建標(biāo)準(zhǔn)地址樹(shù);接著運(yùn)用雙向長(zhǎng)短期記憶網(wǎng)絡(luò)Bi-LSTM(Bidirectional Long Short-Term Memory)[4]和卷積神經(jīng)網(wǎng)絡(luò)CNN(Convolutional Neural Network)[5]模型對(duì)地址進(jìn)行表征,并在整合2個(gè)通道的信息后引入注意力機(jī)制,補(bǔ)充上下文的相關(guān)信息,以此進(jìn)一步提高語(yǔ)義表征的準(zhǔn)確性;最后對(duì)2組表征信息計(jì)算相應(yīng)的曼哈頓距離,得到地址對(duì)中2條地址的相似度信息。
本文貢獻(xiàn)有如下幾點(diǎn):
(1)提出了一種基于深度學(xué)習(xí)與語(yǔ)法樹(shù)規(guī)則相結(jié)合的地址語(yǔ)義相似度匹配算法,結(jié)合已有知識(shí)與深度學(xué)習(xí)方法有效提升了地址匹配的準(zhǔn)確率。
(2)提出了一種基于Bi-LSTM與CNN融合網(wǎng)絡(luò)的地址字符串的語(yǔ)義向量表示模型。同時(shí)引入了注意力機(jī)制,為較為重要的地址元素分配較高的權(quán)重,突出地址的重要特征。
早期對(duì)地址標(biāo)準(zhǔn)化的研究方法主要集中于字符相似性上,從某一度量維度計(jì)算要匹配的地名地址之間的字符串相似性,然后通過(guò)手動(dòng)設(shè)定閾值或使用分類(lèi)器(支持向量機(jī)等)來(lái)確定他們是否匹配以做出決策。Levenshtein等[6,7]提出的編輯距離方法將相似性定義為由一個(gè)地址字符串轉(zhuǎn)換為另一個(gè)地址字符串所需的字符編輯操作的最小數(shù)量,以此計(jì)算2個(gè)地址的相似度。Jaccard[8]提出的方法則通過(guò)計(jì)算2個(gè)地址的局部相似度,在短地址匹配上獲得了更為精確的效果[9],但在地址要素缺失的情況下匹配效果不佳。之后基于向量空間的N-gram方法[10]被提出,其通過(guò)將待匹配的地址轉(zhuǎn)換為同一向量空間中的向量對(duì),利用余弦相似度[11]等計(jì)算方法計(jì)算二者之間的相似度,在提升效果的同時(shí)提高了對(duì)地址要素差異的容錯(cuò)度。
隨著多樣化的地址記錄快速增加,上述相似度度量方法逐漸難以應(yīng)對(duì)大量非標(biāo)準(zhǔn)化的地址記錄,因而基于地址要素解析的地址匹配方法被提出,根據(jù)地址元素的層次結(jié)構(gòu)構(gòu)建類(lèi)似語(yǔ)法樹(shù)的結(jié)構(gòu),利用與語(yǔ)法樹(shù)的匹配確定地址記錄中的地址要素,進(jìn)而確定地址對(duì)是否匹配[12]。針對(duì)中文地址,地址要素的獲取主要分為利用字典、概率分布(條件隨機(jī)場(chǎng)[13]、隱馬爾可夫模型[14]、詞頻-逆文本頻率TF-IDF[15]等)或自然語(yǔ)言分詞工具(Jieba、清華中文分詞工具包THULAC(THU Lexical Analyzer for Chinese)[16]等)進(jìn)行分詞,以及與現(xiàn)有的地址層次結(jié)構(gòu)進(jìn)行對(duì)比2個(gè)階段。薛兵兵等[17]提出的基于規(guī)則與詞典的地址匹配算法,使用地址要素特征詞與地址特征詞典從非標(biāo)準(zhǔn)地址中提取最有效匹配要素,但該算法依賴(lài)于地址要素的完備性,且規(guī)則的制定難度較大??道サ萚18]提出的基于地址樹(shù)模型的中文地址提取方法,以拓?fù)潢P(guān)系作為空間約束,從非標(biāo)準(zhǔn)地址中提取標(biāo)準(zhǔn)地址,但該方法無(wú)法羅列出所有的非標(biāo)準(zhǔn)地址和地名元素集合。為了處理這類(lèi)特殊情況,吳睿等[19]提出一種多策略結(jié)合的地址匹配算法,結(jié)合字符相似性和地址要素抽取策略,使用基于特征字詞典和序列標(biāo)注的方法與標(biāo)準(zhǔn)地址數(shù)據(jù)庫(kù)進(jìn)行匹配。
然而基于地址要素的方法在處理較長(zhǎng)的地址記錄時(shí),由于無(wú)法考慮到語(yǔ)義信息,在部分非標(biāo)準(zhǔn)地址信息重心分布不規(guī)律的情況下效果較差。為了解決這類(lèi)問(wèn)題,研究人員開(kāi)始將神經(jīng)網(wǎng)絡(luò)應(yīng)用在這一任務(wù)上,使用CNN[5]、循環(huán)神經(jīng)網(wǎng)絡(luò)RNN(Recurrent Neural Network)[20]、Bi-LSTM[4]或融合方法[21]等來(lái)表征地址的語(yǔ)義。Santos等[22]提出了一種多模型融合方法,使用RNN和門(mén)控循環(huán)單元GRU(Gate Recurrent Unit)進(jìn)行地址語(yǔ)義建模,相對(duì)于單一相似度度量及監(jiān)督學(xué)習(xí)的方法取得了不錯(cuò)的性能提升。Lai等[23]結(jié)合RNN與CNN模型的優(yōu)點(diǎn),提出區(qū)域卷積神經(jīng)網(wǎng)絡(luò)RCNN(Regions with CNN features)模型,使用雙向循環(huán)結(jié)構(gòu),在卷積層中嵌入一個(gè)雙向循環(huán)神經(jīng)網(wǎng)絡(luò)BiRNN(Bidirectional Recurrent Neural Network)結(jié)構(gòu),有效降低了網(wǎng)絡(luò)噪聲,最大化地提取出地址信息中的上下文信息。
綜上所述,基于神經(jīng)網(wǎng)絡(luò)的方法能有效解決地址匹配中對(duì)于語(yǔ)義信息的缺失和傳統(tǒng)方法中對(duì)于地址要素之間的各類(lèi)差異導(dǎo)致的效果欠佳問(wèn)題,但對(duì)于這類(lèi)模型,如何有效融合全局與局部范圍的上下文信息是一個(gè)重要的問(wèn)題。
本文根據(jù)地址的結(jié)構(gòu)特點(diǎn),提出了一種基于語(yǔ)義的地址匹配算法。該算法首先利用Trie樹(shù)構(gòu)建標(biāo)準(zhǔn)地址模型,判斷地址是否需要進(jìn)行匹配;然后利用一種融合注意力機(jī)制的地址語(yǔ)義模型對(duì)非標(biāo)準(zhǔn)地址進(jìn)行匹配,從標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)獲得最佳匹配地址。
中文地址由多個(gè)地址要素構(gòu)成,一個(gè)有效的地址要素應(yīng)該包括行政區(qū)劃名稱(chēng)、街路巷名、小區(qū)名、門(mén)址、標(biāo)志物名和興趣點(diǎn)名。當(dāng)前幾種常用的地址要素組合模型有:行政區(qū)劃+街路巷+門(mén)牌號(hào);行政區(qū)劃+小區(qū)(自然村)+門(mén)牌號(hào);行政區(qū)劃+(街路巷)+興趣點(diǎn)(標(biāo)志物)。行政區(qū)劃可以劃分為省、市、區(qū)(縣)、街道(鎮(zhèn))和社區(qū)(行政村)[24]。
Trie語(yǔ)法樹(shù)是一種樹(shù)形結(jié)構(gòu),是哈希樹(shù)的變種,一般應(yīng)用于統(tǒng)計(jì)和排序大量的字符串。與二叉樹(shù)不同,Trie語(yǔ)法樹(shù)的鍵不是直接保存在節(jié)點(diǎn)中,而是由節(jié)點(diǎn)在樹(shù)中的位置決定。它的優(yōu)點(diǎn)是最大限度地減少無(wú)謂的字符串比較,查詢(xún)效率比哈希表高。一個(gè)節(jié)點(diǎn)的所有子孫都有相同的前綴,該前綴就是這個(gè)節(jié)點(diǎn)對(duì)應(yīng)的字符串,而根節(jié)點(diǎn)對(duì)應(yīng)空字符串。一般情況下,不是所有的節(jié)點(diǎn)都有對(duì)應(yīng)的值,只有葉節(jié)點(diǎn)和部分內(nèi)部節(jié)點(diǎn)所對(duì)應(yīng)的鍵才有相關(guān)的值。
本文構(gòu)建了如圖1所示的Trie語(yǔ)法樹(shù),以提取地址中的元素,并列舉了幾類(lèi)常見(jiàn)的地址形式及覆蓋路徑(如表1所示)。對(duì)于第1類(lèi)地址,覆蓋路徑為A-B-C-D-E-G,無(wú)中間信息缺失,符合地名地址表達(dá)規(guī)范,在本文中屬于標(biāo)準(zhǔn)地址,不需要進(jìn)行匹配。對(duì)于其他幾類(lèi)地址,或多或少丟失了一些信息,屬于待匹配地址。對(duì)這類(lèi)地址,本文利用3.2節(jié)所述語(yǔ)義模型對(duì)其進(jìn)行匹配。
Figure 1 Trie grammar tree constructed for address element extraction圖1 針對(duì)地址要素提取構(gòu)建的Trie語(yǔ)法樹(shù)
Table 1 Several typical address coverage paths表1 幾類(lèi)常見(jiàn)地址覆蓋路徑
本文結(jié)合注意力機(jī)制,以及Bi-LSTM和CNN網(wǎng)絡(luò)的特點(diǎn)和優(yōu)勢(shì),根據(jù)中文地名地址的特點(diǎn),建立基于Attention-Bi-LSTM-CNN融合網(wǎng)絡(luò)的地址語(yǔ)義表征模型。本文將此模型稱(chēng)為SGAM(Symmetrical Geographic Address Matching)模型,主體算法描述如算法1所示。
算法1地址語(yǔ)義匹配算法
輸入:地址集合A,地址文本對(duì)(ai,aj),ai∈A,aj∈A。
輸出:2條地址的相似度sim(ai,aj)。
Step1初始化匹配結(jié)果數(shù)組sepResult為空;
Step2構(gòu)建語(yǔ)法樹(shù):
divisionTree←BuildTree(A)
Step3遍歷語(yǔ)法樹(shù)節(jié)點(diǎn)進(jìn)行地址元素匹配:
forelein [ai,aj]do
fornodeindivisionTreedo
ifheadof(ele,len(node))==node:
sepList←node;
ele.delete(node);
ifnode==LastNode(A):
sepList←ele;
sepResult←sepList;
Step4基于SGAM模型預(yù)測(cè)(ai,aj)相似度:
similarity←SGAM(sepResult[0],sepResult[1]);
sim(ai,aj)←similarity
語(yǔ)義模型接受地址對(duì)的輸入,并分別生成地址的語(yǔ)義向量表示,最后通過(guò)計(jì)算曼哈頓距離判斷地址對(duì)是否相似。模型結(jié)構(gòu)如圖2所示。SGAM模型由編碼模塊、語(yǔ)義表征模塊和語(yǔ)義距離計(jì)算模塊組成,下文對(duì)各模塊進(jìn)行詳細(xì)說(shuō)明。
Figure 2 Overall structure of SGAM model圖2 SGAM模型整體結(jié)構(gòu)圖
3.2.1 編碼模塊
編碼模塊主要將中文地址轉(zhuǎn)化為向量的形式,即將輸入地址映射成為m*n的矩陣。中文地址實(shí)際上是一種特殊的自然語(yǔ)言描述,中文的詞沒(méi)有形式上的分界符。在進(jìn)行詞編碼之前,需要對(duì)地址進(jìn)行分詞。而中文地址的分詞特殊性在于,更注重將地名地址分成各類(lèi)地址要素,每個(gè)地址要素相當(dāng)于中文分詞中的一個(gè)詞。本文采用Jieba的分詞算法,并且加載自定義分詞語(yǔ)料庫(kù)。分詞語(yǔ)料庫(kù)的構(gòu)建根據(jù)城市地名和地址的特殊性,補(bǔ)充Jieba分詞對(duì)未識(shí)別名稱(chēng)正確分詞。
假設(shè)地址a由N個(gè)詞組成,即a={a1,a2,…,aN},對(duì)于地址a中的每個(gè)詞,可以從詞向量字典Dw∈Rdw×lenv中查找到詞向量,其中,lenv是詞表中單詞的個(gè)數(shù),dw是詞向量的維度。詞向量字典Dw通過(guò)學(xué)習(xí)獲得,詞向量的維度dw根據(jù)需求設(shè)置。故地址a中的詞ai的向量如式(1)所示:
ei=DwVai
(1)
其中,Vai是一個(gè)長(zhǎng)度為lenv的獨(dú)熱向量,所有Vai的長(zhǎng)度均相等且都等于lenv,設(shè)詞ai在詞表中的位置是j,則Vai的第j維為1,其余維為0。
這樣,地址a的向量可表示為e={e1,e2,…,eN}。
本文限定每個(gè)地址a分詞之后的最大長(zhǎng)度N為20,詞表的大小lenv為10萬(wàn),詞向量的維度dw是300,即經(jīng)編碼層后每條地址映射成一個(gè)20×300矩陣,作為后續(xù)模塊的輸入。
3.2.2.1 Bi-LSTM模塊
LSTM是在RNN基礎(chǔ)上改進(jìn)而來(lái)的一種神經(jīng)網(wǎng)絡(luò)模型,可以解決長(zhǎng)期依賴(lài)問(wèn)題[19]。LSTM 神經(jīng)網(wǎng)絡(luò)使用輸入門(mén)、遺忘門(mén)和輸出門(mén)3種門(mén)結(jié)構(gòu),以保持和更新細(xì)胞中信息的增減。但是,單向LSTM只能處理一個(gè)方向上的信息,無(wú)法同時(shí)處理另外一個(gè)方向上的信息,雙向LSTM是為克服LSTM的不足而做的進(jìn)一步擴(kuò)展。本文使用雙向LSTM提取特征信息,更充分地學(xué)習(xí)地址特征。具體來(lái)說(shuō),使用2個(gè)不同的 LSTM神經(jīng)網(wǎng)絡(luò)層分別從中文地址的前端和后端進(jìn)行遍歷,這樣便能保存2個(gè)方向的地址信息,如圖3所示。其中Tokenri,Tokenrj,Tokenrk表示輸入的地址分詞,wordvector表示分詞對(duì)應(yīng)的詞向量,hi表示隱藏層輸出,concati表示2個(gè)網(wǎng)絡(luò)層融合后的輸出向量,V表示融合后的最終輸出。相對(duì)于單向 LSTM,Bi-LSTM 既能保存前面的上下文地址信息,又能考慮未來(lái)的上下文地址信息,更加完整地提取了地址的語(yǔ)義信息。
Figure 3 Structure of Bi-LSTM module圖3 Bi-LSTM模塊結(jié)構(gòu)
首先,遺忘門(mén)根據(jù)上一個(gè)記憶單元的輸出ht-1和輸入數(shù)據(jù)xt產(chǎn)生一個(gè)0~1的數(shù)值ft,來(lái)決定上一個(gè)長(zhǎng)期狀態(tài)Ct-1中丟失信息多少。ht-1和xt通過(guò)輸入門(mén)確定更新信息得到it,同時(shí)通過(guò)一個(gè)tanh層得到新的候選記憶單元信息C′t。通過(guò)遺忘門(mén)和輸入門(mén)的操作,將上一個(gè)長(zhǎng)期狀態(tài)Ct-1更新為Ct。最后,由輸出門(mén)得到判斷條件,然后通過(guò)一個(gè)Sigmod層得到一個(gè)(-1,1)的值ot,該值與判斷條件相乘,決定輸出當(dāng)前記憶單元的哪些狀態(tài)特征。Bi-LSTM的工作原理如式(2)~式(7)所示:
ft=σ(Wf·[ht-1,xt]+bf)
(2)
it=σ(Wi·[ht-1,xt]+bi)
(3)
C′t=tanh(Wc·[ht-1,xt]+bc)
(4)
Ct=ft*Ct-1+it*C′t
(5)
ot=σ(Wo·[ht-1,xt]+bo)
(6)
ht=ot*tanh(Ct)
(7)
其中,Wf、Wi、Wc和Wo分別為遺忘門(mén)、輸入門(mén)、控制門(mén)和輸出門(mén)的可學(xué)習(xí)權(quán)重矩陣,bf、bi、bc和bo分別為對(duì)應(yīng)的偏置矩陣,*表示哈達(dá)瑪積。
3.2.2.2 CNN模塊
卷積神經(jīng)網(wǎng)絡(luò)CNN在計(jì)算機(jī)視覺(jué)領(lǐng)域取得了不錯(cuò)的效果[25],其卷積核池化的過(guò)程實(shí)際上是一個(gè)特征提取的過(guò)程。CNN的總體思想是將整體的數(shù)據(jù)局部化,在每一個(gè)局部數(shù)據(jù)中利用卷積核函數(shù)提取特征,隨后重構(gòu)所有的碎片化特征,在目標(biāo)函數(shù)的指導(dǎo)下實(shí)現(xiàn)對(duì)數(shù)據(jù)整體信息的提取。
地址文本具有多地名性和層次性,即是由一連串的地理實(shí)體組成的文本,如“安徽省(省)蕪湖市(市)鳩江區(qū)(區(qū)縣)國(guó)泰路2號(hào)(街路巷)蕪湖數(shù)谷A座6樓(POI)”。中文描述地址的不同層級(jí)的變化和CNN分層卷積的應(yīng)用場(chǎng)景吻合。基于此,本文采用基于CNN的卷積模型對(duì)地址數(shù)據(jù)進(jìn)行特征提取,具體的卷積結(jié)構(gòu)如圖4所示:首先利用ZeroPadding1D對(duì)輸入詞向量矩陣的邊緣使用零值進(jìn)行填充;然后利用100個(gè)卷積核長(zhǎng)度為5的過(guò)濾器進(jìn)行卷積,即相當(dāng)于利用100×5×300的卷積核對(duì)嵌入層輸出矩陣進(jìn)行卷積操作,經(jīng)卷積操作后,可提取尺寸為20×5×300。再選用池化窗口大小為2的池化層對(duì)卷積出來(lái)的特征進(jìn)行采樣處理,最后輸出維度為20×100的向量,作為下一模塊的輸入。
Figure 4 Structure of CNN module圖4 CNN模塊結(jié)構(gòu)
3.2.2.3 Attention模塊
中文描述地址的習(xí)慣是將有意義的詞或者具體地址的詞放在前面進(jìn)行表述,因此應(yīng)該對(duì)每個(gè)詞賦予不同的權(quán)重。例如“第一村第一村民組”“第一小區(qū)6號(hào)1樓”“第一小區(qū)4區(qū)11棟1號(hào)”“第一商城E5-6”和“第一路第一小區(qū)1幢11號(hào)門(mén)面”。本文提出利用Attention機(jī)制表征地址的語(yǔ)義信息,通過(guò)分配不同的權(quán)重來(lái)使語(yǔ)義向量表示更豐富的語(yǔ)義信息。
定義H是輸入向量,本階段輸入向量由CNN和Bi-LSTM的輸出向量加權(quán)求和得到,相關(guān)公式說(shuō)明如下:
A′=tanh(H)
(8)
α=softmax(WTA′)
(9)
A″=HαT
(10)
其中,H∈Rdw×T,dw是詞向量的維度,W是通過(guò)訓(xùn)練獲得的權(quán)重矩陣,WT是其轉(zhuǎn)置,A″為經(jīng)過(guò)注意力機(jī)制之后得到的向量表示。
那么每個(gè)地址的最終向量表示如式(11)所示:
(11)
通過(guò)將經(jīng)過(guò)注意力機(jī)制生成的語(yǔ)義向量相加得到最終向量。
3.2.3 語(yǔ)義距離計(jì)算模塊
(12)
使用Sigmoid函數(shù)預(yù)測(cè)最終的相似度值,如式(13)所示:
y=Sigmoid(Md)
(13)
本文基于CUDA 10.0深度學(xué)習(xí)框架Keras 2.3.0構(gòu)建網(wǎng)絡(luò)模型,實(shí)驗(yàn)在內(nèi)存DDR4 32 GB,3.6 GHz i7-7700 Intel(R)Core(TM)CPU,NVIDIA GoForce GTX 1080 Ti的Ubuntu 18.04 LTS系統(tǒng)上進(jìn)行。
為了評(píng)估本文提出的SGAM模型的穩(wěn)定性,本文使用標(biāo)準(zhǔn)地址庫(kù)構(gòu)建了一個(gè)包含294 571個(gè)地址信息對(duì)的數(shù)據(jù)集,并在其后使用人工標(biāo)記的方法標(biāo)記了每個(gè)地址對(duì)中的2個(gè)地址是否相似,地址對(duì)舉例如表2所示。本文從該數(shù)據(jù)集中選取了10%的地址對(duì)組成測(cè)試集,其中包含7 364個(gè)相似地址對(duì)與22 095個(gè)非相似地址對(duì),正負(fù)樣本比例約為1∶3。對(duì)剩余的地址對(duì),采用十折交叉驗(yàn)證的策略進(jìn)行訓(xùn)練與驗(yàn)證。
Table 2 Address pairs in custom dataset表2 構(gòu)建數(shù)據(jù)集上的地址對(duì)
在數(shù)據(jù)預(yù)處理階段,將地址對(duì)中的2條地址進(jìn)行劃分后,使用第三方中文處理工具Jieba對(duì)地址進(jìn)行分詞??紤]到地址作為一種結(jié)構(gòu)特殊的短文本,可能包含大量的地名類(lèi)特有詞匯,在分詞時(shí)配合使用了自定義的停用詞表。
本文SGAM模型中使用word2vec模型作為語(yǔ)義表征模型,利用預(yù)定義詞表將地址對(duì)中的2條地址編碼后,將不足20維的句子編碼用0補(bǔ)足,而后將句子中的每個(gè)單詞表征為對(duì)應(yīng)詞向量,詞向量融合作為整個(gè)句子的向量表示。在超參數(shù)的設(shè)置上,考慮到地址可能的長(zhǎng)度,語(yǔ)義表征層中每一個(gè)詞輸出維度為768維,表征后輸出的2個(gè)地址語(yǔ)義表征維度均為100維,完成語(yǔ)義表征后,將獲得的2個(gè)語(yǔ)義向量分別輸入到下一層神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中。
在神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練過(guò)程中,本文設(shè)置的批處理大小為1 024,采用雙層的Bi-LSTM網(wǎng)絡(luò)與CNN分別作為獲取全局上下文信息與局部上下文信息的神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練,dropout設(shè)置為0.5,并將二者的輸出融合為x∈R25×100的特征矩陣送入自注意力網(wǎng)絡(luò),補(bǔ)充上下文位置的相關(guān)信息;最后輸出2個(gè)100維的表征向量作為地址對(duì)中2條地址的語(yǔ)義表征向量,并計(jì)算兩者之間的曼哈頓距離,經(jīng)過(guò)4層的全連接壓縮后輸出2個(gè)地址的相似度標(biāo)量sim。對(duì)SGAM模型,使用學(xué)習(xí)率為0.01,beta1為0.9,beta2為0.999,衰減率為0.1的Adam優(yōu)化器對(duì)模型進(jìn)行優(yōu)化,SGAM模型的具體參數(shù)如表3所示。
Table 3 Hyper parameter setting of SGAM model表3 SGAM模型訓(xùn)練參數(shù)設(shè)置
為了判斷相似度預(yù)測(cè)結(jié)果的有效性,本文選取了準(zhǔn)確率(accuracy)、精確率(precious)、召回率(recall)與F1得分(F1-score)作為評(píng)價(jià)指標(biāo)。其中準(zhǔn)確率越高,表明模型對(duì)于“相似/不相似”的判定結(jié)果越精確;而F1得分越高,表明模型整體性能越好。
4.4.1 消融實(shí)驗(yàn)分析/模型穩(wěn)定性驗(yàn)證
為了驗(yàn)證本文提出的SGAM模型中融合上下文及位置信息的判別模塊的穩(wěn)定性,實(shí)驗(yàn)中設(shè)計(jì)了多個(gè)去除SGAM部分結(jié)構(gòu)后的消融模型進(jìn)行對(duì)比實(shí)驗(yàn),3個(gè)消融模型及其實(shí)驗(yàn)結(jié)果對(duì)比如表4所示。以每50個(gè)訓(xùn)練樣本為一輪迭代,對(duì)各個(gè)模型的召回率和F1得分進(jìn)行記錄,2個(gè)指標(biāo)隨訓(xùn)練過(guò)程的變化趨勢(shì)如圖5所示。
Table 4 Experimental results on ablation models表4 消融模型及其實(shí)驗(yàn)結(jié)果
Figure 5 Preformance of different ablation models 圖5 消融模型判別性能對(duì)比(召回率和F1得分)
實(shí)驗(yàn)結(jié)果顯示,在召回率和F1得分方面,本文所提出的模型綜合表現(xiàn)最好且性能穩(wěn)定。在F1得分上,相比消融模型,SGAM模型性能提升了大約3%~10%,表明了在僅考慮Bi-LSTM獲得的全局上下文信息或者CNN獲得的局部信息時(shí),模型無(wú)法有效捕捉地址中的部分關(guān)鍵信息,導(dǎo)致模型的整體性能下降,而同時(shí)結(jié)合上下文全局信息與位置相關(guān)的局部信息后,模型的預(yù)測(cè)效果得到了有效提升。同時(shí),F(xiàn)1得分表明,SGAM模型的準(zhǔn)確率提升并非受到數(shù)據(jù)集中正負(fù)樣例的比例影響,而是模型的整體學(xué)習(xí)能力相較于其他消融模型確實(shí)獲得了增強(qiáng)。
4.4.2 對(duì)比實(shí)驗(yàn)分析/與基線(xiàn)模型實(shí)驗(yàn)對(duì)比
為了證明本文提出的模型相比其他主流模型能達(dá)到更好的效果,實(shí)驗(yàn)中選取了一些基線(xiàn)模型作為參照進(jìn)行性能對(duì)比??紤]到地址相似度判斷問(wèn)題簡(jiǎn)化成“相似”與“非相似”的結(jié)果判斷問(wèn)題后,可以將其看成一個(gè)文本二分類(lèi)任務(wù),因而將本文提出的模型與多個(gè)主流的文本分類(lèi)模型進(jìn)行了對(duì)比,包括深度學(xué)習(xí)模型與機(jī)器學(xué)習(xí)模型。
(1)與深度學(xué)習(xí)模型的對(duì)比。
由于可以將相似度問(wèn)題轉(zhuǎn)換為二分類(lèi)問(wèn)題,因而本文選取了部分分類(lèi)問(wèn)題的基線(xiàn)模型進(jìn)行對(duì)比,包括層數(shù)為3的多層感知機(jī)MLP(MultiLayer Perceptron)模型、以n-gram詞向量作為語(yǔ)義輸入并在隱藏層對(duì)所有向量進(jìn)行平均化處理的FastText模型[26]、將RNN與CNN進(jìn)行結(jié)合,使用雙向RNN獲取文本上下語(yǔ)義語(yǔ)法信息并使用最大池化自動(dòng)篩選最重要特征的TextRCNN模型,以及整合局部特征和全局信息的基于注意力卷積神經(jīng)網(wǎng)絡(luò)ABCNN(Attention Based Convolutional Neural Networks)模型[27]。預(yù)測(cè)結(jié)果對(duì)比如表5所示,其中部分指標(biāo)的變化趨勢(shì)對(duì)比如圖6所示。
從表5中可以看出,SGAM模型在判定效果上相比其他模型有不同程度的提升,其中,相比其他考慮語(yǔ)義信息的模型,SGAM模型在準(zhǔn)確率上有大約2%~10%的提升,表明本文模型在分類(lèi)效果上確實(shí)具有一定優(yōu)勢(shì)。
進(jìn)一步細(xì)化分析,從模型隨訓(xùn)練過(guò)程收斂的速度來(lái)看,F(xiàn)astText由于結(jié)構(gòu)較為簡(jiǎn)單明了,因而收斂到最優(yōu)效果的速度相對(duì)于其他幾個(gè)模型要快,但是由于TextRCNN利用雙向RNN獲取上下文信息,在信息獲取的全局性上相對(duì)FastText具備一定優(yōu)勢(shì),因而其分類(lèi)效果有較為明顯的提升。而ABCNN利用2個(gè)CNN模型對(duì)2個(gè)地址分別建模,而后引入注意力機(jī)制考慮2個(gè)地址之間的關(guān)系,加入了詞句間上下文信息,在信息抽取中融入了加權(quán)信息,因而效果相對(duì)前2個(gè)模型更好。而與SGAM模型相比,對(duì)比模型準(zhǔn)確率的差距約為4%~6%,差距相對(duì)較小。這一結(jié)果說(shuō)明,一方面,使用針對(duì)句子對(duì)分開(kāi)獲取上下文信息的語(yǔ)義提取方案相對(duì)于使用雙向整條語(yǔ)料來(lái)獲取上下文信息的方法有一定優(yōu)勢(shì),盡管RNN是一種偏序模型,雙向的RNN能彌補(bǔ)偏序模型在詞語(yǔ)的重要性分配上產(chǎn)生的問(wèn)題,但是會(huì)忽略句子對(duì)中二者的對(duì)比信息,因而在性能上會(huì)劣于SGAM模型;另一方面,引入注意力機(jī)制的位置也對(duì)模型的相關(guān)效果產(chǎn)生了影響。通過(guò)加入注意力機(jī)制而額外引入的位置相關(guān)信息,對(duì)模型整體的效果有一定提升,且在網(wǎng)絡(luò)中更合適的位置引入注意力機(jī)制對(duì)模型效果會(huì)有所提升,但提升效果較為有限。這一結(jié)論可以解釋為:地址作為一種基于一定規(guī)則的特殊文本信息,由于規(guī)則的確定性,其位置相關(guān)的語(yǔ)義信息分布往往較為統(tǒng)一,因而引入位置信息后,地址之間的信息差距已經(jīng)較小,對(duì)模型整體性能的提升影響并不是很大。
Table 5 Experimental results of comparative models表5 對(duì)比模型實(shí)驗(yàn)結(jié)果
Figure 6 Preformance comparison of comparative models 圖6 對(duì)比模型性能比較(召回率和F1得分)
(2)與機(jī)器學(xué)習(xí)模型的對(duì)比。
作為另一類(lèi)對(duì)比模型,實(shí)驗(yàn)中將部分常用的機(jī)器學(xué)習(xí)方法加入基線(xiàn)模型,包括支持向量機(jī)方法與邏輯回歸方法,并以相同指標(biāo)對(duì)這些基線(xiàn)模型的性能進(jìn)行了衡量。對(duì)比結(jié)果如表5后半部分所示。
對(duì)比結(jié)果顯示,相對(duì)于其他機(jī)器學(xué)習(xí)模型,盡管在訓(xùn)練時(shí)間方面機(jī)器學(xué)習(xí)方法具備較大優(yōu)勢(shì),但SGAM模型的預(yù)測(cè)性能在各個(gè)指標(biāo)上都有較為顯著的提升,表明SGAM模型引入的語(yǔ)義信息和位置信息能有效提升模型在相似性預(yù)測(cè)上的性能。
由于本文采用的是基于文本信息的地址語(yǔ)義相似度判斷,在碰到諸如表6所示的較為特殊的情況時(shí),盡管模型判定Address 1與Address 2的關(guān)系為“不相似”,但在實(shí)際情況中,Address 1中的主體與Address 2中的主體指代的是同一個(gè)建筑物,因而實(shí)際二者是同一個(gè)地址。
Table 6 A special case of failure determination表6 一種判定失敗的特殊情況
得到這樣的結(jié)果的可能原因是在訓(xùn)練集中沒(méi)有包含這類(lèi)關(guān)聯(lián)信息,亦或是缺乏相關(guān)的外部知識(shí)補(bǔ)充,模型無(wú)法找出存在部分關(guān)聯(lián)關(guān)系的主體。
針對(duì)目前出現(xiàn)的無(wú)法識(shí)別中文地址中冗余信息問(wèn)題,本文提出了一種基于BiLSTM與CNN的預(yù)測(cè)算法。實(shí)驗(yàn)結(jié)果顯示,所提出的算法在多個(gè)指標(biāo)上均有較好的效果。
對(duì)地址與地理實(shí)體之間的關(guān)聯(lián)進(jìn)行研究,并嘗試引入諸如地理信息圖譜類(lèi)的信息以增強(qiáng)識(shí)別的準(zhǔn)確度是下一步需要考慮的內(nèi)容。同時(shí),對(duì)未知的地址數(shù)據(jù)集的泛化能力也有待進(jìn)一步研究。