CUI三部曲之自然語言處理——機器如何理解你的話?

在智能時代,以對話為主要交互形式的CUI會應用到越來越多的場景中,這時機器往往需要能夠完成「聽懂——理解——回答」的閉環。它們相應地涉及到三類技術:語音識別、自然語言處理以及語音合成。 語音識別的任務是將用戶所說的話從音頻形式轉變為文字形式,自然語言處理的任務則是理解這些文字所要表達的意思(語義)。機器針對用戶的語義會給出相應的回答,並以語音的形式說給用戶聽,這就需要用到語音合成。

語音識別、自然語言理解與語音合成三者環環相扣,任何一環的失誤都無法使產品獲得良好的用戶體驗。

如果說語音識別是CUI交互的基礎,自然語言處理則是當之無愧的靈魂:無法理解用戶說話的意思,那和一台錄音機有什麼區別。

NLP與對話系統

自然語言即人類日常交流所使用的語言,與之相對的是人造語言(如各種編程語言)。自然語言處理(Natural Language Processing,NLP)主要研究機器如何理解自然語言文本的含義從而有效處理,以及人與機器之間如何通過自然語言有效通信。

NLP的應用非常廣泛,包括文本分類文本摘要機器翻譯輿情監測對話系統等,每個應用領域所涉及到的技術原理會有所差異。

以CUI為主要交互形式的對話產品,其核心是一個對話系統。在一個比較簡單的對話系統中,用戶輸入的文字主要會經過分詞詞性標註特徵提取分類檢索四個處理過程。

↑↑↑對話系統對文字的處理過程↑↑↑

(1)分詞

分詞指通過分詞模型,將一個文字序列切分成一個個詞或短語。單獨的漢字與字母往往很難表達語義,所以需要將文字序列變成由詞或短語組成的序列,作為後續處理的基礎。

英文的單詞之間存在空格作為分界,所以僅存在短語的劃分問題;而中文的文字之間沒有明顯的分界符來進行詞語上的劃分,所以中文分詞比英文分詞更加困難。

中文分詞的方法主要分為三類:基於匹配基於理解基於統計。基於匹配是指將文字序列與一個「詞典」中的詞語進行匹配,若在「詞典」中找到某個詞語與文字序列中的某幾個連續漢字匹配,則將這幾個連續漢字切分為一個詞;基於理解是指在分詞的同時進行句法、語義的分析,並利用句法和語義信息來幫助分詞;基於統計是指通過統計文字序列中的相鄰文字在大量文本數據中相鄰出現的頻率,來判斷它們是否組成了一個詞語。

(2)詞性標註

分詞模型將用戶輸入的文字序列變成「詞語序列」後,就需要通過標註模型,來標註這些詞語的詞性:即確定它們在這句話中是名詞、動詞還是代詞等等。

中文詞性標註相對英文較為簡單,因為一個中文詞語的詞性往往只有一個;即便一些中文詞語存在多個詞性,它的「主要」詞性出現的頻率也遠高於其餘詞性。據說在中文詞性標註時,只需「簡單粗暴」地為每個詞語選取它最主要的那個詞性,即可獲得還不錯標註準確率。在需要更高的標註準確率時,可採用隱馬爾可夫模型等方法。

(3)特徵提取

特徵提取是將用戶輸入的文字序列變成向量的過程。根據分詞與詞性標註的結果,可以根據某種規則來提取文字序列的若干個特徵,組成一個向量;向量的每個分量則描述了文字序列的一種特徵。文字序列變成了機器擅長處理的向量形式後,即可進行後續的分類與檢索。

(4)分類檢索

分類與檢索通過分類器(用於分類的模型,如神經網路)與FAQ(儲存著很多「問題」與對應「答案」的資料庫)來完成。

↑↑↑FAQ中的「問題」與「答案」↑↑↑

FAQ中儲存的一個個「問題」,在機器眼裡是一個個向量。通過特徵提取得到用戶輸入的文字序列所對應的向量之後,就可以利用分類器,通過向量與向量之間相似程度的計算,來等效獲得用戶輸入與FAQ中各個「問題」的相似程度。

↑↑↑文字在對話系統中的變化過程↑↑↑

通過比較用戶輸入與FAQ中各個「問題」的相似程度的大小,就能檢索出與用戶輸入最為「匹配」的那一個,從而將它所對應的「答案」作為回答,輸出給用戶。

值得一提的是,如今AI界的網紅深度學習正是通過分詞模型標註模型以及分類器的訓練來應用於對話系統中的。這些模型可以選擇深度神經網路作為結構形式,然後通過大量數據訓練而得到。

此外,對於更加複雜的對話系統,還涉及到指代消解成分補全命名實體識別等NLP技術,同時在架構層面也需要具備對話管理器知識圖譜等模塊。這些進階版的科普內容,會在以後的文章中詳細闡述。

人工智慧的高枝果實

NLP是人工智慧的「高枝果實」,其難度一直被認為是人工智慧領域最高的之一。目前NLP所獲得的研究成果離真正準確地理解人類語言,與人類無障礙交流還相差甚遠。

↑↑↑畢竟too young too simple↑↑↑

NLP的難度主要來源於兩個方面:一是語言是人類自己所創造的東西,並不是客觀世界所存在的,所以非常主觀與多變;二是語言所傳遞的信息往往和上下文有關。

(1)語言的多變性

語言的多變最典型的體現就是一個意思有多種說法,以及同樣的詞語在不同的語言環境中表達不同的意思。比如同樣詢問一輛車的操控體驗,就有無數種說法:

賓士的操控性怎麼樣?n賓士好開嗎?n賓士開起來順手嗎?n……

