劉浩宇,李 喆,佘佐超,應(yīng)卓君,王 薇,趙志浩
(國(guó)網(wǎng)四川省電力公司成都供電公司, 四川 成都 610041)
各項(xiàng)研究證據(jù)顯示人類的活動(dòng)信息基本與地理位置相關(guān)。在電力企業(yè)各項(xiàng)業(yè)務(wù)中同樣如此,用電地址、報(bào)修工單、設(shè)備位置等等,地理位置均是其核心字段。目前常規(guī)模式基本都是人工提取各類信息中所含地址字段進(jìn)行匹配,對(duì)于電力企業(yè)的相關(guān)工作人員均是較為繁瑣、耗時(shí)的一項(xiàng)工作。如果能快速準(zhǔn)確地識(shí)別相關(guān)內(nèi)部業(yè)務(wù)和客戶訴求中所含的地理位置信息,可以很好地輔助電力企業(yè)快速響應(yīng)各方需求、提高服務(wù)能力、提升數(shù)據(jù)資產(chǎn)價(jià)值。
下面旨在探索實(shí)踐如何自動(dòng)快速準(zhǔn)確地進(jìn)行地理位置匹配,以各類常見信息中地理位置為基礎(chǔ),實(shí)現(xiàn)地理位置的自動(dòng)提取與匹配,并基于Python編寫多種地址提取匹配方法,綜合考量匹配準(zhǔn)確率及運(yùn)行速度兩類指標(biāo),探索較為適用于電力企業(yè)的方法。
最早的自然語言理解方面的研究工作是機(jī)器翻譯。由美國(guó)人威弗于1949年首先提出了機(jī)器翻譯設(shè)計(jì)方案。20世紀(jì)60年代,國(guó)外對(duì)機(jī)器翻譯曾有大規(guī)模的研究工作,耗費(fèi)了巨額費(fèi)用;但當(dāng)時(shí)人們顯然是低估了自然語言的復(fù)雜性,且語言處理的理論和技術(shù)均不成熱,機(jī)器翻譯整體進(jìn)展緩慢。當(dāng)時(shí)的主要做法為存儲(chǔ)兩種語言的單詞、短語對(duì)應(yīng)制作大辭典,翻譯時(shí)一一對(duì)應(yīng),技術(shù)上只是調(diào)整語言的同條順序,但面對(duì)日常語義交流時(shí),表現(xiàn)較差。
現(xiàn)在自然語言處理已經(jīng)是計(jì)算機(jī)科學(xué)領(lǐng)域與人工智能領(lǐng)域中的一個(gè)重要方向。其研究的是如何實(shí)現(xiàn)人與計(jì)算機(jī)之間用自然語言進(jìn)行有效通信的方法。自然語言處理本身為語言學(xué)、計(jì)算機(jī)科學(xué)、數(shù)學(xué)于一體。因此,自然語言處理的研究將涉及人們?nèi)粘J褂玫恼Z言。
例如,對(duì)于中文文本來說,其形式上由漢字(包括標(biāo)點(diǎn)符號(hào)等)組成的一個(gè)字符串。字可組成詞,詞可組成詞組,詞組可組成句子,進(jìn)而由一些句子組成段、節(jié)、章、篇。無論在上述各種層次的字(符)、詞、詞組、句子、段中,同樣的詞語在各層級(jí)之間都存在著歧義和多義現(xiàn)象,即形式上一樣的一段字符串,在不同的場(chǎng)景或不同的語境下,可以理解成不同的詞串、詞組串等[1]。一般情況下,它們中的大多數(shù)都是可以根據(jù)相應(yīng)的語境和場(chǎng)景的規(guī)定而得到解決的。也就是說,對(duì)于個(gè)人來說,并不造成無法理解的情況,這就是常見的聯(lián)系上下文分析。但是為了正確理解語義,是需要基于極其大量的基礎(chǔ)常識(shí)進(jìn)行推理得出。而如何將這些基礎(chǔ)常識(shí)較完整地進(jìn)行收集和整理,又如何通過合適的方式,將其又快又好地存入計(jì)算機(jī)當(dāng)中去,并且如何合理地利用它們來解析語義,都是工作量巨大且非常困難的工作。這不是一個(gè)在短時(shí)間內(nèi)可以完成的工作,還有待長(zhǎng)期的、系統(tǒng)的探索專研。
目前自然語言處理在應(yīng)用領(lǐng)域包括“語言分詞”“語義分析”“語言翻譯”等等[2],而模糊識(shí)別是該領(lǐng)域重要的方法思路之一,其指在大量復(fù)雜的信息中,識(shí)別出有用的部份,即對(duì)接收的信息與以往的記憶和經(jīng)驗(yàn)進(jìn)行有關(guān)聯(lián)認(rèn)識(shí),剔除無關(guān)的信息。無論是什么對(duì)象(語言、文字、圖像等),其需要識(shí)別的核心點(diǎn)均具備自己特有的關(guān)鍵特征[3],對(duì)于中文地址來說,它的核心特征則是地址中的關(guān)鍵字,比如“市”“區(qū)”“街道”等等,常見方法則是基于關(guān)鍵字有效定位文章中地址位置,并基于分詞、比對(duì)、校驗(yàn)等方式對(duì)地址模擬匹配,實(shí)現(xiàn)文章地址信息的提取[4]。
電力企業(yè)與地址相關(guān)的業(yè)務(wù)包括客戶新裝、報(bào)修以及設(shè)備安裝管理等方面,除了目前地理位置信息存在不準(zhǔn)確、不規(guī)范等問題外,還存在地址提取匹配耗時(shí)長(zhǎng)、工作量大等問題。從場(chǎng)景應(yīng)用上來看大致可以分為以下3類場(chǎng)景:
1)電力企業(yè)對(duì)內(nèi)的檢修、巡視、停電等工作情況錄入。例如輸電、變電等專業(yè)開展設(shè)備運(yùn)行維護(hù)時(shí),其當(dāng)日工作情況需錄入系統(tǒng),特別是在發(fā)現(xiàn)故障時(shí)需在系統(tǒng)內(nèi)錄入故障內(nèi)容(包括故障原因、故障地點(diǎn)等),該內(nèi)容主要為人工填寫。
2)電力企業(yè)對(duì)外的客戶訴求處理。例如95598接單是根據(jù)客戶訴求,形成工單明細(xì)內(nèi)容,在工單派發(fā)前,需擬為工單標(biāo)準(zhǔn)格式,如圖1所示,需要人工完善所屬轄區(qū)、地址信息等內(nèi)容。
圖1 客戶訴求工單樣例
3)大數(shù)據(jù)應(yīng)用,各專業(yè)管理部門根據(jù)專業(yè)管理需求,開展大數(shù)據(jù)分析,很多場(chǎng)景都需要結(jié)合地址信息開展相關(guān)工作。例如運(yùn)檢需要根據(jù)設(shè)備故障位置,制定下一步配電網(wǎng)可靠性提升方案;營(yíng)銷部需要根據(jù)投訴內(nèi)容,針對(duì)性開展?fàn)I銷服務(wù)優(yōu)質(zhì)提升等。如果在沒有準(zhǔn)確地址信息的情況下,需要基于故障內(nèi)容信息或者不規(guī)范的地址信息,通過人工觀察定位的方式梳理地理位置,如果工作量較大,可能會(huì)一定程度上舍棄數(shù)據(jù)分析的顆粒度。
前兩種應(yīng)用場(chǎng)景是工作流程中必須涉及的工作內(nèi)容,雖然看似簡(jiǎn)單,但是大量且固化的工作也在不經(jīng)意地耗去了龐大的人力資源,而第3種情況,更是會(huì)制約電力企業(yè)的精益化管理發(fā)展。
除此上訴3類場(chǎng)景之外,目前隨著電力企業(yè)大數(shù)據(jù)進(jìn)程的不斷演進(jìn),針對(duì)地址信息進(jìn)行的數(shù)據(jù)挖掘也在不斷增多,因此現(xiàn)在亟需高效、準(zhǔn)確的地址識(shí)別方法。
目前國(guó)內(nèi)外在地址模糊匹配上,受制于語言的不同,國(guó)外項(xiàng)目課題難以直接應(yīng)用。同時(shí)相關(guān)研究的主要內(nèi)容是研究針對(duì)算法的準(zhǔn)確性進(jìn)行不斷提升,而算法的復(fù)雜決定了其在運(yùn)行上較為緩慢,并且有關(guān)算法較為針對(duì)特定場(chǎng)景及內(nèi)容,不代表能直接在電力企業(yè)相關(guān)場(chǎng)景應(yīng)用。下面將在各項(xiàng)主流方法的基礎(chǔ)上,探索實(shí)踐較為適用電力企業(yè)應(yīng)用場(chǎng)景的地址匹配方法。
中文地址信息一般為“省-市-縣-區(qū)-街道-街道號(hào)”,而目前日常經(jīng)常接觸的文章內(nèi)容,主要包括以下幾類樣例:
1)網(wǎng)頁信息填報(bào)類型。其表現(xiàn)為格式相對(duì)規(guī)范,基本不會(huì)出現(xiàn)多個(gè)地址信息,識(shí)別地址信息位置標(biāo)志物明顯,如圖2所示。
圖2 網(wǎng)頁信息填報(bào)樣例
2)信息公開類型。一般為通知、公告,格式內(nèi)容較為正式,地址信息較為清晰,但可能出現(xiàn)多個(gè)地址[5]。信息公開樣例如圖3所示。
圖3 信息公開樣例
3)文章信息類。一般為新聞報(bào)道、客戶訴求等等,文字內(nèi)容較多,地址信息不規(guī)范,存在多個(gè)地址信息等,該類情況相對(duì)較為復(fù)雜。例如“今日,在成都武侯區(qū)將進(jìn)行計(jì)劃?rùn)z修停電,停電范圍覆蓋長(zhǎng)壽路、桐梓林小區(qū)、成都中醫(yī)院、四川省體育館……成都晚報(bào)12:00發(fā)布消息”。
經(jīng)過前期收集整理,收集文章地址信息500余條,整合了所述3種常見情況,使得匹配樣本盡可能貼近真實(shí)應(yīng)用場(chǎng)景,以確保算法在實(shí)際應(yīng)用具有可操作性及實(shí)用性。
通過線上線下數(shù)據(jù)收集的方式,收集地址庫63萬條,在地址庫樣本范圍上確保完全覆蓋所需匹配的文章地址信息,并且加入相似、相近地址,進(jìn)一步接近實(shí)際場(chǎng)景應(yīng)用情況。地址庫數(shù)據(jù)如圖4所示。
備注:本次算法測(cè)試運(yùn)行配置為2.6 GHz/CPU,內(nèi)存16GB。根據(jù)數(shù)據(jù)保密有關(guān)要求,地址庫數(shù)據(jù)僅截圖展示,同時(shí)此處展示的坐標(biāo)已做調(diào)整,非真實(shí)坐標(biāo),但不會(huì)影響所研究?jī)?nèi)容。
經(jīng)驗(yàn)證直接利用正則表達(dá)式制定提取樣式[6],難以實(shí)現(xiàn)地址的提取,特別是街道號(hào),因此形成思路如下:將文章內(nèi)容直接納入地址庫進(jìn)行匹配,對(duì)應(yīng)地址庫每一行的6個(gè)字段,匹配上的字段為1,沒有匹配上的為0,加總后除以6即為該地址的匹配率。最后找到匹配率最高的地址作為文章的匹配地址。基礎(chǔ)代碼實(shí)現(xiàn)如下:
數(shù)據(jù)讀?。簩⒌刂穾鞌?shù)據(jù)讀入Jupyter運(yùn)行環(huán)境,如圖5所示。
圖5 數(shù)據(jù)讀取
逐一搜索加權(quán):將500篇文章信息循環(huán)進(jìn)行讀取,并逐一將地址庫字段納入文章中進(jìn)行比對(duì),如果該字段在文章出現(xiàn)則該地址加1,并選出數(shù)值最大的地址信息作為匹配結(jié)果,代碼如圖6所示。
圖6 地址搜索加權(quán)實(shí)現(xiàn)
結(jié)果比對(duì):循環(huán)抽取測(cè)試結(jié)果與正確答案表進(jìn)行比對(duì)驗(yàn)證,計(jì)算正確結(jié)果數(shù)量以及算法準(zhǔn)確率,代碼實(shí)現(xiàn)及運(yùn)行結(jié)果詳見圖7。
圖7 方案1計(jì)算結(jié)果驗(yàn)證
從計(jì)算結(jié)果上來看,該方法的準(zhǔn)確率為71.21%,但從計(jì)算速度上,500條文章完成所有匹配耗時(shí)為4 h,平均每條耗時(shí)約0.5 min,完全無法達(dá)到實(shí)用水平。
經(jīng)過前一種方法的實(shí)驗(yàn),準(zhǔn)確率上雖然基本能夠達(dá)到優(yōu)化條件,但是運(yùn)行效率低下,因此需要重新調(diào)整思路。經(jīng)分析,方案1耗時(shí)長(zhǎng)的主要原因?yàn)槊織l文章均需要與地址庫63萬條數(shù)據(jù)進(jìn)行匹配,運(yùn)算量大。實(shí)際可以無需每次進(jìn)行63萬條的匹配,一方面可以對(duì)字段進(jìn)行去重,例如地址庫的省只有6個(gè)、城市80個(gè)、縣區(qū)1000個(gè),因此可以通過不斷定位省-市-縣-區(qū),逐步縮小匹配范圍,以此大幅降低運(yùn)算復(fù)雜程度。從上述思路來看,該方法基本類似于人工篩查的方式(逐個(gè)提取關(guān)鍵字段信息,然后在地址庫中進(jìn)行篩選,不斷縮小范圍實(shí)現(xiàn)最終定位)。其基本實(shí)現(xiàn)方式如下:
1)基于Python集合自帶的去重功能,對(duì)地址庫的省、市、縣、區(qū)、街道、街道號(hào)等字段進(jìn)行合并去重,形成地址庫各字段的去重列表,代碼如圖8所示。
圖8 核心地址字段去重
2)將地址庫地址信息列表放入地址庫中進(jìn)行循環(huán)匹配,匹配成功則進(jìn)行提取,形成匹配結(jié)果字典,代碼如圖9所示。
圖9 文章地址信息提取
3)按照匹配結(jié)果字典,根據(jù)匹配字段數(shù)量納入地址庫中進(jìn)行定位,例如匹配到了“城市-街道-街道號(hào)”,則匹字段數(shù)字為3,則在地址庫對(duì)應(yīng)3個(gè)字段進(jìn)行3次篩查,逐步縮小匹配范圍完成對(duì)地址位置的定位,詳見圖10。
圖10 根據(jù)地址提取信息進(jìn)行篩選匹配
4)驗(yàn)證該方法的準(zhǔn)確性,詳見圖11。
圖11 方案2計(jì)算結(jié)果驗(yàn)證
該方案在運(yùn)行速度上提升明顯,500篇文章基于63萬條地址庫的匹配,運(yùn)行完成僅需5 min,平均每篇文章匹配僅需0.6 s,在運(yùn)行速度上完全滿足實(shí)用化要求,但是在準(zhǔn)確率上,現(xiàn)階段該方案也僅有65%左右,無法達(dá)到實(shí)用化水平(一般設(shè)計(jì)算法,置信率要達(dá)到95%以上)。
解決運(yùn)行速度慢的問題后,總結(jié)錯(cuò)誤匹配原因,逐個(gè)解決錯(cuò)誤匹配問題,進(jìn)行算法優(yōu)化。
經(jīng)逐個(gè)分析,出現(xiàn)錯(cuò)誤的原因有以下幾點(diǎn):
1)地址信息相似性極高的情況下,出錯(cuò)率高。例如xx區(qū)-城西街道16號(hào)與xx區(qū)-城西街道6號(hào)。
2)可能會(huì)篩查出兩個(gè)以上答案。例如文章為城西5號(hào),地址庫為城西區(qū)城西街道、城西區(qū)城西5號(hào)。
3)個(gè)別答案匹配不上。例如文章為成都武侯區(qū)xx街道(同時(shí)西安市也有該街道名的情況),可能就會(huì)因匹配順序問題導(dǎo)致結(jié)果無法正確輸出(因?yàn)槌鞘信c街道無法對(duì)應(yīng)的問題)等,錯(cuò)誤匹配結(jié)果如圖12所示。
圖12 錯(cuò)誤結(jié)果樣例
對(duì)于地址雷同、重復(fù)等問題導(dǎo)致匹配不準(zhǔn)確的情況,常規(guī)解決方式可以在匹配前進(jìn)行分詞;但是由于地址名稱復(fù)雜度高、非常用名稱多[7],常用的cpca庫無法使用,即使是分詞效果最為良好的jieba分詞方法[8],依然難以對(duì)地址名稱進(jìn)行準(zhǔn)確分詞。因此只能進(jìn)行場(chǎng)景設(shè)計(jì)解決。
由于所有匹配不準(zhǔn)確的地址問題均出在“街道號(hào)”這一字段,可以從“街道號(hào)”的字符長(zhǎng)度進(jìn)行處理,偽代碼實(shí)現(xiàn):
1)如果最長(zhǎng)的街道號(hào)也不足1,則直接納入需要匹配的結(jié)果;
2)如果不是均為短值,則將街道號(hào)長(zhǎng)度在2以上的數(shù)據(jù)納入需要匹配的結(jié)果,避免過多無效數(shù)據(jù)進(jìn)入需要匹配的內(nèi)容;
3)做進(jìn)一步判斷,避免如3號(hào)、33號(hào)的重復(fù)出現(xiàn)。
代碼實(shí)現(xiàn)如圖13所示。
圖13 文章地址提取預(yù)處理
對(duì)于存在多個(gè)地址信息的情況下,例如成都-64號(hào)、西安-223號(hào),前后不對(duì)應(yīng)的問題,解決思路為:定位匹配到的街道在文章中出現(xiàn)的位置以及街道號(hào)所出現(xiàn)的位置,比較兩者位置距離,兩者相近的為一組,就可以實(shí)現(xiàn)地址前后字段的準(zhǔn)確關(guān)聯(lián)。偽代碼如下:
1)找到所需匹配的街道在文章中的位置strlc;
2)找到街道對(duì)應(yīng)位置最近的街道號(hào)碼;
3)提取街道-街道號(hào)碼進(jìn)行組合;
4)將組合好的結(jié)果納入地址庫進(jìn)行篩查。
匹配文章中出現(xiàn)的街道名稱,并定位街道名稱在文章出現(xiàn)的位置,基于該位置找到離街道名稱最近的街道號(hào)碼,代碼實(shí)現(xiàn)如圖14所示。
圖14 定位街道字符串在文章中的位置并找到最近街道號(hào)
地址提取的運(yùn)行結(jié)果如圖15所示,而未優(yōu)化前的運(yùn)行結(jié)果如圖16所示。
圖15 優(yōu)化后實(shí)現(xiàn)“街道-街道號(hào)碼”相對(duì)應(yīng)
圖16 優(yōu)化前多個(gè)街道和街道號(hào)結(jié)果不對(duì)應(yīng)且未精確定位
通過對(duì)比,可以看到算法優(yōu)化后,大幅減少了匹配到的街道號(hào)碼,同時(shí)針對(duì)有多個(gè)地址的文章實(shí)現(xiàn)了街道名稱與街道號(hào)碼的一一對(duì)應(yīng),可以避免出現(xiàn)上下不對(duì)應(yīng)導(dǎo)致無法匹配的情況。
計(jì)算結(jié)果驗(yàn)證如圖17所示。經(jīng)過驗(yàn)證,雖然在運(yùn)行速度上,優(yōu)化后的算法運(yùn)行需要10 min,是未優(yōu)化前的2倍,但是也基本滿足應(yīng)用需求,同時(shí)優(yōu)化后準(zhǔn)確率提升到了98.6%,完全滿足實(shí)際應(yīng)用需要。
圖17 方案3計(jì)算結(jié)果驗(yàn)證
除以上3種方案外,前期還通過查閱相關(guān)文獻(xiàn),并結(jié)合課題內(nèi)容進(jìn)行實(shí)踐,淘汰了純正則表達(dá)式法提取、cpca地址庫提取等方法。第3種方案在準(zhǔn)確率和運(yùn)行速度上基本滿相關(guān)業(yè)務(wù)場(chǎng)景應(yīng)用需求。同時(shí)基于Python的Pyinstaller代碼封裝,可實(shí)現(xiàn)在電力企業(yè)各類工作電腦上直接運(yùn)用,具備較高的可操作性及靈活性。3種方案綜合對(duì)比如表1所示。
表1 3種方法的綜合對(duì)比
經(jīng)過測(cè)試,所提的地址提取匹配方法具備一定的實(shí)用性,可以應(yīng)用于電力企業(yè)相關(guān)業(yè)務(wù)場(chǎng)景,但同時(shí)該技術(shù)主要面向于地址庫中包含的地理位置信息,在此條件下能具備一定的準(zhǔn)確性、運(yùn)行速度和靈活優(yōu)勢(shì)。
在缺點(diǎn)方面,該方案對(duì)于日常可能會(huì)遇到的地址信息未包含在地址庫內(nèi)的情況沒有進(jìn)行設(shè)計(jì)處理,因此未來可以在上述方案的基礎(chǔ)上進(jìn)一步加入“最近地址提取法”[9]。現(xiàn)階段形成思路如下:1)基于獨(dú)熱編碼方式對(duì)地址庫各地址信息進(jìn)行解析,將文字進(jìn)行量化處理;2)將處理后的地址庫按區(qū)縣進(jìn)行分區(qū),減少模型運(yùn)算量,增加模型數(shù)量;3)基于隨機(jī)森林、人工神經(jīng)網(wǎng)絡(luò)等方式定位分區(qū)中地址庫每個(gè)字段的經(jīng)緯度權(quán)重[10];4)對(duì)未能直接匹配成功的文章地址信息,進(jìn)行獨(dú)熱化處理,并按照所屬區(qū)域納入模型進(jìn)行計(jì)算,得出其經(jīng)緯度;5)根據(jù)模型計(jì)算的經(jīng)緯度,計(jì)算與地址庫之間歐式距離或者曼哈頓距離找到最相近地址[11]。下一步將繼續(xù)提升所提方案的全面性及可用性,為電力企業(yè)在管理及服務(wù)等方面應(yīng)用提供參考。