一、對話式交互技術(shù)
以智能音箱、智能電視為代表的對話式交互,是時下非?;馃岬?、且能夠走近我們生活的人工智能子領(lǐng)域。
什么是對話式交互呢?我們首先從一個例子開始。賈維斯,電影《鋼鐵俠》中那位鋼鐵俠的 AI 管家,他能獨(dú)立思考、可以實(shí)時幫鋼鐵俠處理各種事情,包括計算海量數(shù)據(jù)。其中最讓觀眾印象深刻的就是,賈維斯可以隨時隨地像人一樣進(jìn)行口語交流,來解決鋼鐵俠的問題。
賈維斯能聽、會說,能實(shí)時理解主人的對話意圖并根據(jù)實(shí)際場景進(jìn)行下一步的對話,如果在對話過程中碰到有歧義的情況,他還會追問鋼鐵俠,讓他提供更多的信息來消除歧義。賈維斯的這些能力就是對話式交互要提供的,其中的核心是 VUI (Voice User Interface,語音用戶界面)的設(shè)計。相對于 GUI(Graphical User Interface,圖形用戶界面),VUI 解放了人的雙手,某些場景下,簡單的一句語音命令就能代替 GUI 下鼠標(biāo) / 遙控器的多次點(diǎn)擊,這帶來的不只是方便,還節(jié)省了時間。一個好的 VUI 系統(tǒng),能夠讓用戶盡可能通過最少輪次的對話實(shí)現(xiàn)既定意圖的執(zhí)行。賈維斯總能在危機(jī)時刻幫到鋼鐵俠,他是一個具有完美 VUI 的語音助手。
嗯,我們不要入戲過深,賈維斯是一部電影里的虛擬系統(tǒng)。那么,現(xiàn)實(shí)生活中,我們能創(chuàng)造出來一個接近賈維斯的對話式交互系統(tǒng)嗎?我們該怎么做呢?呃,很遺憾,以當(dāng)前的科技發(fā)展水平,我們還做不到電影里那么智能,更不用說讓機(jī)器有意識。但人機(jī)交互并不是昨天才發(fā)明出來的,人類在這個領(lǐng)域已經(jīng)探索了幾十年,我們可以實(shí)現(xiàn)鋼鐵俠與賈維斯的交互方式,并用這種方式來幫我們處理一些數(shù)據(jù)或控制我們身邊的一些硬件設(shè)備(比如讓語音助手根據(jù)天氣提供穿衣建議或者控制廚房和臥室的各個家電),這就是我們要聊的對話式交互技術(shù)。
對話式交互技術(shù)包括了語音識別 / 合成、語義理解和對話管理三個部分。當(dāng)下的對話式交互產(chǎn)品主要分兩類:以微軟小冰為代表的開放域(Open Domain)對話系統(tǒng)和以亞馬遜 Alex 為代表的任務(wù)導(dǎo)向(Task Oriented)對話系統(tǒng)。以現(xiàn)在的技術(shù)能力,在開放域聊天中,準(zhǔn)確理解用戶的話并給出正確答案的難度是很大的,因?yàn)槊鎸τ脩羟姘俟值奶釂?,機(jī)器對意圖的理解很可能出現(xiàn)錯誤,知識庫也可能涵蓋不了那么廣。開放域聊天更像是一個信息檢索系統(tǒng),基于已有知識庫,為用戶的輸入匹配到一個答案。這樣的對話能力是十分有限的,構(gòu)造一個完善的知識庫更是困難重重。而任務(wù)導(dǎo)向的對話系統(tǒng)旨在幫助用戶完成特定領(lǐng)域的任務(wù),比如”查詢天氣“、“訂酒店”,這種領(lǐng)域特定的對話系統(tǒng)的最大優(yōu)勢是實(shí)現(xiàn)起來相對有效并且易于產(chǎn)品化。
二、對話式交互流程
回顧一下鋼鐵俠和賈維斯的交互過程,我們以鋼鐵俠詢問賈維斯當(dāng)前裝備的損傷狀況為例,他們的對話可以概括如下:鋼鐵俠向賈維斯詢問,賈維斯接收到鋼鐵俠的話并理解他的意圖,然后去查詢相關(guān)數(shù)據(jù),最后把數(shù)據(jù)展示在屏幕上或讀出相關(guān)數(shù)據(jù)給鋼鐵俠聽。這個交互的過程可以總結(jié)成下面這張圖:
? ? ? 鋼鐵俠向賈維斯詢問:鋼鐵俠的語音流發(fā)送給賈維斯。
? ? ? 賈維斯接收到鋼鐵俠的話:賈維斯將語音識別為對應(yīng)的文字,并將口語化的文本歸一、糾錯,并書面化。
? ? ? 理解他的意圖:賈維斯進(jìn)行語義理解,并進(jìn)入對話管理。這里省去了多輪對話的示意,當(dāng)意圖相關(guān)信息不明確時,賈維斯會發(fā)起確認(rèn)對話,鋼鐵俠也可以根據(jù)賈維斯的反饋,繼續(xù)問其他相關(guān)內(nèi)容,這些都是語義理解和對話管理服務(wù)的范疇。
? ? ? 然后去查詢相關(guān)數(shù)據(jù):在對話式交互服務(wù)中,這個流程的提供者我們稱其為內(nèi)容服務(wù)。
? ? ? 最后把數(shù)據(jù)展示在屏幕上:對話結(jié)束,產(chǎn)生執(zhí)行動作。
? ? ? 或讀出相關(guān)數(shù)據(jù)給鋼鐵俠聽:對話結(jié)束,語言生成文本經(jīng)過語音合成服務(wù),轉(zhuǎn)換為語音流,播報給用戶。
我們一般稱將這樣的對話式交互系統(tǒng)為語音對話系統(tǒng)(Spoken Dialog System)。這里簡單描述下各個組件。
語音識別 ASR
ASR(Automatic Speech Recognition)直譯為自動語音識別,是一種通過聲學(xué)模型和語言模型,將人的語音識別為文本的技術(shù)。近年來,隨著深度學(xué)習(xí)在語音識別中的廣泛使用,識別的準(zhǔn)確率大大提高,讓這項(xiàng)技術(shù)能被廣泛地應(yīng)用于語音輸入、語音搜索、實(shí)時翻譯、智能家居等領(lǐng)域,讓人與機(jī)器的語音交互變?yōu)榭赡堋?/p>
語義理解 NLU
語音識別只是知道我們說了什么,但真正要理解我們說的是什么,就需要依靠 NLU 這項(xiàng)技術(shù)。NLU(Natural Language Understand)直譯為自然語言理解,是 NLP(Natural Language Processing,自然語言處理)的一個子集,專注于“口語表達(dá)和對話”方向的自然語言處理。我們首先快速了解一下 NLP,NLP 研究主要用來解決下面這些問題:
? ? 分詞:中文的書寫詞語之間不會用空格等符號來分割,分詞就是將漢字序列切分成詞序列,因?yàn)樵跐h語中,詞是承載語義的基本單元。比如從北京飛上海這句話的分詞為:從 北京 飛 上海。
? ? ? 詞性標(biāo)注:詞性用來描述一個詞在上下文中的作用,如名詞、動詞、形容詞等,詞性標(biāo)注就是識別這些詞的詞性,來確定其在上下文中的作用。
? ? ? 命名實(shí)體識別:在句子中定位并識別人名、地名、機(jī)構(gòu)名、數(shù)字、日期等實(shí)體。
? ? ? 文本分類:文本分類就是將一篇文檔歸入預(yù)定義類別中的一個或幾個,比如將某一類郵件歸類為垃圾郵件,區(qū)分不同新聞的類型等。
? ? ? 情感分析:情感分析是找出說話者或文本作者對某個話題的兩極性觀點(diǎn)(積極或消極)、情緒(高興、悲傷、喜歡、厭惡等)。
自然語言理解通過使用上述技術(shù),完成指代消解、否定判斷、語句泛化、口語歸一化、ASR 糾錯等工作,識別人機(jī)對話中的領(lǐng)域和意圖,獲得對話任務(wù)的語義信息。我們可以通過下面幾個例子感受一下:
1. 第 45 任美國總統(tǒng)是誰?
他是哪里出生的?他 = 唐納德·特朗普
2. 感覺怎么樣?
不太好 不要緊 沒問題 有問題 沒有問題 沒沒沒 沒事
3. 我要看溫情的電影 來個柔情的片子 我想看看暖心的影片
語義表示有多種形式,本系列使用的是最常見也是目前為止最成功的 " 框架語義(Frame Semantics)",即采用領(lǐng)域 ? ? ? (Domain)、意圖(Intent)和詞槽(Slot)來表示語義結(jié)果。
? ? ? 領(lǐng)域(Domain):領(lǐng)域是指同一類型的數(shù)據(jù)或資源,以及圍繞這些數(shù)據(jù)或資源提供的服務(wù)。比如“天氣”、“音樂”、“酒店”等。
? ? ? 意圖(Intent):意圖是指對于領(lǐng)域數(shù)據(jù)的操作,一般以動賓短語來命名,比如音樂領(lǐng)域有“查詢歌曲”、“播放音樂”、“暫停音樂”等意圖。
? ? ? 詞槽(Slot):詞槽用來存放領(lǐng)域的屬性,比如音樂領(lǐng)域有“歌曲名”、“歌手”等詞槽。
舉個例子,從“北京明天天氣怎么樣”這句話中,NLU 可以得到以下語義結(jié)果
? ? 領(lǐng)域(Domain):天氣
? ? ? 意圖(Intent):查詢天氣
? ? ? 詞槽(Slot):
? ? ? ? ○ 城市(city) = 北京
? ? ? ? ○ 時間(date) = 明天
對話管理 DM
DM(Dialog Management)直譯為對話管理,是對話式交互系統(tǒng)的核心,負(fù)責(zé)控制整個對話過程。主要包括對話上下文(Dialog Context)、對話狀態(tài)跟蹤(Dialog State Tracking)和對話策略(Dialog Policy)幾部分。
? ? 對話上下文:記錄對話的領(lǐng)域、意圖和詞槽數(shù)據(jù),每個領(lǐng)域可能包含多個意圖的數(shù)據(jù), 一般以隊列的形式存儲。
? ? ? 對話狀態(tài)跟蹤:每輪對話開始后,會結(jié)合本輪對話提供的語義信息和上下文數(shù)據(jù),確定當(dāng)前對話狀態(tài),同時會補(bǔ)全或替換詞槽。
? ? ? 對話策略:根據(jù)對話狀態(tài)和具體任務(wù)決定要執(zhí)行什么動作,比如進(jìn)一步詢問用戶以獲得更多的信息、調(diào)用內(nèi)容服務(wù)等。
同樣以天氣場景的對話舉例說明:
Q:明天天氣怎么樣?(intent=query_weather,date= 明天,city=null) A:您要查詢哪個城市的天氣?(action= 詢問查詢哪個城市)
Q:北京的 (intent=query_weather,date= 明天,city= 北京) A:北京明天晴(action= 調(diào)用天氣服務(wù))
Q:那杭州呢?(intent=query_weather,date= 明天,city= 杭州) A:杭州明天小雨(action= 調(diào)用天氣服務(wù))
Q:后天天氣(intent=query_weather,date= 后天,city= 杭州) A:杭州后天小雪(action= 調(diào)用天氣服務(wù))
假設(shè)我們要查詢天氣信息。查詢天氣這個意圖需要兩個必選詞槽,城市和日期。也就是說,只有當(dāng)這兩個詞槽都有數(shù)據(jù)時才能查詢天氣服務(wù),得到天氣數(shù)據(jù)。從上面對話場景中可以看到,對話管理模塊會維護(hù)多輪對話上下文數(shù)據(jù)(包含意圖和詞槽等),跟蹤對話狀態(tài),填補(bǔ)或替換詞槽數(shù)據(jù),并決定如何與用戶交互或執(zhí)行什么樣的動作。比如缺少必選詞槽時,對話系統(tǒng)會追問用戶,以補(bǔ)全詞槽。
對話生成 NLG
NLG(Natural Language Generation)直譯為自然語言生成,即對話生成的技術(shù)。對于任務(wù)導(dǎo)向的對話來說,NLG 基本以模板形式來實(shí)現(xiàn)。模板中的回復(fù)信息可由詞槽或通過內(nèi)容服務(wù)得到的數(shù)據(jù)來替換。對話生成的原則是符合自然語言交互的習(xí)慣,易于用戶理解,最快完成對話。此外,NLG 還可以用于引導(dǎo)用戶的交流習(xí)慣,比如 NLG 的內(nèi)容為 " 已經(jīng)為你開啟導(dǎo)航 ",可以引導(dǎo)用戶在希望導(dǎo)航時,說 " 開啟導(dǎo)航 "。
語音合成 TTS
TTS(Text To Speech)是指語音合成技術(shù)。對話系統(tǒng)的輸出是文本形式的 NLG 或者指令,當(dāng)對話返回的內(nèi)容是 NLG 時,通過 TTS 技術(shù)能將這些文本轉(zhuǎn)換成流暢的語音,播放給用戶。TTS 技術(shù)提供語速、音調(diào)、音量、音頻碼率上的控制,打破 GUI 中傳統(tǒng)的文字式人機(jī)交互方式,讓人機(jī)溝通更自然。
講完了對話式交互的流程和關(guān)鍵技術(shù),接下來來我們再深入思考下對話式交互的產(chǎn)品化。
三、VUI 語音用戶界面
GUI(Graphical User Interface),即圖形用戶界面,是我們最熟悉的人機(jī)交互方式。我們每天面對的 PC 和手機(jī),無論是使用鼠標(biāo)點(diǎn)擊還是手指操作觸摸屏,我們早已習(xí)慣了這種無聲的圖形界面交流方式。隨著 AI 技術(shù)的發(fā)展,對話式交互逐漸走近我們的生活,我們和機(jī)器之間的交互從 GUI 邁向了 VUI(Voice User Interface),即語音用戶界面。VUI 是語音應(yīng)用 / 設(shè)備的入口,當(dāng)你說 "Hey Google" 的時候,Google Home 的音箱就會被喚醒,進(jìn)而與你交流。語音成為了 VUI 世界的連接者,就像 GUI 時代的鼠標(biāo)和手指。
相比 GUI 需要用戶動手觸發(fā)某個動作后結(jié)果只能以視覺形式展現(xiàn)給用戶,VUI 有自己獨(dú)特的優(yōu)點(diǎn),它可以解放用戶的雙手和雙眼,無需手持或者緊盯著設(shè)備,用說話這種更自然的方式去觸發(fā)動作,而返回結(jié)果則以語音方式播放給用戶聽。這在一些像駕駛、做飯、跑步等無法動手操作的場景下特別有用。設(shè)計良好的 VUI,會以最少的交互完成用戶的意圖,能極大地提升用戶體驗(yàn)。比如,通過學(xué)習(xí)用戶習(xí)慣從而為用戶提供 " 條件反射式 " 的服務(wù)、更口語化的交流、引導(dǎo)用戶收斂話題,通過詢問糾正異常情況(當(dāng)用戶不按套路出牌時)等。
在 GUI 中,用戶的行為流程是預(yù)先設(shè)計好的,比如在某個界面能觸發(fā)什么動作都是固定的,或者有個一級一級的引導(dǎo)關(guān)系,用戶只能按照設(shè)定好的流程去做。而在 VUI 中,用戶的行為則是無法預(yù)測的,不同用戶在不同的場景下的行為可能完全不一樣,而且語音交互需要用戶高度集中注意力去聽系統(tǒng)說了什么。在一些場景下反而會帶來不便,比如在電視上想看一個節(jié)目列表,用圖形界面展示的方式會更直觀一點(diǎn),用戶可以慢慢看,但用語音播報的話,數(shù)據(jù)量大的時候,用戶很可能聽了后面的忘記前面的,效果反而不如 GUI 好。所以設(shè)計 VUI 時千萬不要讓用戶有認(rèn)知負(fù)荷,不要挑戰(zhàn)人類短暫的記憶力。
聲音是自然的交互方式,但卻不能完全取代 GUI,它們是一個互補(bǔ)協(xié)作的關(guān)系。所以在設(shè)計語音交互界面時,可以把 VUI 和 GUI 結(jié)合起來,以實(shí)現(xiàn)多模態(tài)的智能交互。通過上面的描述,我們對 VUI 有了大致的了解,趁熱打鐵,我們來設(shè)計一個對話式交互產(chǎn)品。一起體會下對話平臺要注意哪些問題。
四、對話式交互產(chǎn)品的設(shè)計
設(shè)計一個好的對話式交互產(chǎn)品首先要突破 GUI 的設(shè)計思維。我們設(shè)計一個對話任務(wù)的目標(biāo)是最快速地解決用戶的問題。對話式交互產(chǎn)品重點(diǎn)是交互,因此一定要結(jié)合場景來設(shè)計,要把自己代入對話場景中,想象如果自己使用這個語音界面,會在什么情況下使用、以怎樣的方式跟它對話、希望它怎么回復(fù)我們。
下面我總結(jié)出了一些設(shè)計步驟和原則,可以作為參考:
設(shè)計步驟
1. 選擇正確的用戶場景,提供優(yōu)質(zhì)對話體驗(yàn)
不要嘗試直接把現(xiàn)有的手機(jī)或桌面應(yīng)用的交互方式轉(zhuǎn)變成語音交互,這樣可能會讓語音交互變得更加復(fù)雜。我們應(yīng)該結(jié)合用戶使用語音交互時的狀態(tài),比如在戶外不方便看網(wǎng)頁或屏幕,或者雙手被占用無法操作別的東西。
這里有以下幾點(diǎn)建議來幫忙選擇適合轉(zhuǎn)換成語音交互的場景:
? ? ?需要用戶輸入的特別熟悉的信息,比如個人信息、位置、時間等。
? ? ?能快速提供有用信息的場景,用戶說幾句話就能節(jié)省很多操作,比如訂餐、叫車。
? ? ?天生適合語音交互的場景,比如做飯時聽菜譜、開車時做筆記。
2. 創(chuàng)建符合當(dāng)前場景的對話風(fēng)格和形象
開始設(shè)計語音交互之前,先考慮你希望它聽起來怎么樣,能帶給人怎樣的感受。比如要設(shè)計個趣味游戲,你可能想要一種搞笑風(fēng)格;而設(shè)計個新聞閱讀器,就需要嚴(yán)肅認(rèn)真的語氣,給人靠譜的感覺。
3. 編寫對話
選好場景、確定形象后,你可能想要馬上投入開發(fā),但是一定要拒絕沖動。相反,我們要用紙和筆先構(gòu)思一下對話。寫下用戶可能參與的獨(dú)立或多輪對話,下面是一些對話類型和可能需要考慮的問題:
? ? ?完成對話任務(wù)最簡單的方式,不要太復(fù)雜。
? ? ?完成對話任務(wù)的其他方式,這可能是多樣化的,因?yàn)橛械挠脩粢淮沃徽f一部分信息,這就需要多次交互才能完成任務(wù),而有的用戶則一次把所有信息說完。
? ? ?需要修正的對話場景,比如系統(tǒng)不支持,或不理解用戶的意圖。
? ? ?用戶中途結(jié)束對話,或完成對話任務(wù)后,怎么確認(rèn)結(jié)束對話場景。
? ? ?問候語,以及怎么引出對話場景。
? ? ?語音交互部分搞定后,需要考慮怎么在設(shè)備屏幕上展示對話內(nèi)容。比如對話通過語音方式說出了一部分內(nèi)容,而還有一些數(shù)據(jù)需要展示在屏幕上。
4. 進(jìn)行測試
測試沒有想象中的麻煩,你需要做的就是找一些開發(fā)團(tuán)隊之外的人,在沒有提示的情況下,讓他們用平時正常說話的方式使用你的產(chǎn)品,從各個角度測試對話。多試幾次可能就會發(fā)現(xiàn)哪些對話任務(wù)完成有困難,或者交互給人的感受怎么樣。
設(shè)計對話的目標(biāo)是滿足用戶的意圖,而不僅僅是完成一個功能。
設(shè)計原則
? ?給語音交互界面賦予一個擬人化的形象,不要讓用戶覺得太生硬,是在跟機(jī)器對話。
? ? ?保持簡潔,節(jié)省用戶的時間,提供有效的信息。
? ? ?信任用戶,用戶知道怎么講話,所以不要試圖教用戶怎么說,我們只需要提供最自然的方式,推進(jìn)對話進(jìn)展就可以。
? ? ?可以增加個性化能力,使用戶聽起來感到愉悅,但不要分散用戶注意力。
? ? ?使新用戶感興趣,也要吸引專家用戶,設(shè)計要面向海量用戶,而不是只滿足低端需求。
? ? ?輪流說話,當(dāng)輪到用戶說話時,不要貿(mào)然打斷。如果是問用戶問題,那就不要在他們回答問題的時候又突然插入其他指令。
? ? ?不要猜測用戶的意圖,給用戶展現(xiàn)事實(shí),讓他們自己決定。
? ? ?結(jié)合上下文語境,追蹤對話的來龍去脈,保證準(zhǔn)確理解用戶的話。
綜上,我們對對話式交互有了比較全面的認(rèn)識,本系列接下來的三篇文章將以本篇講述的對話式交互知識為背景,深度講述亞馬遜、谷歌和微軟的語音交互平臺,和大家一起分享如何在這三大平臺上,實(shí)現(xiàn)我們自己的對話式交互技能。這里對技能的定義是特定領(lǐng)域的對話能力,包括語義理解、對話邏輯控制和相關(guān)的內(nèi)容服務(wù)。
評論