又比如同樣一個動詞「打」,可以表達無數種不同的意思:

我要去打個車n他很想打人n你去把這個文件打一下n……

人類理解這些不同的說法並不困難,但對機器而言則是噩夢:單純根據字詞的意思推測語義,很多時候會得到錯誤的結果;如果要窮盡各種不同的表達方式來訓練一個模型,所需要的數據量則是天文數字;如果想把人類理解這些語言的「規則」告訴機器,又很難把這些規則總結清楚……

而且在日常交流時,還大量存在各種不規範說法、簡稱、習慣用法等。機器要想理解它們,分分鐘哭暈在廁所。

(2)上下文相關性

自然語言中上下文的相關性主要體現在某個語句所要表達的意思,往往和之前的談話內容有所關聯。比如:

A - 北京今天有霧霾嗎nB - 有,重度污染nA - 那明天呢nB - 別問了,最近天天都有nA - 那它啥時候會好點nB - 不知道

A在第二個問題中省略了提問內容「有霧霾嗎」,在第三個問題中用「它」指代了北京的空氣狀況,B都能夠聯繫上文準確領會。但讓機器去這樣做則是一個困難的問題。儘管像上面這樣簡單的對話目前的技術已經能夠處理,但更加複雜的上下文場景依然存在很大的挑戰。

產品只求恰到好處

NLP技術的不成熟並不代表它在今天無法發揮價值。前沿科技的落地永遠不必等到萬事俱備:技術需要深厚積澱產品只求恰到好處。唯有將現有的技術成果積極投入應用,才能有更多實際場景中的反饋來促進技術的發展。

應用在對話系統中時,NLP的「恰到好處」體現在三方面:支持特定語言應用於特定領域與場景明確特定的打開方式

(1)特定語言

不同語言的「字詞」差異很大,且存在不同的語法,所以機器對每一種語言的處理都需要專門針對這種語言收集數據訓練模型。如果需要支持處理的語言種類很多,工作量會十分龐大。

然而在開發一個對話產品時,往往只需支持一兩種較為通用的官方語言(比如標準的中英文)即可。隨著國際化與教育的發展,語言一定會越來越通用化和官方化,讓用戶使用較為通用的官方語言(支持一定程度上的語法不規範)來操作一個產品並不苛刻。

更重要的是,在技術尚不成熟的情況下,針對一種語言進行良好的語義理解已屬不易,分散研發力量支持多種語言必然會導致效果的下降。與其給用戶提供n條不靠譜的路不如集中精力先給出一條靠譜的來

(2)特定領域與場景

談話的內容往往與領域強相關,好比在談論汽車領域的問題時,醫療領域的內容就很難出現在談話中。

所以,在開發對話產品時,要明確這個產品是解決什麼領域的問題:是一個用於電商的智能客服,還是用來查天氣講笑話逗樂的陪聊機器人。明確了產品應用的領域之後,所對應涉及到的語料數據就局限了很多,便於更好地進行覆蓋。

同樣的領域還可以進一步分為不同的場景。比如開發一個面向汽車行業的對話產品,既可以針對售前場景解答客戶買車時的疑問,也可以針對售後場景解答客戶購車之後所遇到的問題,還可以通過與客服人員對話來訓練他們的基本話術。在垂直領域的基礎上細分特定場景可以獲得更加局限的語料範圍。

當然,一個對話產品也可以同時支持多個領域與場景,但仍然需要針對每個領域和場景分別進行訓練和開發然後進行集成。好比一個人可以同時掌握多項技能,但這些技能需要一項項的學習。

(3)特定打開方式

現階段的對話產品很難強大到讓用戶想怎麼說就怎麼說,所以對話產品應該設定一種對用戶使用有所限定,且仍能讓用戶覺得它有價值的「打開方式」。

比如對於智能客服產品,如果立足於完全替代企業的客服人員,那麼企業購買之後肯定會發現這個產品並不能達到宣稱的效果,必定會吐槽產品難用、虛假宣傳。

如果換一種打開方式,正視產品的局限性,把立足點從完全替代人工轉變成「機器回答60%標準問題,客服回答其他40%問題」的部分替代人工,那麼它就成為了一個技術可以實現且同樣對企業有價值的產品。

↑↑↑智能客服部分替代人工↑↑↑

總結

NLP是CUI交互中「聽懂——理解——回答」閉環的靈魂:機器無法理解用戶說話的意思,就沒有資格談交互。

NLP有很多應用領域,包括文本分類、文本摘要、機器翻譯、輿情監測與對話系統等。一個比較簡單的對話系統主要會涉及分詞、詞性標註、特徵提取、分類檢索等技術;複雜的對話系統還會涉及指代消解、成分補全、命名實體識別等技術。

NLP是人工智慧的高枝果實,人類目前的研究積累還非常初級。它的難度來源於兩個層面:一是語言本身的變化非常多,二是語言所傳遞的信息往往和上下文有關。

即便NLP在技術上還很不完善,但仍然需要積極的將現有技術成果落地應用。開發對話產品時,可通過支持特定語言、應用於特定領域與場景、明確特定的打開方式三個方面來規避技術的不成熟,獲得可用的產品。

依慣例,最後奉上一張圖作為總結。

歡迎關注微信公眾號「AI從入門到xx」,用一看就懂的語言分享AI知識與見解。

推薦閱讀:

別躲了,機器知道你們的關係 | 論文訪談間 #05
深度學習——分類之Inception v2——Batch Normalization
機器變成人的關鍵:具有感覺調控系統
系統的敘述一下終結者系列?
Unity 中的 AI 模擬群組行為

TAG:人工智能 | 科技 | 科普 |