經過hanlp中文分詞庫,能夠對輸入分詞獲得分詞結果集,例如對「深圳市南山區軟件產業基地」,會獲得如下結果html
[深圳市/ns, 南山區/ns, 軟件/n, 產業/n, 基地/n]
複製代碼
天然其餘輸入也會有對應的分詞結果集git
在針對地址識別這個需求下,因爲地址文本的不規範,github
假如能夠像看到陰天,就能預測下雨那樣子,看到一個ns或者以關鍵詞結尾的詞,就提高地址的機率,看到「的、了、咱們、大家」等和地址基本不相關的詞就下降地址的機率,根據不一樣的詞性加權平均,最後判斷哪個結果。理論上會減小誤判的可能性bash
想起大學裏學的貝葉斯公式,正好能夠用於上述場景。阮一峯的一篇文章貝葉斯推斷及其互聯網應用(一):定理簡介已經做出了很好的介紹測試
假設網站
進而spa
根據貝葉斯公式,就能夠計算出P(A|B)設計
計算出每一個詞性的P(A|B)以後,再預測某個輸入是否爲地址時,就能夠根據分詞後的詞性得出機率之和,取平均值再與閾值比較就能判斷輸入是否爲地址code
由於先驗機率的計算須要樣本數據,而樣本數據的質量會直接影響貝葉斯推斷的效果,所以樣本數據最好可以反映出真實的狀況cdn
準備22000條真實地址數據
重新聞網站提取正文,按照","和「。」將文章切割成簡單句,篩選一下長度,得出10000條負樣本
從數據準備中就能夠計算出P(A)的機率了:正樣本條數/總樣本條數
提取出全部出現的詞性,對每個詞性計算:出現該詞性的樣本條數/總樣本條數
對每個詞性,計算:出現該詞性的樣本條數/正樣本條數
依據上述三個值以及貝葉斯公式,就能夠得出:出現某個詞性時,輸入是地址的機率了
因爲分詞的侷限性,有時以關鍵字(省|市|區|縣|路|街|座|號|樓|棟|梯|室|巷|大道|花園|苑|幢|弄|單元|鄉)結尾的詞並不會識別成"ns"詞性,而出現上述詞時是地址的機率又會提高。
因而,人爲地將符合上述特徵的詞的機率調整爲:出現ns詞性時,輸入是地址的機率。
根據正負測試數據集的計算狀況設置機率閾值,將誤判率控制在1%之內