如何使用padlepadle 進行意圖識別-開篇

前言    框架

     意圖識別是經過分類的辦法將句子或者咱們常說的query分到相應的意圖種類。舉一個簡單的例子,我想聽周杰倫的歌,這個query的意圖即是屬於音樂意圖,我想聽郭德綱的相聲即是屬於電臺意圖。作好了意圖識別之後對於不少nlp的應用都有很重要的提高,好比在搜索引擎領域使用意圖識別來獲取與用戶輸入的query最相關的信息。舉個例子,用戶在查詢"生化危機"時,咱們知道"生化危機"既有遊戲還有電影,歌曲等等,若是咱們經過意圖識別發現該用戶是想玩"生化危機"的遊戲時,那咱們直接將遊戲的查詢結果返回給用戶,就會節省用戶的搜索點擊次數,縮短搜索時間,大幅提升用戶的體驗。再進一步說,作好意圖識別之後,咱們能夠將一個用戶的query 限定到一個垂直領域好比經過意圖識別之後發現該用戶輸入的生化危機就是想找"生化危機"的遊戲進行下載,那麼咱們在遊戲這個領域下進行搜索能夠獲得更高質量的搜索結果,進一步提升搜索體驗。dom

   咱們再舉一個目前最火熱的聊天機器人來講明一下意圖識別的重要性。目前各式各樣的聊天機器人,智能客服,智能音箱所能處理的問題種類都是有限制的。好比某聊天機器人目前只有30個技能,那麼用戶向聊天機器人發出一個指令,聊天機器人首先得根據意圖識別將用戶的query分到某一個或者某幾個技能上去,而後再進行後續的處理。若是一開始的用戶意圖識別識別錯了,那麼後續的工做直接就是無用功了,會給用戶帶來很是很差的用戶體驗。搜索引擎

   說了這麼多,其實只是想說明意圖識別是一件很是重要的工做。咱們再來看看目前工業界的水平,就業界來看,目前一些公司的在特定領域的意圖識別準確率已經能夠達到96%甚至更高了,在能夠預見的將來意圖識別的準確率只會更高,覆蓋範圍只會更廣, 在通用領域達到99%,甚至99.9%也只是時間遲早的問題。而這個時間也許在兩到三年來就能夠到來。spa

   作好了意圖識別之後,那種相似於電影場景裏面人機交互就有了實現的可能,用戶向機器發來的每個query,機器都能準確的理解用戶的意圖,而後準確的給予回覆。人與機器連續,多輪天然的對話就能夠藉此實現了。想起來真的是很是的激動。日誌

