郭利榮
(中數(shù)通信息有限公司 廣東 廣州 510630)
隨著計(jì)算機(jī)網(wǎng)絡(luò)的發(fā)展與普及,許多傳統(tǒng)的信息處理方式因此而改變,大量原本以書面方式存在的文本信息,被轉(zhuǎn)換成數(shù)字信息進(jìn)行傳遞[1]。從而極大地提升了信息的存儲(chǔ)及傳輸效率,信息的總量爆炸式增加,然而具有價(jià)值的信息量并未隨信息總量同比增長(zhǎng),具有價(jià)值的信息在信息規(guī)模爆炸的情況下反而更加難以獲取。傳統(tǒng)的信息檢索方法無法有效地幫助使用者分析和理解規(guī)模巨大的文本數(shù)據(jù),因此產(chǎn)生了許多試圖從文本中獲取知識(shí)的研究[2-3]。
文本挖掘與數(shù)據(jù)挖掘?qū)Ρ?,其最大區(qū)別便是數(shù)據(jù)挖掘面向的數(shù)據(jù)集通常是結(jié)構(gòu)化的,而文本挖掘所面對(duì)的文本信息往往是非結(jié)構(gòu)化的[4-5]。文本挖掘最常見的對(duì)象就是網(wǎng)頁文本。文本挖掘常常使用的技術(shù)有自然語言處理、統(tǒng)計(jì)分析、概率模式、機(jī)器學(xué)習(xí)等,運(yùn)用及探究的方向主要有信息提取、文本摘要、信息過濾、對(duì)實(shí)體的標(biāo)注、意見分析、關(guān)系探索、情感分析、文本分類、文本聚類等。文本挖掘的目的就是從非結(jié)構(gòu)化的文字發(fā)掘出有用或是有趣的片段、模型、趨勢(shì)和規(guī)律[6-7]。
目前,想要獲取地址文本信息,主要來源是通過高德地圖、百度地圖等地理信息服務(wù)供應(yīng)商[8]。這些供應(yīng)商擁有開放的平臺(tái),可以獲取大量的地址文本信息及其對(duì)應(yīng)的地理信息。通過該平臺(tái)開放的逆地理編碼接口,使用隨機(jī)生成的地理位置坐標(biāo)信息,就能夠獲得大量的地址文本信息,這些地址文本信息是詳細(xì)且結(jié)構(gòu)化的。同時(shí)通過爬蟲從公開的媒體網(wǎng)站上獲取文本,用于構(gòu)建測(cè)試集。
馬爾可夫鏈(Markov chain,MC)來源于俄國(guó)數(shù)學(xué)家安德雷·安德耶維齊·馬爾可夫[9],其定義為以概率空間內(nèi)的一維可數(shù)集為指數(shù)集的隨機(jī)變量集合X ={Xn}(n>0),若隨機(jī)變量的取值均在可數(shù)集內(nèi),且隨機(jī)條件概率滿足式(1),可表示為:
式中:Xt+1。即第t+1個(gè)隨機(jī)變量的取值只與第t個(gè)變量有關(guān),對(duì)于一個(gè)MC,在給定過去的狀態(tài)為X0,X1,…,Xn-1和當(dāng)前的狀態(tài)為Xn時(shí),將來狀態(tài)Xn+1的條件分布獨(dú)立于過去的狀態(tài),只于當(dāng)前狀態(tài)Xn有關(guān)。
由于馬爾科夫限定的隨機(jī)變量取值在可數(shù)集內(nèi),就意味著MC的狀態(tài)是有限的,由此可以定義Pij作為從i狀態(tài)轉(zhuǎn)移到j(luò)狀態(tài)的概率,其公式可表示為:
由于概率非負(fù),且過程必須轉(zhuǎn)移到某個(gè)狀態(tài)(也可能轉(zhuǎn)移到自身),可表示為:
如果將每種狀態(tài)之間的轉(zhuǎn)移概率以矩陣的形式記錄,就可以得到一個(gè)轉(zhuǎn)移概率矩陣,這個(gè)矩陣就表明了各個(gè)狀態(tài)間的轉(zhuǎn)移概率。MC經(jīng)常會(huì)被用于天氣預(yù)測(cè)、股市分析等領(lǐng)域[10]。
對(duì)于研究而言,MC還可以推廣到更高階,其公式可表示為:
也就是對(duì)于將來的狀態(tài)Xn+1而言,其狀態(tài)條件分布只與過去的t-k個(gè)和現(xiàn)在的狀態(tài)有關(guān)。因此,對(duì)于MC而言,可以稱之為無記憶性的,其表現(xiàn)只與之前限定期限內(nèi)狀態(tài)有關(guān)。在文本標(biāo)注中,由于其無記憶性,就可以專注于需要標(biāo)注的指定文本,而不需要對(duì)全文進(jìn)行分析。
由于文本中的地址信息是分散或是省略的,需要使用地圖服務(wù)接口對(duì)其進(jìn)行補(bǔ)全。目前中文互聯(lián)網(wǎng)上主要的2家地圖服務(wù)供應(yīng)商均對(duì)外提供了地圖服務(wù)接口,其中包括了地理/逆地理編碼,可以通過隨機(jī)生成經(jīng)緯度信息獲取大量的地點(diǎn)名詞典。同樣也包含了地名查詢的接口,可以將只包含部分地址信息的內(nèi)容通過該接口進(jìn)行補(bǔ)全。由于高德地圖提供的接口能夠有限度地免費(fèi)供開發(fā)者使用,因此在研究過程中使用的均為高德地圖的接口,在實(shí)際項(xiàng)目實(shí)施的過程中需要依據(jù)實(shí)際情況決定。
對(duì)于地圖服務(wù)接口的調(diào)用主要依靠python requests實(shí)現(xiàn),這種方法相對(duì)簡(jiǎn)潔,只需要提供查詢?cè)~、接口key和URL便可以獲得JSON格式的查詢結(jié)果。對(duì)于部分可能出現(xiàn)重復(fù)的地名,該接口同樣可以使用多個(gè)關(guān)鍵詞來提升查詢的準(zhǔn)確性。
為了提升識(shí)別的準(zhǔn)確性,可以借助運(yùn)算能力更強(qiáng)的機(jī)器或者花費(fèi)相對(duì)多一點(diǎn)的時(shí)間,從而對(duì)文本做出更加精確的標(biāo)注。在基于模型的方法中,會(huì)更多地考慮到目標(biāo)詞在整段文本中的位置,通過其上下文,以及語意分析進(jìn)行考慮。
用于訓(xùn)練的文本選擇人民日?qǐng)?bào)2014語料庫,這是一個(gè)已經(jīng)事先標(biāo)注好詞性的語料庫,如圖1所示。
圖1 語料庫
其中標(biāo)注為ns的即為地點(diǎn)信息,只需要一個(gè)簡(jiǎn)單的程序就可以對(duì)其拆分。首先,將地址詞前一個(gè)詞標(biāo)注為A,后一個(gè)詞標(biāo)注為B。之后,將ns對(duì)比已有的地點(diǎn)詞典,詞典中主要包含縣級(jí)及以上的行政區(qū)劃名,如果屬于這一類地點(diǎn),則標(biāo)注為G,表明為現(xiàn)有地點(diǎn),并拆分末尾的“省”“市”等行政區(qū)劃限定詞標(biāo)注為H。將不包含在現(xiàn)有地名的詞按字拆分,末尾字標(biāo)為H,首字標(biāo)為C,之后依次標(biāo)注中部為D、末部為E給各個(gè)字。最后,將剩余部分均標(biāo)注為Z。
而對(duì)于收集到用于測(cè)試集得到文本數(shù)據(jù),首先要清除其中包含的非常用字符,僅保留中文字符和標(biāo)點(diǎn)符號(hào),可以考慮半角標(biāo)點(diǎn)轉(zhuǎn)換為圓角標(biāo)點(diǎn)。進(jìn)行清理的目的是保證分詞程序的順暢運(yùn)行,提升分詞程序的運(yùn)行效率。
序列標(biāo)注所針對(duì)的是訓(xùn)練集,雖然用于訓(xùn)練的語料庫已經(jīng)進(jìn)行了分詞和標(biāo)注,但該語料庫所標(biāo)注的類型并不符合模型的需求。應(yīng)將語料庫進(jìn)一步劃分,具體的角色分配的意義及示例見表1。
表1 角色分配的意義及示例
此部分的處理可以通過自行編寫一個(gè)簡(jiǎn)單的腳本進(jìn)行實(shí)現(xiàn)。具體實(shí)現(xiàn)過程如下:
1)將被標(biāo)注為nr也就是人名部分的詞替換為“未##人/nr”;
2)在首部和尾部分別添加“始##始/S”和“末##末/Z”,方便程序運(yùn)行;
3)將標(biāo)注為ns的前一詞標(biāo)注為A后一詞標(biāo)注為B,若前(或后)一詞也為ns則不變;
4)當(dāng)發(fā)現(xiàn)ns的前一詞已經(jīng)被標(biāo)注為A時(shí),將其標(biāo)為X;
5)將ns對(duì)比現(xiàn)有地名,若已存在則部分標(biāo)為G,如不存在則將地名拆分成單個(gè)字,依次以C、D、E標(biāo)注,并將最后一個(gè)字標(biāo)為H;
6)將剩余標(biāo)注修改為Z,表示無意義。
自動(dòng)識(shí)別的最大困難已經(jīng)在標(biāo)注過程中解決,因而識(shí)別過程相對(duì)簡(jiǎn)單,只需要查找滿足CH/CDH/CDFH/GH的子串即可。自動(dòng)識(shí)別效果如圖2所示。
圖2 自動(dòng)識(shí)別效果圖
標(biāo)注結(jié)果為:
始##始/S,未##人/Z,來自/A,湖北/G,的/X,荊/C,門/H,B,在/A,佛山/G,市/H,南/C,海/D,區(qū)/H,大/C,瀝/D,鎮(zhèn)/H,某/B,物業(yè)公司/Z,做/Z,保安/Z,末##末/Z。
從中獲取到的地名有“荊門”“佛山市”“南海區(qū)”“大瀝鎮(zhèn)”。同時(shí)可以借助行政區(qū)劃或者地圖服務(wù)供應(yīng)商,將地名信息補(bǔ)充完整。在這個(gè)過程中,將滿足GH的子串定義為固有地點(diǎn),將滿足CH/CDH/CDFH的子串定義為其他地點(diǎn)。通常固有地點(diǎn)為現(xiàn)有的行政區(qū)劃名稱,而其他地點(diǎn)通常為鄉(xiāng)一級(jí)的行政區(qū)劃或者是范圍較小的地點(diǎn)名,其他地點(diǎn)由于在全國(guó)范圍內(nèi)的重名率較高,容易出現(xiàn)混淆。因此通過結(jié)合固有地點(diǎn)與其他地點(diǎn),可以獲得更準(zhǔn)確的地點(diǎn)信息。
在互聯(lián)網(wǎng)的幫助下,可以通過地圖服務(wù)供應(yīng)商獲得更加龐大的地址數(shù)據(jù)庫,通過以下格式向高德地圖api發(fā)送請(qǐng)求:
parameters = {'output':'json',
'key':'#########################',
'keywords':'#固有地址信息|其他地址信息#',
}
base = 'https://restapi.amap.com/v5/place/text?parameters'
response = requests.get(base,parameters)
通過這樣一種方式,就可以對(duì)提取到的地址信息進(jìn)行擴(kuò)張。對(duì)于部分如“望海樓”重名的地址名詞,往往無法獲得指定的地址,因此考慮通過與其最近的固有地址進(jìn)行組合查找。在“望海樓”前增加限定詞“珠海”后,該搜索結(jié)果便是精確可用的。通過這一種固有地址組合地名信息聯(lián)合查找的方式,對(duì)于一部分模糊地點(diǎn)也能夠進(jìn)行定位。這極大地提升了從文本中獲取到的地址信息的準(zhǔn)確性。
本文是從案例文本中獲取地址信息的,因此希望獲得的地址信息應(yīng)當(dāng)是精確到縣級(jí)以下,因此要對(duì)模型方法所獲得的結(jié)果進(jìn)行后續(xù)處理。處理邏輯過程如下:
1)按序提取已經(jīng)標(biāo)注的地點(diǎn)信息,排除其他詞的干擾,同時(shí)將地址類別為固有地址的詞段進(jìn)行標(biāo)記;
2)遍歷全部的非固有地名信息,將其與其前一個(gè)最近的固有地名組合;
3)該組使用request高德地圖api,獲取搜索結(jié)果,將結(jié)果替換原先非固有地名;
4)刪除仍然存在的固有地名。
經(jīng)過以上模型處理后,程序運(yùn)行結(jié)果如圖3所示。
圖3 程序運(yùn)行結(jié)果
顯然,“中大五院”未被識(shí)別為地點(diǎn),實(shí)際上是由于模型未能識(shí)別該地點(diǎn)。通過對(duì)語料庫的分析判斷,可能是其被標(biāo)注為nt,即機(jī)構(gòu)團(tuán)體名所導(dǎo)致的結(jié)果。
綜上所述,通過數(shù)據(jù)挖掘模型方法對(duì)文本內(nèi)容中的地址信息提取提供了方案。先介紹了文本數(shù)據(jù)挖掘的方法及在項(xiàng)目中所需要的模型算法,在對(duì)模型方法的實(shí)際運(yùn)用過程中,可以看出模型方法在面對(duì)部分固有地名已經(jīng)退化統(tǒng)計(jì)。同時(shí),對(duì)模型方法提出了更高的要求,能夠更加準(zhǔn)確地理解語境。本文也開創(chuàng)性地提出了將地點(diǎn)信息分級(jí)方法,通過將信息分級(jí)為固有地點(diǎn)和其他地點(diǎn),并依據(jù)其他地點(diǎn)會(huì)跟固有地點(diǎn)相近出現(xiàn)的文本規(guī)律。通過地圖信息服務(wù)供應(yīng)商,結(jié)合查詢固有地點(diǎn)與其他地點(diǎn),便能夠獲取準(zhǔn)確且相對(duì)單一的地點(diǎn)信息。