本文是“達觀數(shù)據(jù)技術分享課“5 月 12 日大數(shù)據(jù)雜談社群分享內容整理。
人類自誕生以來就伴隨著各種信息的生產(chǎn)和獲取,如今這個信息爆炸的 DT 時代,人們更是被各種信息所包圍。我們知道,人獲取信息的方式主要有被動獲取和主動獲取兩種,其中被動獲取就是推薦的方式、主動獲取就是搜索的方式。
獲取信息是人類認知世界、生存發(fā)展的剛需,搜索就是最明確的一種方式,其體現(xiàn)的動作就是“出去找”,找食物、找地點等,到了互聯(lián)網(wǎng)時代,搜索引擎(Search Engine)就是滿足找信息這個需求的最好工具,你輸入想要找的內容(即在搜索框里輸入查詢詞,或稱為 Query),搜索引擎快速的給你最好的結果,這樣的剛需催生了谷歌、百度這樣的互聯(lián)網(wǎng)巨頭。
本次分享結合達觀在垂直搜索引擎建設方面的經(jīng)驗,主要圍繞以下內容展開:
- 用戶搜索意圖的理解及其難點解析
- 如何進行用戶搜索意圖理解
- 達觀數(shù)據(jù)用戶搜索意圖理解引擎介紹
用戶搜索意圖的理解及其難點解析
首先,讓我們從偏技術的角度來看看搜索引擎發(fā)展的幾個階段:
第一個階段,使用倒排索引解決匹配的效率問題,使用文檔模型解決基本的相關性,使搜索引擎變得可用、可擴展,代表比如 Infoseek 。但這一階段只保證了基本的文字相關性,搜索的真正效果是無法保證的。
第二個階段,使用超鏈模型,比如谷歌的 pagerank 和百度的超鏈分析。解決權威性問題,使搜索質量提升一個檔次。從這一階段搜索引擎開始快速普及與并進入商業(yè)化,為谷歌和百度這樣的公司帶來了豐厚的利潤。
第三個階段,一方面使用更復雜的規(guī)則和機器學習排序模型,綜合考慮了用戶的行為特征,如商品評論、點贊、收藏、購買等,使得搜索引擎的結果再次提升一個檔次,這些在電商等垂直搜索上表現(xiàn)的會更加明顯;另一方面,基于各種先進的自然語言處理技術,充分挖掘用戶搜索行為日志,對 query 進行分析改寫以召回更多更好的結果。
第四個階段,從“有框”搜索時代步入更加人工智能的“無框”搜索時代。人機交互方式也將更多的是問答式的自然語言加語音的方式,而搜索引擎也更像一個智能機器人,理解人的自然語言問題,提供更加直接有效的知識和答案。這一階段目前尚處于起步階段,谷歌、Amazon 以及一些優(yōu)秀的創(chuàng)業(yè)公司都在進行積極的探索。
搜索引擎涉及的技術非常的繁復,既有工程架構方面的,又有算法策略方面的。綜合來講,一個搜索引擎的技術構建主要包含三大部分:
- 對 query 的理解
- 對內容(文檔)的理解
- 對 query 和內容(文檔)的匹配和排序
我們今天主要探討其中的 Query Understanding,即對 query 的理解。對 query 的理解, 換句話說就是對用戶搜索意圖的理解。先看垂直搜索中的一些例子:
“附近的特價酒店”
“上海到揚州高速怎么走”
“小龍蝦最新報價”
“華為最新款手機”
“水”
這幾個例子都不能直接根據(jù) query 的字面意思去搜索,而是要理解用戶輸入文字背后的真實意圖。不過要準確理解 query 背后的用戶搜索意圖可不是那么容易的。
我們來分析一下理解用戶搜索詞背后的真實意圖識別存在哪些難點:
- 用戶輸入不規(guī)范,輸入方式多樣化,使用自然語言查詢,甚至非標準的自然語言。比如上面提到的“附近的特價酒店” 、“上海到揚州高速怎么走”都是自然語言查詢的例子,又如 “披星 ( ) 月”、“吾嘗終日而思矣, 下面“
- 用戶的查詢詞表現(xiàn)出多意圖,比如用戶搜索“變形金剛”,是指變形金剛的電影還是游戲? 搜索“仙劍奇?zhèn)b傳”是指游戲還是游戲軟件? 電影? 小說? 電商網(wǎng)站搜索“水”是指礦泉水?還是女生用的護膚水?
- 意圖強度,表現(xiàn)為不同用戶對相同的查詢有不同的需求強度。比如:宮保雞丁。宮保雞丁菜,菜譜需求占 90%。宮保雞丁歌曲,歌曲下載需求占 10%。又比如:荷塘月色。荷塘月色歌曲,歌曲下載需求占 70%。荷塘月色小區(qū),房產(chǎn)需求占 20%。荷塘月色菜,菜譜需求占 10%。
- 意圖存在時效性變化,就是隨著時間的推移一些查詢詞的意圖會發(fā)生變化。比如:華為 P10 國行版 3 月 24 日上市。3 月 21 日的查詢意圖:新聞 90%,百科 10%3 月 24 日的查詢意圖:新聞 70%,購買 25%,百科 5%5 月 1 日的查詢意圖:購買 50%,資訊 40%,其他 10%5 年以后的查詢意圖:百科 100%
- 數(shù)據(jù)冷啟動的問題,用戶行為數(shù)據(jù)較少時,很難準確獲取用戶的搜索意圖。
- 沒有固定的評估的標準,CTR、MAP、MRR、nDCG 這些可以量化的指標主要是針對搜索引擎的整體效果的,具體到用戶意圖的預測上并沒有標準的指標。
到這里,第一部分:用戶搜索意圖的理解及其難點解析 就講完了。回顧一下,首先我們從相對技術的角度分析了搜索引擎發(fā)展的四個主要階段,接著分析了搜索引擎的三個主要構件:對 query 的理解、對內容的理解、匹配和排序,最后對用戶搜索意圖理解的難點進行了分析。
如何識別用戶搜索意圖
首先我們來看一下用戶搜索意圖有哪些分類。一般把搜索意圖歸類為 3 種類型:導航類、信息類和事務類雅虎的研究人員在此基
礎上做了細化,將用戶搜索意圖劃分如下類別:
1.?導航類:用戶明確的要去某個站點,但又不想自己輸入 URL,比如用戶搜索“新浪網(wǎng)“
2.?信息類:又可以細分為如下幾種子類型,
直接型:用戶想知道關于一個話題某個方面明確的信息,比如“地球為什么是圓的”、“哪些水果維生素含量高”。間接型:用戶想了解關于某個話題的任意方面的信息,比如粉絲搜索“黃曉明”。建議型:用戶希望能夠搜索到一些建議、意見或者某方面的指導,比如“如何選股票”。定位型:用戶希望了解在現(xiàn)實生活中哪里可以找到某些產(chǎn)品或服務,比如“汽車維修”。列表型:用戶希望找到一批能夠滿足需求的信息,比如“陸家嘴附近的酒店”。
3.?資源類:這種類型的搜索目的是希望能夠從網(wǎng)上獲取某種資源,又可以細分為以下幾種子類型,
下載型:希望從網(wǎng)絡某個地方下載想要的產(chǎn)品或者服務,比如“USB 驅動下載”。娛樂型:用戶出于消遣的目的希望獲得一些有關信息,比如“益智小游戲”。交互型:用戶希望使用某個軟件或服務提供的結果,用戶希望找到一個網(wǎng)站,這個網(wǎng)站上可以直接計算房貸利息。獲取型:用戶希望獲取一種資源,這種資源的使用場合不限于電腦,比如“麥當勞優(yōu)惠券”,用戶希望搜到某個產(chǎn)品的折扣券,打印后在現(xiàn)實生活中使用。
查詢意圖理解的過程就是結合用戶歷史行為數(shù)據(jù)對 query 進行各種分析處理的過程,包括查詢糾錯、查詢詞自動提示、查詢擴展,查詢自動分類、語義標簽等。
下面這張圖是一個具體的例子說明 query understanding 的工作過程:
稍微解釋一下這張圖:
- 用戶的原始 query 是 “michal jrdan”
- Query Correction 模塊進行拼寫糾錯后的結果為:“Michael Jordan”
- Query Suggestion 模塊進行下拉提示的結果為:“Michael Jordan berkley”和 “Michael Jordan NBA”,假設用戶選擇了“Michael Jordan berkley”
- Query Expansion 模型進行查詢擴展后的結果為:“Michael Jordan berkley”和 “Michael I. Jordan berkley”
- Query Classification 模塊進行查詢分類的結果為:academic
- 最后語義標簽(Semantic Tagging)模塊進行命名實體識別、屬性識別后的結果為:[Michael Jordan: 人名][berkley:location]:academic
下面我們逐一的來看看這面這些模塊內部細節(jié)。
首先看一下 Query Correction 模塊,也即查詢糾錯模塊。
對于英文,最基本的語義元素是單詞,因此拼寫錯誤主要分為兩種:一種是 Non-word Error,指單詞本身就是拼錯的,比如將“happy”拼成“hbppy”,“hbppy”本身不是一個詞。另外一種是 Real-word Error,指單詞雖拼寫正確但是結合上下文語境確是錯誤的,比如“two eyes”寫成“too eyes”,“too”在這里是明顯錯誤的拼寫。
而對于中文,最小的語義單元是字,往往不會出現(xiàn)錯字的情況,因為現(xiàn)在每個漢字幾乎都是通過輸入法輸入設備,不像手寫漢字也許會出錯。雖然漢字可以單字成詞,但是兩個或以上的漢字組合成的詞卻是更常見的語義元素,這種組合帶來了類似英文的 Non-word Error,比如“大數(shù)據(jù)”寫成“大樹據(jù)”,雖然每個字是對的,但是整體卻不是一個詞,也就是所謂的別字。
query 糾錯的具體方案有:
- 基于編輯距離
- 基于噪聲信道模型
先看看編輯距離的方法
編輯距離包括刪除(del)、增加(ins)、替換(sub)和顛倒(trans)四種轉移操作,對應四種轉移矩陣。這些轉移矩陣的概率可以通過對語料庫統(tǒng)計大量的正確詞和錯誤詞對來得到。
中文詞語的編輯距離轉換存在較大的轉義風險。比如,雷鋒 ->雷峰塔。中文糾錯通常以拼音為基礎,編輯距離等其他方式為輔的策略。
基于噪聲信道模型的糾錯方法:
噪聲信道模型(Noisy Channel Model)最早是香農為了模型化信道的通信問題,在信息熵概念上提出的模型,目標是優(yōu)化噪聲信道中信號傳輸?shù)耐掏铝亢蜏蚀_率。對于自然語言處理而言,噪聲信道模型如下圖,其中 I 表示輸入,O 表示經(jīng)過噪聲信道后的輸出,I’表示經(jīng)過解碼后最有可能的輸入。
自然語言處理中的機器翻譯,詞性標注,語音識別等多個問題都可以使用信道噪聲模型來解決,對于糾錯問題也可以使用信道噪聲模型來解決,相應的求解問題可以用公式表達:
其中 p(x|w) 是正確的詞編輯成為錯誤詞 x 的轉移概率,p(w) 是正確詞的概率,p(x) 是錯誤詞的概率。
噪聲信道模型和 Non-word 糾錯類似,只是計算目標從某個候選詞的最大概率變成不同位置候選詞組合形成的句子 p(s) 的最大概率,這個問題可以使用 HMM(Hidden Markov model,隱馬爾可夫模型)求解。
除了上述 2 種方法,真實的場景中,還會結合搜索日志的 session 分析和點擊模型來進行糾錯結果的排序調整。這里不再展開。
現(xiàn)在我們再看看 Query Suggest 模塊,Query Suggest,也即輸入下拉提示,根據(jù)用戶輸入的查詢詞前綴自動提示用戶最有可能輸入的完整查詢詞列表。
這里涉及幾個問題:
- Suggest 詞條來從哪里來
- 如何根據(jù)當前的輸入快速匹配到候選 suggest 詞條列表
- 如何對候選 suggest 詞條列表進行排序
suggest 詞條通常主要來自用戶搜索歷史 query log,但存在數(shù)據(jù)冷啟動的問題,開始時缺少 query log 時如何處理?對于一些垂直的應用場景,比如小說搜索中,suggest 詞條也可以是作品的標題、標簽、作家名等,電商搜索中可以是品牌詞庫、產(chǎn)品列表等。
對于 suggest 詞條列表的存儲結構與快速匹配,如果 suggest 詞條列表不是很大,Trie 樹(又稱字典樹)是一個不錯的選擇,用 Trie 樹實現(xiàn)的主要優(yōu)點是利用字符串的公共前綴來降低查詢時間的開銷以達到提高效率的目的,實現(xiàn)也比較簡單,但缺點是節(jié)點數(shù)增加到一定程度內存開銷會成為瓶頸。如果 suggest 詞條列表很大,可以選擇 Ternary Tree(又稱三叉搜索樹), 三叉搜索樹對 Trie 的內存問題(空的指針數(shù)組)進行了專門優(yōu)化,具體細節(jié)大家可以 google,這里不再深入。
Suggest 候選詞的排序通常根據(jù)候選詞項的整體熱門指數(shù),即搜索的多的排在前面。當然實際應用場景中的排序會考慮更多的排序因素,比如個性化的因素,當下熱門指數(shù)等因素。
Query Expansion 查詢擴展模塊
查詢詞擴展技術通過將與用戶查詢詞相近、相關的詞擴展到用戶查詢詞中的方法, 更準確地描述用戶的信息需求, 去除用戶查詢詞的多義性, 從而更精確地查詢用戶所需信息。在信息檢索技術中, 查詢詞擴展是一種能夠有效提高查詢效率的技術。通過用戶搜索日志和點擊日志可以挖掘出查詢擴展詞。
我們在實踐中采用一種基于搜索日志會話局部上下文和全局上下文為語料庫使用 word2vec 構建 skip-gram 詞向量模型,根據(jù)詞向量模型可以取得與查詢詞最相似的前 N 個詞構成初步的相關候選詞表,然后再利用 K 近鄰算法從相關詞候選詞表選取出語義最相關的候選詞作為查詢詞的擴展詞。
搜索日志會話局部上下文是指與當前 query 在同一個會話上下文中的共現(xiàn) query, 也是用戶對 query 的查詢重構,比如初始 query 為“變形金剛”,用戶在查詢會話中可能將 query 變換為 “變形金剛電影”進行搜索,則“變形金剛電影”為原始 query 的局部上下文。
query 的全局上下文挖掘思路:
根據(jù)查詢詞和查詢所點擊的結果構建二部圖,利用隨機游走模型計算出每個查詢詞的文檔分布作為查詢詞的查詢向量,再利用 KL 距離來計算兩查詢向量之間的相似性。
Query Classification 查詢意圖分類模塊
通常有基于規(guī)則模板的分類方法和基于機器學習的分類方法。
一種是基于規(guī)則模板的分類方法,這種方法比較適用于查詢非常符合規(guī)則的類別,通過規(guī)則解析的方式來獲取查詢的意圖。比如:今天天氣怎么樣, 可以轉化為 [日期][實體: 天氣][詢問詞: 怎么樣]上海到曼谷的機票價格, 可以轉化為 [地點] 到 [地點][機票 / 車票 / 火車票] 價格
這種方法的對比較明確的規(guī)則性強的方式有精確的識別度,缺點是覆蓋度低,用戶查詢稍作變換可能就不 match 了,另外規(guī)則的發(fā)現(xiàn)和制定主要靠人工進行。
另一種是基于機器學習分類的方法。
如果有確定的查詢類別體系,基于機器學習的查詢意圖分類是一個不錯的選擇,可以選擇 SVM 作為分類器,關鍵在分類特征的選擇, 還有訓練樣本的準確標注。
這個和我們之前參加過的 2014 ACM CIKM 競賽的問題類似,那年 CIKM 競賽的題目是自動識別用戶的查詢意圖(Query Intent Detection,QID):給定一批標注過類別的搜索日志包括查詢日志和點擊日志作為訓練樣本,其中也有部分未標注的,類別為 unknown。
在特征的選擇方面,除了基本的 Query 的長度、Query 的頻次、Title 的長度、Title 的頻次、BM-25、Query 的首字、尾字等,我們通過對 log session 上下文的分析,進行了 Query 間特征詞匯的挖掘,運用了 query 在相同 session 中的共現(xiàn)關系,挖掘 query 之間的子串包含關系,query 和點擊的 title 之間的文本特征關系等。
在分類模型的選擇方面,我們選擇了 Ensemble 框架。Ensemble 的基本思想是充分運用不同分類算法各種的優(yōu)勢,取長補短,組合形成一個強大的分類框架。不過 Ensemble 不是簡單的把多個分類器合并起來結果,或者簡單將分類結果按固定參數(shù)線性疊加 (例如不是 a1 * ALGO1 + a2 * ALGO2 + a3 * ALGO3),而是通過訓練 Ensemble 模型,來實現(xiàn)最優(yōu)的組合。
在 Ensemble 框架下,我們分類器分為兩個 Level: L1 層和 L2 層。L1 層是基礎分類器,L2 層基于 L1 層,將 L1 層的分類結果形成特征向量,再組合一些其他的特征后,形成 L2 層分類器(如 SVM)的輸入。這里需要特別留意的是用于 L2 層的訓練的樣本必須沒有在訓練 L1 層時使用過。
Semantic Tagging 模塊
這個模塊主要是對 query 中的命名實體進行識別,比如對電商搜索 query 中的品牌詞、產(chǎn)品詞、屬性詞、地址進行識別。對 query,用一個相對準確的詞典 (品牌詞 / 產(chǎn)品詞 / 屬性詞 / 地址詞) 去標注語料。
比如對于 ”新西蘭安佳奶粉二段“ 標注語料如下所示:新 B-loc 西 I-loc 蘭 I-loc 安 B-brand 佳 I-brand 奶 B-product 粉 I-product 二 B-attr 段 I-attr實體詞識別模型可以通過 crf 來進行訓練。
至此,第二部分 如何識別用戶搜索意圖 也講完了總結一下,我們首先簡單說明了用戶搜索意圖的主要分類:導航類、信息類、資源類,然后對搜索意圖識別的主要功能模塊查詢糾錯、查詢詞自動提示、查詢擴展,查詢自動分類、語義標簽等實現(xiàn)思路分別進行了介紹。
達觀搜索意圖識別引擎
達觀通過 RESTAPI 接口的方式向客戶提供基于公有云和私有云的搜索服務。其中語義分析模塊包含了對用戶 query 意圖的離線挖掘和在線預測。
達觀 query 意圖識別引擎內部組合了多粒度分詞、多歧義分詞、命名實體識別、詞匯間緊密度分析、詞匯重要性分析、同義近義詞分析、拼寫糾錯、拼音轉寫、高頻詞動態(tài)省略分析、需求詞識別、相關搜索詞、直達搜索詞分析等多個功能模塊。
引擎底層基于達觀統(tǒng)一的文本語義挖掘算法平臺:
達觀文本語義挖掘算法平臺是一個融合了多種算法的集成學習平臺,既包括經(jīng)典的 SVM、LR、RF、LDA 等算法,也包括 CNN、RNN、LSTM、BILSTM 等深度學習算法。比如在實踐中,我們嘗試將線性統(tǒng)計模型 CRF 和神經(jīng)網(wǎng)絡結構 LSTM 相融合的方法,在 LSTM 的輸出端將 softmax 與 CRF 結合起來,使用 LSTM 解決提取序列的特征問題,使用 CRF 有效利用了句子級別的標記信息,取得了不錯的效果。
由于時間有限,以上是本次分享的全部內容,感謝大家的參與,感興趣的同學后面可以繼續(xù)交流。
桂洪冠:像這種短 query 在電商搜索的場景中尤其多,比如用戶在某海淘網(wǎng)站中輸入的 query 很多為 “包”,“水”,這時挖掘用戶意圖要靠搜索的歷史行為數(shù)據(jù),首先可以從統(tǒng)計的角度看搜索了這些 query 的用戶大多點擊的是哪種類型的結果。另外我們也會結合用戶個體的行為數(shù)據(jù),識別出用戶個性化的標簽,比如他的類目偏好、品牌偏好等。
桂洪冠:除了對搜索日志和點擊日志的挖掘,實際我們還會對 item(文檔)的語料數(shù)據(jù)進行挖掘分析。對于垂直場景中 item 文本語料不足的問題,我們一般會根據(jù)不同的垂直場景,比如電商或視頻,去爬取相關的語料作為補充,另外我們也會把相同場景的多個客戶的 item 文本語料進行綜合處理,類似遷移學習的思路。
桂洪冠:我們的算法平臺是基于分布式的大規(guī)模數(shù)據(jù)處理平臺,底層基于阿里云提供的分布式基礎設施,平臺的水平擴展性保證了大規(guī)模數(shù)據(jù)模型訓練的性能。下周我的同事會給大家分享大規(guī)模機器學習算法,大家對這個專題感興趣的可以參加。
桂洪冠: 我今天在分享的開始提到過搜索引擎發(fā)展經(jīng)歷了四個階段,目前正在進行中的第四階段其實正是搜索引擎在往 AI 的發(fā)展階段,我覺得搜索引擎往 AI 方向的發(fā)展會表現(xiàn)出如下特征:
- 從有框搜索走向無框搜索
- 從關鍵字搜索走向更自然語言的問答式搜索
- 搜索的場景從文字轉向語音,而且未來搜索的場景入口遠遠不至于現(xiàn)在的 APP,智能音箱、智能電視、智能冰箱等設備將呈現(xiàn)出更多的人機交互的接口。人通過自然語言給設備發(fā)送執(zhí)行進行執(zhí)行,機器要理解人的語言并執(zhí)行相應的指令,這本質上就是搜索。