在上篇裏,咱們介紹了地理文本處理技術在高德的總體演進,選取了幾個通用query分析的點進行了介紹。下篇中,咱們會選取幾個地圖搜索文本處理中特有的文本分析技術作出分析,包括城市分析,wherewhat分析,路徑規劃,並對將來作一下展望。算法
4、query分析技術演進session
4.1 城市分析架構
在高德地圖的檢索場景下,從基礎的地圖數據索引、到在線召回、最終產品展現,均以市級別行政單位爲基礎粒度。一次完整的檢索需求除了用戶輸入的query外,還會包含用戶的圖面城市以及用戶位置城市兩個城市信息。併發
一般,大多數的搜索意圖都是在圖面或者用戶位置城市下,可是仍存在部分檢索意圖須要在其餘城市中進行,準確的識別出用戶請求的目標城市,是知足用戶需求的第一步,也是極其重要的一步。 機器學習
在query分析策略流程中,部分策略會在城市分析的多個結果下併發執行,因此在架構上,城市分析的結果須要作到少而精。同時用戶位置城市,圖面城市,異地城市三個城市的信息存在明顯差別性,不管是先驗輸出置信度,仍是用後驗特徵作選擇,都存在特徵不可比的問題。工具
在後驗意圖決策中,多個城市都有相關結果時,單一特徵存在說服力不足的問題,如何結合先驗置信度和後驗的POI特徵等多維度進行刻畫,都是咱們要考慮的問題。學習
原始的城市分析模塊已經採用先驗城市分析和後驗城市選擇的整體流程 測試
可是原始的策略比較簡陋,存在如下問題:問題1:先驗和後驗兩部分均基於規則,效果很差而且可維護性差;優化
問題2:特徵體系存在缺陷。原始的城市分析僅使用query級的特徵,包括點擊,session改寫,query和城市共現等,對於低頻query處理得很差。設計
技術改造
改造1:城市分析
方案城市分析是一個輕召回重選擇的問題,咱們將城市分析設計爲召回+選擇的兩階段任務。
召回階段,咱們主要從query和phrase兩種粒度挖掘特徵資源,然後進行候選城市歸併。
排序階段,須要對候選城市進行判斷,識別是否應爲目標城市,用gbdt進行二分類擬合。
樣本構建
樣本方面,咱們選擇從搜索日誌中隨機抽取,簡單清洗後,進行人工標註。構造樣本時存在本異地分樣本分佈不均的問題,本地需求遠遠多於異地,這裏須要剔除本地和異地相關的特徵,避免模型學偏。
特徵體系
主要特徵包括:
query級特徵:如用戶在特定query&city下的點擊;
phrase級特徵:類比於query級的特徵,在更細粒度下進行統計;
組合特徵:爲了克服單一特徵表徵能力不足的問題,這裏咱們進行了一些人工特徵組合。
改造2:城市選擇
方案城市選擇在總體的意圖決策中處於下游,多種意圖先在城市內部PK,而後城市互相PK。城市選擇問題能夠理解爲多個城市間的排序問題,這裏咱們使用ltr進行城市選擇的建模。
樣本構建
使用隨機query的多個城市意圖結果做爲樣本,每次檢索只有1個展現城市,於是每次只須要從候選城市中選擇目標做爲正樣本,其餘候選城市均做爲負樣本,與目標城市構成pair對。
特徵構建
主要特徵包括:
先驗特徵。如城市分析部分輸出的置信度;
文本特徵。一些基礎的文本相關性特徵;
點擊特徵。如不一樣意圖城市中的點擊強度;
意圖特徵。一些特徵可能影響用戶的城市傾向,如用戶位置與首位POI距離。
相比原始的城市分析和城市選擇,兩個模塊所有實現機器學習化,在惡劣badcase顯著下降的同時,可維護性大幅提升。在後續的建模中,咱們將城市分析做爲一個上層應用任務,經過多任務的方式接入到query分析的統一模型中來,下降了特徵間的耦合,同時實現進一步的效果提高。
4.2 wherewhat分析
地圖場景下的query常常包含多個空間語義片斷的描述,只有正確識別query中的核心部分作what用於召回,同時用空間描述部分作where進行限定,纔可以獲得用戶想要的POI。如query=北京市海淀區五道口肯德基,what=肯德基,是泛需求。query=南京市雨花臺區板橋街道新亭大街與新湖大道交界口灣景,what=灣景,是精確需求。這種在A附近找B或者在A範圍內找B的需求咱們把它稱做wherewhat需求,簡稱ww。
wherewhat意圖分析主要包括先驗和後驗兩個部分。先驗要作wherewhat切分,是一個序列標註問題,標註出query中的哪些部分是where哪些部分是what,同時給出where的空間位置。後驗要作意圖選擇,選擇是否展現wherewhat意圖的結果,能夠轉化成分類或者排序問題。wherewhat體系的主要難點在ww切分上,不只要應對其餘query分析模塊都要面對的低頻和中長尾問題,同時還要應對ww意圖理解獨特的問題。像語義模糊,好比北京歡樂谷公交站,涌邊村牌坊這樣的query該切仍是不應切,結果差別很大。像語序變換,如query=嘉年華西草田,善興寺小寨,逆序的表達若是不能正確識別,效果可能不好。
現狀與問題
現狀
切分:wherewhat模塊在成分分析模塊下游,主要依靠了成分分析的特徵。對於一些比較規整的query,經過成分分析組合的pattern來解決,對於一些中長尾的query,經過再接入一個crf模型進行ww標註。
選擇:基於人工規則進行意圖的判斷和選擇。
問題1:切分模型簡陋。基於crf的切分模型使用特徵單一,對成分特徵依賴嚴重,處於黑盒狀態沒法分析;
問題2:後驗意圖判斷,規則堆砌,很差維護;
問題3:逆序問題表現很差。因爲query的語料大部分是正序的,模型在小比例的逆序query上表現很差。
技術改造
crf問題分析工具
爲了可以分析原始crf切分模型的問題,咱們基於crf++源碼開發了一個crf模型的分析工具,可以將基於維特比算法的預測過程交互式的展現出來,將模型的黑盒分析變成白盒,分析出了一系列問題。
同時,crf問題分析工具也應用在了其餘query分析模塊。前綴置信度
描述了片斷作前綴的佔比。好比望京凱德茂,望京阜通,也有望京單獨搜,若是望京在前綴中出現的佔比很高,那說明這個片斷作where的能力比較強。
後綴熵
描述了後綴的離散程度,如望京凱德茂,望京美食,望京首開,後綴很亂,也能夠說明片斷作where的能力。
what置信度
片斷單獨搜佔比,好比西門常常是在片斷結尾出現,可是單獨搜比較少,那片斷作what的能力比較弱。
以特徵值域作橫軸,where和what,label做爲縱軸,就獲得了特徵-label曲線。從這幾個特徵的特徵-label曲線來看,在某些區間下區分度仍是很好的。因爲crf模型只接受離散特徵,特徵-label的曲線也指導了特徵離散化的閾值選擇。對於低頻query,咱們經過低頻query中的高頻片斷的統計信息,也可使咱們的模型在低頻問題上表現更好。
將原始的堆砌的規則升級到gbdt機器學習模型,引入了先驗特徵,在拿到必定收益的同時也使得整個體系更加合理。
將ww中逆序的問題抽象出來,能夠概括爲query分析中的魯棒性問題。隨着策略優化進入深水區,存在策略提高用戶不可感知,攻擊case容易把系統打穿的問題。
如上圖,用戶變換query中where和what的順序,效果可能變差。變換下檢索城市,對於同一個知名景點,跳轉邏輯不一致。用戶區劃輸錯,糾錯不能識別,效果變不好。這種模塊對非預期的query變換,或者更通用地叫作,對上下游的特徵擾動的承載能力,咱們能夠把它叫作模塊的魯棒性。這裏咱們設計了對於通用魯棒性問題解決的思路
在不引入複雜模型的前提下,經過構建ensemble的淺層模型來優化特定問題,下降了問題解決的成本。對於ww逆序這個特定問題進行了特徵複用用本複用,而且模型對外統一
效果上,新的模型在原始測試集效果持平,人工構造攻擊case集合準召明顯提高,目標case集合具備可觀的解決比例,驗證了魯棒性優化的思路是有效的。這裏基本完成了對於ww體系的一個完整的升級,體系中的痛點基本都獲得瞭解決。優化了切分模型,流程更加合理。意圖決策上完成了規則到機器學習模型的升級。在優化或者引入淺層機器學習模型的同時儘量發揮淺層模型的潛力,爲從淺層模型升級爲深度模型打下基礎。
在後續的建模中咱們使用字粒度lstm+crf模型代替現有的crf模型,完全擺脫了對成分分析特徵的依賴,同時經過融合知識信息到lstm+crf模型,進一步提高效果。
4.3 路徑規劃
在高德地圖的搜索場景中,一類用戶搜索意圖爲路徑規劃意圖。例如,當用戶在高德地圖App的搜索框中輸入「從回龍觀到來廣營」,點擊搜索按鈕後,搜索服務能識別出用戶的搜索意圖爲路徑規劃,並識別出用戶描述的起點爲「回龍觀」,終點爲「來廣營」,進而檢索到對應的POI點給下游服務作出路線的規劃。
從用戶輸入中識別路徑規劃意圖,並提取出對應的起終點,這是一個典型的NLP任務。早期的路徑規劃模塊使用的是模板匹配的方式,這種方式開發成本低,能解決大部分常見的路徑規劃問題,如上面這種「從A 到B」類的問題。但隨着業務的不斷髮展,模塊須要解決的問題愈來愈複雜,好比「坐地鐵從西直門到大興狼垡坐到哪裏下車」,「廣東到安徽通過哪幾個城市」,「去往青島的公交車有嗎」 等等各類非「從A到B」模式的問題。因爲模板匹配方式沒有泛化能力,只能經過不斷增長模板來解決,使得模塊愈來愈沉重難以維護。
優化
因爲線上全部的搜索query都會通過路徑規劃模塊,如果讓模型去處理全部的query,那麼模型不只要解決意圖識別問題(召回類問題),又要解決槽位提取問題(準確類問題),對於模型來講是很難同時將這兩個任務學好的。所以,咱們採起了如下三段式:
模型前使用關鍵字匹配策略進行簡單意圖識別,過濾掉大部分非路徑規劃query;模型處理疑似路徑規劃的query,進行槽位提取;模型後再對模型結果進行進一步檢驗。樣本和特徵
機器學習的樣本通常來源於人工標註,但人工標註耗時長成本高。所以咱們採起的是自動標註樣本方式。經過富集路徑規劃模式,如「從A怎麼乘公交到B」,再用清洗後的隨機query按照實際起終點的長度分佈進行起終點替換,生成大量標註樣本。
特徵方面,咱們使用了成分分析特徵及含有關鍵字的POI詞典特徵。它們主要在如「從這裏到58到家」這類起終點 中含有關鍵字的query上起着區分關鍵字的做用。
模型訓練
crf算法是業界經常使用的爲序列標註任務創建機率圖模型的算法。咱們選取的也是crf算法。
效果評估
在驗證集準確率召回率,以及隨機query效果評比上,指標都有了明顯的提高。
對於路徑規劃這樣一個定向的NLP任務,使用crf模型完成了從規則到機器學習模型的升級。做爲一個應用層任務,路徑規劃也很容易被遷移到seq2seq的多任務學習模型中來。
5、展望
過去兩年隨着機器學習的全面應用,以及基於合理性進行的屢次效果迭代,目前的地理文本處理的效果優化已經進入深水區。咱們認爲未來的優化重點在攻和防兩方面。
攻主要針對低頻和中長尾問題。在中高頻問題已經基本解決的前提下,如何可以利用深度學習的技術進行地理文本處理seq2seq的統一建模,在低頻和中長尾問題上進行進一步優化,得到新一輪的效果提高,是咱們目前須要思考的問題。另外,如何更好地融合知識信息到模型中來,讓模型可以具備接近人的先驗判斷能力,也是咱們亟待提高的能力。
防主要針對系統的魯棒性。如用戶的非典型表達,變換query等定向的問題,如何可以經過定向優化解決這些策略的死角,提升系統的容錯能力,也是咱們目前須要考慮的問題。
地圖搜索雖然是個垂類搜索,可是麻雀雖小五臟俱全,而且有地圖場景下不少有特點的的難點。將來咱們須要繼續使用業界先進的技術,而且結合地理文本的特色進行優化,理解將更加智能化。