意圖識別的前提索引

   在作這個工做以前,咱們首先得想好意圖的劃分問題,這種劃分業界有不少叫法,好比技能。咱們的聊天機器人有30個技能,潛在乎思即是咱們的意圖有30類。在2018年的CES上面,Google Assistant 號稱有100萬個技能,這個真的只能說太厲害了。還有一種很通用的叫法叫領域 或者doamin,搜索引擎中的垂域搜索的意思是把用戶的query分爲不少特定的領域好比電臺領域,音樂領域。搜索的時候根據意圖識別認爲這個query屬於電臺領域,因而便在電臺領域進行搜索。若是意圖識別的準確率比較高的話,這樣即可以大大加快搜索的速度和準確性。遊戲

   不少Google Assistant的技能也許只是簡單的堆疊,可是對於聊天機器人來講,咱們業界一直有個觀點,意圖識別雖然是聊天機器人很是重要的一個部分,可是解析用戶的語義已經慢慢再也不成爲對話機器人的核心,識別用戶的意圖之後提供的服務開始成爲對話機器人的產品差別化的核心。Goole Home 的100萬個技能,絕對是這個領域殺手級別的競爭力。ci

   其次是應該想好意圖識別的可擴展能力,尤爲是在搜索領域,對話系統領域,隨着意圖覆蓋的範圍急劇增長,如何保證意圖的識別的準確率不降低甚至還能有提高實際上是個很困難的事情,可是也很是的重要,甚至也許是意圖識別最重要的一件事。否則你覆蓋的技能數上去了,可是意圖識別的準確率下來了,其實不少時候是沒有什麼意義的。開發

   意圖識別可擴展能力的另一方面體如今簡單技能的自動化生成,複雜技能的半自動化生成或者第三方開發者的開發技能的快速接入。在能夠預見的將來,對話機器人的技能增長速度會很是的快。相似於Google Assistant 的100萬個技能,單憑人力或者某一家公司去開發100萬個技能,得開發到猴年馬月去了。自動化生成對話系統的技能,而且保持足夠的開放性是每一家有追求的聊天機器人廠商應該嚴肅思考的問題。從業界來看,不少國內聊天機器人的公司這一塊可能纔剛剛起步,嘴上說着要開放,心裏其實比較抗拒,工做排期排的很後。至於技能自動化生成也許尚未思考到這一步來。博客

   最後一個方面是技能的評價問題,當一個開發者開發完一個技能或者模型自動化生成一個技能之後如何評價一個技能生成的好壞也是很是重要的。簡單一點來講雖然咱們生成了一個技能,可是也不能生成一個技能就接入到咱們的搜素引擎當中或者對話系統中來,必需得符合必定的標準。好比咱們在搜索引擎當中開發了音樂 domain的垂域搜索.當咱們的意圖識別準確的判別用戶的query"我想聽周杰倫的歌"屬於音樂這個domain,並將query分過來到音樂領域進行垂域搜索。若是音樂的垂域搜索作的不好給用戶返回的都是陳奕迅的歌。用戶體驗也不會很好。就我看來,技能評價應該至少包括兩個方面評價。第一個方面是效果上面的,若是咱們用precision和recall來評價的話,每個接入的domain或者技能 的F1值必需大於某個值才能夠接入。第二個方面是工程上面的,每一個接入的技能都必須考慮到訪問量大了之後不能宕機。這個對本公司開發的技能不會有大的問題,可是第三方開發的技能,不少時候只考慮了功能的實現和效果上面的問題,每每不會考慮訪問量或者qps大了之後怎麼處理,結果就會形成總體服務超時。因此這一點也是須要慎重考慮的。

意圖識別的基本方法

   1.基於詞典以及模版的規則方法

       不一樣的意圖會有的不一樣的領域詞典,好比書名,歌曲名,商品名等等。當一個用戶的意圖來了之後咱們根據意圖和詞典的匹配程度或者重合程度來進行判斷,最簡單一個規則是哪一個domain的詞典重合程度高,就將該query判別給這個領域。這個工做的重點即是領域詞典便須得作的足夠好。

   2.基於查詢點擊日誌

      若是是搜索引擎等類型業務場景,那麼咱們能夠經過點擊日誌獲得用戶的意圖。

   3.基於分類模型來對用戶的意圖進行判別

      使用分類方法是咱們本次博客的重點,咱們將會使用paddle做爲模型的基本框架以CNN外接softmax 和LSTM外接softmax來進行意圖識別方面工做的探索。本系列也初步定爲三篇博客,本篇會做爲開端篇作一些意圖識別方面的介紹。第二篇是會使用LSTM+softmax來進行文本分類。第三篇會使用CNN 外接softmax來進行文本分類。

意圖識別的難點

    當前意圖識別工做的難點有不少,在以前的介紹中也提到了一些,可是最大的難點實際上是在於標註數據的獲取。目前標註數據的獲取主要來自兩方面,一方面是專門的數據標註團隊對數據進行標註,一方面是經過半監督的方式自動生成標註數據,我後續會在調研之後,來專門進行這方面的介紹。本次會利用已有的標註數據來進行介紹。

總結

本次介紹了意圖識別是什麼,意圖識別的重要性,意圖識別的難點以及後續的博客計劃,本質上來講意圖識別是屬於文本分類的一種,和情感分析這類工做沒有什麼很大的區別。可是相比於情感分析,意圖識別的分類種類要比以前多了不少,準確性以及可擴展性的要求也高了很多。敬請期待後續博客的更新。

相關文章
相關標籤/搜索