1. 程式人生 > >使用Python實現公司地址的(3-4級)標準化

使用Python實現公司地址的(3-4級)標準化

這個部落格的目的是實現公司地址的模糊匹配與3-4級標準化,也可以遷移到房產資訊、電話號碼之類的欄位上。本來的應用場景是反團伙欺詐以及失聯客戶的修復,大概的意思就是說多個相同公司的同事都在我公司借貸的欺詐可能性要高於其他客戶,以及造假的房產資訊和電話號碼可能不完全相同,但有一定的相似性,我們需要把這些客戶找出來,但是又不能用精確匹配。因為存在問題的房產資訊和電話可能只是相似,而不是完全相同;對於公司地址來說,即使是真實的資訊,但同一個公司的地址也有差別,公司可能會多種多樣,如果麻煩一些,還要建一個同義詞庫。而我做的工作還沒有那麼全面,只是提取出了公司名中的關鍵詞。

而做評分卡模型也需要用到這個思想。因為評分卡的其中一個欄位就是所在城市等級,這就需要從原始資料的地址中提取出城市資訊,但地址的格式又不夠標準,因為資訊是客戶人工填寫的,例如,“河北省石家莊市長安區廣安街道”也有可能被寫成“石家莊廣安街道”或“石家莊長安廣安街道”或“河北石家莊長安廣安街道”等,所以單純正則表示式就不足以解決這個欄位提取的問題了。

我這裡進行地址處理的基本思路就是建立一個標準庫,對非標準進行分詞,然後逐級對地址進行匹配,返回一個標準的三級或者四級的地址(根據需要也可以精確到五級甚至以上),所以地址分詞與標準庫的建利是進行地址處理的關鍵。

一、標準庫建立:

實現地址處理的關鍵就是先建立一個標準的地址庫,地址庫一般到四級就可以了,標準地址庫形式如下:

二、使用分詞包對公司名進行分詞,並標出詞性,對四級地址根據 實際需求進行處理加入自定義詞庫

jieba.load_userdict("dict")

def word_flag(words):

    '''
    提取flag是u'ns'的word
    '''
    result = defaultdict(list)
    output = pseg.cut(words)
    for word, flag in output:
        result[flag].append(word)
        print(word+flag)
    return result[u'ns']

自定義詞庫形式(dict):

葛嶺 ns
城峰 ns
清涼 ns
長慶 ns
同安 ns
大洋 ns
塘前 ns
富泉 ns
嶺路 ns

三、根據公司地址提取四級行政區劃並對每一級都進行標準化

這一部分就 是根據分詞的結果逐級對地址進行匹配並對匹配到的 ,結果使用標準地址庫裡的地址替換相應地址。 此部分是純程式碼邏輯,在這僅提供思路:

首先根據 分詞的地址資訊查詢相應的 省,若存在就逐級的查詢市、縣等,若不存在就繼續查詢市等一次類推,若果中間級別丟失,在 查到下一級資料的時候對上一級的資料進行 補全。(具體細節後期新增)

四、五六級地址進行正則提取:

五六級的地址一般如下:

世紀大道100號上海環球金融中心39樓

深南大道7088號招商銀行大廈32層

華僑城漢唐大廈13、14層


經過分析,得出公司地址的全稱通常使用五級、六級行政區劃、某某路+數字+號+具體門牌號,故可以使用正則表示式進行提取:

注意:

如果可以匹配到省市區的地址就從區開始匹配將地址放入前邊四級地址集中,否則就用 市或者縣開始匹配將地址放入前邊四級地址集中

五、結果示例:

河南省鄭州市二七區隴海中路70號:["河南省", "鄭州市", "二七區", "隴海中路70號"]
成都市青羊區騰飛大道298號:["四川省", "成都市", "青羊區", "騰飛大道298號"]
廣州市南沙區進港大道80號421房:["廣東省", "廣州市", "南沙區", "進港大道80號", "421房"]
深圳市寶安區新橋街道上星第二工業區南環路32號B棟:["廣東省", "深圳市", "寶安區", "新橋街道上星第二工業區南環路32號", "B棟"]
長沙高新開發區嶽麓西大道588號芯城科技園9棟1層101號:["湖南省", "長沙市", "嶽麓西大道588號", "芯城科技園9棟1層101號"]
深圳市南山區學苑大道1001號南山智園C1棟14樓:["廣東省", "深圳市", "南山區", "學苑大道1001號", "南山智園C1棟14樓"]
浙江省杭州市湖墅南路501號迪尚商務大廈:["浙江省", "杭州市", "拱墅區", "湖墅街道", "湖墅南路501號", "迪尚商務大廈"]

暫時只做了地址資訊的標準化,公司地址的相關處理後續將 進一步進行更新。

這裡的標準化是根據已知地址資訊實現的標準化,可能會有一些資訊不全,後續將實現標準的省市區(縣)街道道路等嚴格的標準化實現方案,後續將實現終極版地址標準化。

地址標準化的地址省市區(縣)街道區劃資料請見: