人機(jī)對話系統(tǒng),或者會話交互,有望成為物聯(lián)網(wǎng)時代的主要交互方式。而語言的理解與表達(dá)和知識是密切聯(lián)系的,知識圖譜作為一種大規(guī)模知識的表示形式,在人機(jī)對話系統(tǒng)中各模塊都有重要的應(yīng)用。而知性對話,則是基于知識圖譜的人機(jī)會話交互服務(wù)。
AI 科技大本營邀請到了云知聲 AI Labs 資深專家劉升平針對「基于知識圖譜的人機(jī)對話系統(tǒng)方法與實(shí)踐」做系統(tǒng)的講解和梳理。
本次公開課介紹了知性會話的架構(gòu)和關(guān)鍵技術(shù),并結(jié)合工業(yè)級的人機(jī)對話系統(tǒng)實(shí)踐經(jīng)驗(yàn),闡述了知識圖譜在人機(jī)對話系統(tǒng)的核心模塊上面的應(yīng)用等等。
劉升平:云知聲 AI Labs 資深技術(shù)專家/高級研發(fā)總監(jiān)。前 IBM 研究院資深研究員,中文信息學(xué)會語言與知識計算專委會委員。2005 年獲得北京大學(xué)數(shù)學(xué)學(xué)院博士,國內(nèi)語義網(wǎng)研究的開創(chuàng)者之一,是 2010 年和 2011 年國際語義網(wǎng)大會的程序委員會委員。曾在語義網(wǎng),機(jī)器學(xué)習(xí)、信息檢索,醫(yī)學(xué)信息學(xué)等領(lǐng)域發(fā)表過 20 多篇論文。在 IBM 工作期間,兩次獲得 IBM 研究成就獎。2012 年底,劉博士加入云知聲 AI Labs,領(lǐng)導(dǎo) NLP 團(tuán)隊(duì),全面負(fù)責(zé)自然語言理解和生成、人機(jī)對話系統(tǒng)、聊天機(jī)器人、知識圖譜、智慧醫(yī)療等方面的研發(fā)及管理工作。
在本次公開課上,他全面而具體地講述了知識圖譜在人機(jī)對話系統(tǒng)中的發(fā)展與應(yīng)用,主要分為以下四部分:
語言知識、對話系統(tǒng)綜述
知性會話的基本概念及案例分析
知性會話的關(guān)鍵技術(shù):知識圖譜的構(gòu)建,實(shí)體發(fā)現(xiàn)與鏈接
知性會話的關(guān)鍵技術(shù):話語理解及自然應(yīng)答生成
▌一、語言、知識與人機(jī)對話系統(tǒng)綜述
1.語言和知識
語言和知識是密切相關(guān)的。這張冰山圖很形象地解釋了語言和知識的關(guān)系,我們看到的語言只是冰山上的一小角,就是我們說的話。但是你如果想理解這句話,跟這句話相關(guān)的背景知識就像冰山下面這一大塊。
所以,這也是自然語言跟語音、圖像很不一樣的地方,我們聽語音或看一個圖片,它的所有信息都在語音信號或者圖像像素里,但是語言的話就完全不是這樣,這也是自然語言理解遠(yuǎn)遠(yuǎn)比語音識別或者圖像識別更難的一個地方。
這次的報告內(nèi)容綜合了我最近三年在CCKS會議上做的三個報告。
2. 人機(jī)對話系統(tǒng)
人機(jī)對話系統(tǒng)最早在工業(yè)界引起比較大的轟動是 Apple Siri,它當(dāng)時還是 iPhone 上的一個 APP,2010 年被蘋果收購了。Siri 的創(chuàng)新在于,我們傳統(tǒng)的手機(jī) GUI 界面上加了一個語音 Voice-UI。
真正引發(fā)人機(jī)對話系統(tǒng)革命性創(chuàng)新的是于 2014 年推出的 Amazon Echo,它是一個完全基于語音交互的硬件,其語音技術(shù)比 Siri 前進(jìn)了一大截,因?yàn)樗С诌h(yuǎn)講。
2017 年亞馬遜又推出了一個帶屏幕的音箱 Amazon Echo Show,大家覺得這是不是又回到 Siri,還是基于 GUI 呢?這里要注意區(qū)別, Amazon Echo 是 VUI+GUI,也就是說它是以 VUI 優(yōu)先的,因?yàn)檎Z音的優(yōu)勢是輸入很便捷,你說幾個字就能代表一段指令,可以代替操作很多界面。但缺點(diǎn)是輸出很低效,如果在屏幕上顯示很多內(nèi)容,但是你要用語音說出來,可能得花好幾分鐘。所以 VUI+GUI 的結(jié)合是把兩者優(yōu)勢做了整合,VUI 用來做輸入,GUI 用來做輸出。
更高級的形態(tài)是現(xiàn)在很多電影都能看到的像Eva、《鋼鐵俠》或者《西部世界》里面這種人形的機(jī)器人,完全可以跟人自由對話,它的交互是 VUI++,真正模擬人的多模態(tài)的交互形態(tài),這個時間點(diǎn)也許在 2045 年會出現(xiàn)。
為什么人機(jī)對話系統(tǒng)目前在工業(yè)界這么熱門?它最重要的一個意義是有望取代目前在手機(jī)上的 APP,成為 IoT 時代的一個最重要的人機(jī)交互形式,這是它的最主要意義所在。
3. 人機(jī)對話系統(tǒng)的交互形式和應(yīng)用場景
就像人和人說話有多種目的和形式一樣,人機(jī)對話系統(tǒng)也包含很多種交互形式:
1、聊天。典型代表是小冰,它包括問候和寒暄,其特點(diǎn)是沒有明確目的,而且不一定回答用戶的問題。聊天在現(xiàn)有的人機(jī)對話系統(tǒng)中主要是起到情感陪伴的作用。
2、問答。它要對用戶的問答給出精準(zhǔn)的答案。這些問題可以是事實(shí)性的問題,如“姚明有多高”,也可能是其他定義類,描述類或者比較類的問題。問答系統(tǒng)可以根據(jù)問答的數(shù)據(jù)來源分為基于常見問題-答案列表的FAQ問答,基于問答社區(qū)數(shù)據(jù)的CQA問答,基于知識庫的KBQA問答。
3、操控,只是解析出它的語義,來供第三方執(zhí)行,最典型的操控是打開空調(diào)、打開臺燈,或者播放某一首歌。
4、任務(wù)式對話。它是一個目的性很強(qiáng)的對話,目標(biāo)是收集信息,以完成某個填表單式的任務(wù),最常見的像訂外賣、訂酒店、訂機(jī)票,這種方式通過對話來做。
5、主動對話。讓機(jī)器主動發(fā)起話題,不同的是,前面的交互都是讓人來主動發(fā)起這個交互。
目前人機(jī)對話系統(tǒng)的應(yīng)用場景有很多,像音箱、電視、空調(diào)等等,其顯著特點(diǎn)是它不是人可以直接觸摸到的,可以將語音交互看成遙控器的一種替代品,有遙控器的地方就可以用語音來交互。
另外一個應(yīng)用場景是在車載方面,因?yàn)樵陂_車時,你的眼睛和手腳都被占用著,所以這時通過語音來接聽電話、導(dǎo)航甚至收發(fā)微信,是非常方便的,也比較安全。車載是剛需場景,所以目前出貨量最多是在這塊。像我們是從 2014 年開始做車載語音交互方案,到現(xiàn)在有 1500 多萬的出貨量。
另外一個應(yīng)用領(lǐng)域是兒童教育機(jī)器人,右下角這些各種形狀的兒童機(jī)器人,實(shí)際上可以看成兒童版的音箱,它的內(nèi)容是面向兒童的,但是交互形式也是人機(jī)對話的方式。
4. 人機(jī)對話技術(shù)架構(gòu)
人機(jī)對話系統(tǒng)從學(xué)術(shù)界來講,它的研究歷史非常悠久,可能 AI 提出以后,在七八十年代就開始研究。它的技術(shù)分為五大部分:
1、語音識別:主要解決復(fù)雜真實(shí)場景噪聲、用戶口音多樣的情況下,把人說的話轉(zhuǎn)成文字,即做到“聽得清”。
2、語義理解:主要是把用戶說的話轉(zhuǎn)成機(jī)器能理解執(zhí)行的指令或查詢,即做到“聽得懂”。
3、對話管理:維護(hù)對話狀態(tài)和目標(biāo),決定系統(tǒng)應(yīng)該怎么說、怎么問下一句話,也就是生成一個應(yīng)答的意圖。
4、自然語言生成:就是根據(jù)系統(tǒng)應(yīng)答的意圖,用自然語言把這個應(yīng)答意圖表達(dá)出來。
5、語音合成: 用機(jī)器合成的語音把這句話播報出來。
這樣形成一個完整人機(jī)對話的閉環(huán)。
5. 語音識別場景演進(jìn)
因?yàn)槿藱C(jī)對話系統(tǒng)是以語音作為入口,所以需要講講語音技術(shù)這塊的進(jìn)展。強(qiáng)調(diào)一點(diǎn)的是,如果想真正做好人機(jī)對話系統(tǒng),除了對自然語言處理技術(shù)了解之外,對語音技術(shù)也必須有所了解。
最早像 Siri 這樣的場景是近講模式,它最主要解決的問題是口音問題,目前這方面的識別準(zhǔn)確率非常高,已經(jīng)能做到 97% 左右,大家平時用的手機(jī)語音輸入法就是這種模式,一般建議離麥克風(fēng)的距離是30cm左右。
Amazon Echo 則是遠(yuǎn)講模式,你可以離麥克風(fēng)3 米甚至 5 米這么遠(yuǎn)。它要解決的問題很多,因?yàn)槟汶x它遠(yuǎn)了以后更容易受周邊噪音的影響,還有一個更致命的影響是聲音反射引起的混響問題,特別是在玻璃房里,聲音不斷在反射,麥克風(fēng)收到的聲音就是很多聲音混雜在一起。還有一個很不一樣的地方,就是我們用微信語音的時候可以按下說,或者按著一直說,但當(dāng)你面對一個音箱時,因?yàn)槟汶x它有 3-5 米遠(yuǎn),不可能按著說話的,這時就有新的技術(shù),叫“語音喚醒”,就像我們跟人說話時叫人的名字一樣,像“Hi,Google”,先喚醒機(jī)器,再同它對話。
目前語音識別最難的場景是人人對話,在人和人對話的時候,先對它做錄音,而且要把它轉(zhuǎn)成文字,這個最常見的場景像開會,自動把不同的人說話轉(zhuǎn)錄下來,甚至自動形成會議紀(jì)要。還有像司法的庭審,只要是和人說話的場景下都可以用到。這里面最難的問題是雞尾酒會問題,很多人在一起,環(huán)境很嘈雜,大家都在說話,人可以聽到只關(guān)注的人的說話,即使很嘈雜,但兩個人一樣可以聊天對話,但這對機(jī)器來說很難。
6.人機(jī)對話系統(tǒng)中的機(jī)器角色演進(jìn)
在人機(jī)對話里面機(jī)器的角色有個演進(jìn)的過程:最早人機(jī)對話很簡單,可以看成是個遙控器的替代品,用戶通過固定句式或者單句指令來控制這個系統(tǒng)。
Siri、Amazon Echo 是一種助手的形態(tài),也就是說,你可以通過自然語言交互,且對話是多輪的,甚至可以讓機(jī)器有些情感。
但是下一個階段是它會變成專家的角色,特別是面向行業(yè)或者特定領(lǐng)域時,當(dāng)我們跟音箱對話時,希望這個音箱同時也是一個音樂專家,它可以跟你聊音樂的問題,可以跟你聊古典音樂,甚至教你一些音樂知識。我們跟兒童教育機(jī)器人對話時,希望這個機(jī)器人是一個兒童教育專家,我們跟空調(diào)對話時希望后面是個空調(diào)專家。這時它的特點(diǎn)是需要有這個領(lǐng)域的知識,而且能夠幫你做推薦、做決策。
▌二、知性會話基本概念及示例分析
我們做對話必須理解這幾個概念——語義、語境、語用。特別是語境,它就是在對話時才有含義,語境就是指人和人發(fā)生對話時的一個具體環(huán)境,這個環(huán)境又包括言語語境,就是我們所說的上下文,還有很多非言語語境,如說話的時間、地點(diǎn)、天氣都是非言語語境,還有說話人的信息等等,我們今天強(qiáng)調(diào)的知識也是一種重要的非言語語境。
假如用戶說「太冷了」這三個字,語義是溫度有點(diǎn)低,但如果考慮語用,這句話在特定語境下面?zhèn)鬟f的會話意義、真實(shí)含義: 如果在車?yán)锩骈_著空調(diào),理解這句話的意思是把空調(diào)溫度調(diào)高一點(diǎn);如果是冬天沒有開空調(diào),這句話的意思可能是把車的暖氣打開,或者把車的窗戶關(guān)上;現(xiàn)在馬上到秋天了,如果一個女孩子對你說「太冷了」,她的含義可能是想讓你給她一個擁抱之類的。所以語境和語用是非常重要的概念,如果做人機(jī)對話系統(tǒng),都會接觸到這兩個概念。
1.人機(jī)(設(shè)備)對話系統(tǒng)下的語境
剛才是說人和人對話時,語境很關(guān)鍵,現(xiàn)在我們做人機(jī)對話系統(tǒng),人和設(shè)備對話的時候有哪些語境呢?
1、物理語境。也就是你說話當(dāng)時現(xiàn)場的信息,包括(1)時間、地點(diǎn)、場所,這個場所是指在車?yán)锘蛟诩依锏鹊取#?)天氣。(3)情緒和情感。(4)設(shè)備上面顯示的內(nèi)容。(5)設(shè)備能感知到的信息,比如我們和空調(diào)對話,空調(diào)能夠感知到室內(nèi)外的溫度、濕度。這個語境的生命周期是請求級的。
2、言語語境。(1)上下文,設(shè)備上和設(shè)備上面反饋的信息也是一種上下文,這個生命周期可以看成是會話級的。
3、知識語境。包括:
(1)人類的常識和領(lǐng)域知識。舉個簡單的例子,以前我們一句話叫「中國乒乓球隊(duì)誰也贏不了」,還有「中國足球隊(duì)也是誰也贏不了」,這兩句話看起來字面是一樣的,但人能夠理解這兩句話的差別,因?yàn)槲覀冇谐WR是:中國足球隊(duì)很弱,中國乒乓球隊(duì)很強(qiáng)。所以知識對這句話的理解至關(guān)重要。
(2)用戶畫像,包括用戶的一些基本信息,用戶的性別、年齡、文化水平、愛好等等。(3)Agent 畫像,就是這個機(jī)器人定義的信息,像小冰把它的 Agent 畫像定義為一個 18 歲的鄰家小妹。(4)設(shè)備信息庫,如果把音箱作為中控的話,中控連接的設(shè)備信息、設(shè)備狀態(tài)等都是語境。如果在家里對中控說「我回家了」這句話到底是什么含義?中控可能會根據(jù)你的設(shè)備狀態(tài)、根據(jù)當(dāng)前的環(huán)境情況,給你決定是開燈還是關(guān)燈,是給你開窗戶還是拉窗簾等等。
2. 不要神話知識圖譜
知識圖譜的歷史和概念大家已經(jīng)比較理解了,我這里主要強(qiáng)調(diào)幾個基本概念:最重要的知識圖譜概念就是「Things,Not Strings」,知識圖譜里面的東西都是一個個實(shí)體而不是字符串。
另外,我們也不要神化知識圖譜,它其實(shí)只是一種知識的組織形式而已。因?yàn)椴还茏鍪裁磻?yīng)用,在各種場景下都有知識,以前可能用其他方式來表示這個知識。在概念層,我們以前也接觸過類似的東西,就像我們做關(guān)于數(shù)據(jù)庫建模時用 ER 模型,它也是一種概念模型。我們寫程序,做面向?qū)ο笤O(shè)計時會畫些類圖,這些都是概念模型,這些模型都可以很方便的轉(zhuǎn)成知識圖譜來表示。我認(rèn)為知識圖譜首先是知識的一種組織形式。在數(shù)據(jù)層,知識圖譜是一種圖模型,它是用節(jié)點(diǎn)、邊來表達(dá)實(shí)體、值、關(guān)系和屬性等。
3. 什么是知性會話?
什么叫知性會話?我這里舉個例子,用戶可能跟音箱聊天:「你喜歡謝霆鋒?」「喜歡,他很酷」「你知道他女朋友是誰嗎?」「王菲」「來一首她的《傳奇》」這是一種操控,機(jī)器就會給你播放王菲的傳奇,播放之后系統(tǒng)還可以接著問說「你還想聽李鍵的原唱嗎?」這是一種主動對話,用戶說「好的」,系統(tǒng)可以播放李鍵的《傳奇》,用戶還可以問「他的音樂風(fēng)格是什么樣的?」系統(tǒng)說「李健的風(fēng)格,有民謠的簡潔,但比民謠華麗得多。」
你看這個例子的話,它涉及很多跟音樂相關(guān)的知識,還包括一些歌星的人物相關(guān)的知識。交互形式有聊天、問答、操控、主動對話,是通過知識把它們關(guān)聯(lián)在一起,你會感覺整個對話是個很流暢的對話。
總結(jié)下來,知性會話的意思是:它以知識圖譜為中心,通過實(shí)體發(fā)現(xiàn)與鏈接技術(shù)把各種各樣可以用來作為對話的數(shù)據(jù)源融合在一起,實(shí)現(xiàn)跨領(lǐng)域、跨交互形式的多輪對話。
知性會話的主要特點(diǎn)有:一是跨領(lǐng)域,跨交互形式共享上下文,你可以看它的聊天和問答可以銜接在以前;二是它體現(xiàn)了領(lǐng)域?qū)<业臋C(jī)器人定位,它對這些領(lǐng)域的知識非常了解,可以在聊天或者問答中體現(xiàn)出它掌握的領(lǐng)域知識。它有這方面的知識后,也可以主動發(fā)起一些對話。
知性會話的核心技術(shù)有:
離線處理,首先要有知識圖譜,所以有一個知識圖譜構(gòu)建的問題。另外,我們要把各種跟對話相關(guān)的數(shù)據(jù)通過實(shí)體發(fā)現(xiàn)與鏈接技術(shù)跟知識圖譜關(guān)聯(lián)起來。
在線處理。基于知識做話語理解,怎么在聊天里把知識融合進(jìn)去,還有基于知識圖譜的問答,基于知識圖譜的主動對話等。
▌三、知性會話關(guān)鍵技術(shù)
(一)知識圖譜構(gòu)建
1.知識圖譜的構(gòu)建方法
這里我引用復(fù)旦肖老師總結(jié)的知識圖譜構(gòu)建方法,第一步是做模式設(shè)計,我們要定義有哪些類或概念、哪些屬性或關(guān)系。
第二步確定我們的知識從哪來,所謂的數(shù)據(jù)來源,這里可以通過對一些結(jié)構(gòu)化的數(shù)據(jù)、非結(jié)構(gòu)化的數(shù)據(jù)做轉(zhuǎn)換、對非結(jié)構(gòu)化的數(shù)據(jù),即文本,從里面去信息抽取。
第三步,知識圖譜里最重要的是詞匯的挖掘,各種同義詞、縮略詞、短語等等。
第四步,有詞匯不夠,我們要把同義詞聚集為一個概念,也就是所謂的實(shí)體發(fā)現(xiàn),包括實(shí)體實(shí)現(xiàn)、實(shí)體歸類、實(shí)體鏈接等等。
第五步,除了實(shí)體之外,知識圖譜里還有邊,也就是關(guān)系,我們要做關(guān)系的抽取。
第六步,因?yàn)槲覀兊闹R圖譜可能來源于不同的數(shù)據(jù)源,所以我們要做知識的融合,主要是實(shí)體對齊、屬性融合、值的規(guī)范化。
最后,對知識圖譜的質(zhì)量做檢查控制,包括知識的補(bǔ)全,有錯的話要糾錯,還有知識更新,最后形成一個領(lǐng)域的知識圖譜。
2. 知識圖譜的評估方法
如果你不知道怎么評價知識圖譜的話,就根本不知道你的知識圖譜建得好還是壞、有用還是沒用。評估的方法基本可以分為四大類別:最重要的類別是第二類基于應(yīng)用,把知識圖譜在應(yīng)用里看效果怎樣,通過應(yīng)用效果來間接評估知識本體。我們不要先找?guī)资畟€人花一兩年建知識圖譜然后再去找應(yīng)用,而是知識圖譜必須是應(yīng)用驅(qū)動的,根據(jù)應(yīng)用效果來評價知識圖譜,這是推薦的一個方法。
還有基于黃金標(biāo)準(zhǔn)評估,也就是說如果我們有些好的知識圖譜,或者我們可以建一個小的知識圖譜,根據(jù)這個標(biāo)準(zhǔn)知識圖譜去評估我們建的知識圖譜的情況。我們可以看看計算概念和關(guān)系的覆蓋率,即有多少出現(xiàn)在標(biāo)準(zhǔn)知識圖譜中的概念和關(guān)系被包含了,這可以評價我們的建的知識圖譜是否完整。
另外,簡單的評估方式基于指標(biāo)。可以定一些統(tǒng)計指標(biāo),比如這個知識圖譜里有多少概念、多少關(guān)系、關(guān)系屬性,然后我們還可以對它進(jìn)行抽查,看它的準(zhǔn)確率、一致性等指標(biāo)。
3. 敏捷構(gòu)建
我們現(xiàn)在做應(yīng)用很多情況都是做敏捷開發(fā),也就是說可能半個月或者一個月就會發(fā)一次版本,這時候我們知識圖譜也要跟著應(yīng)用快速迭代,這時候是需要對知識圖譜敏捷構(gòu)建的過程。這里強(qiáng)調(diào)我們要對知識圖譜做自動化的測試,測試完之后要判斷它是否能夠發(fā)版,發(fā)版之后要繼續(xù)分析它目前的問題。可以把知識圖譜看成一個軟件,它是不是有哪些 bug 或者需要哪些新功能,根據(jù)這些制定下一個版本的發(fā)版計劃。核心想法就是把知識圖譜也看成是一個軟件,也要有版本管理,也要有敏捷的開發(fā)。
(二)實(shí)體發(fā)現(xiàn)與鏈接
需要解決的問題:如果我們這時候已經(jīng)有知識圖譜了,現(xiàn)在還依賴于實(shí)體發(fā)現(xiàn)與鏈接技術(shù)。這個技術(shù)解決剛才那個問題,「Thinks,not Strings」,它最重要的問題是把字符串和知識圖譜的實(shí)體關(guān)聯(lián)起來。它要解決兩個問題,一個是我們同一個意義可能有表達(dá)不同的形式,像「科比」、「黑曼巴」、「科神」很多是指的科比這個人。還有一個是自然語言或者字符串本身有歧義性,就像「蘋果」可能是指蘋果電腦、蘋果手機(jī),也可能是一個水果。
解決方法:所以它的做法是分兩步,實(shí)體發(fā)現(xiàn)和實(shí)體鏈接,實(shí)體發(fā)現(xiàn)是發(fā)現(xiàn)文本中的 mention,就是字符串,像「這個蘋果很貴」的「蘋果」是 mention。實(shí)體鏈接是把這個 Mention 和知識圖譜里的實(shí)體關(guān)聯(lián)起來,知識圖譜里的實(shí)體關(guān)于「蘋果」可能有多個實(shí)體,有蘋果公司,還有蘋果這個品牌,還可能是蘋果手機(jī)、蘋果電腦,還有水果叫蘋果等等,這里的「蘋果」到底指哪個呢?可能要靠上下文的判斷。
1.基于實(shí)體的多源數(shù)據(jù)融合
我這里舉個很簡單的知識圖譜,謝霆鋒的女友是王菲,王菲唱了《傳奇》這首歌,《傳奇》這首歌的原唱是李健。
我們在對話這塊的數(shù)據(jù)來源有幾個:一個是聊天庫,像「你喜歡歌手謝霆鋒嗎」「喜歡,他很酷。」,還有 FAQ 庫,我們可能從百度知道或者很多地方可以找到社區(qū)問答的數(shù)據(jù),就像這里說「誰能說說李健的音樂風(fēng)格?」「李健的風(fēng)格,有民謠的簡潔,但比民謠華麗得多。」
我們也會從網(wǎng)上找到很多文檔,包括百科的文檔或者網(wǎng)頁性的文檔,我們對這些文檔、聊天庫、FAQ 庫、文檔庫,我們都要去做實(shí)體鏈接,把這里面出現(xiàn)的歌手和我們知識圖譜的歌手關(guān)聯(lián)起來。
2. 如何進(jìn)行實(shí)體發(fā)現(xiàn)與鏈接?
第一步預(yù)處理,首先建立一個 mention 到 entity(實(shí)體)的關(guān)系,這也是目前這個算法的局限性,我們事先要知道一個 mention 可能對應(yīng)到哪些實(shí)體。然后抽取實(shí)體相關(guān)特征:
一是實(shí)體的先驗(yàn)概率。就像蘋果可能是水果的先驗(yàn)概率為 40%,是蘋果手機(jī)的先驗(yàn)概率為 60%,如果我們說葡萄呢?可能葡萄是水果的先驗(yàn)概率有 90%,10% 是其他東西。二是實(shí)體上下文的詞分布,我們看這些實(shí)體周邊到底是什么詞,或者它篇章的主題詞,就像蘋果手機(jī)出現(xiàn)在文章里都是科技類的主題詞。三是實(shí)體之間的語義關(guān)聯(lián)度,因?yàn)橹R圖譜是一個圖的結(jié)構(gòu),所以每個實(shí)體環(huán)繞它周邊都有些其他的實(shí)體,這些實(shí)體都是相關(guān)的特征。
第二步,這時實(shí)體鏈接就變成一個排序問題,找到 mention 之后,我們可以根據(jù)前面 mention 關(guān)系表找到它的候選實(shí)體,現(xiàn)在保持只需要對候選實(shí)體排序,返回一個最可能的實(shí)體。
第三步,對候選實(shí)體進(jìn)行排序,可以用最基本的方法。這個有兩大類:一個是實(shí)體本身的信息,還有一個是可以利用實(shí)體和實(shí)體之間的協(xié)同關(guān)系做排序。如果是蘋果旁邊的實(shí)體都是偏電腦類的,那這個蘋果可能就指蘋果電腦。
(三)融合知識的話語理解
做完實(shí)體鏈接處理以后可以做真正的對話系統(tǒng)這一塊,對話系統(tǒng)里最基本的是對用戶話語的理解,我們怎么去理解用戶說的一句話。
第一步要做實(shí)體的發(fā)現(xiàn)與鏈接,像剛才那個例子,「你喜歡謝霆鋒嗎」,我們要把謝霆鋒跟知識圖譜的實(shí)體關(guān)聯(lián)起來。
第二步做指代發(fā)現(xiàn),比如「你知道他女朋友是誰」,那這個「他」到底是指誰,我們首先要發(fā)現(xiàn)他是一個指代詞,然后再根據(jù)上下文去判斷「他」在這個例子里面是謝霆鋒這個實(shí)體。
另外,我們做語義理解還有一種情況是結(jié)合知識做消歧義。比如用戶說「周巧文的生日」,因?yàn)椤渡铡肥且皇赘璧拿郑芮晌氖沁@個歌的歌手,這時候我們理解它是個音樂,因?yàn)楸緛砭驮谝粝湎旅妫@時我們可以直接播放周巧文的《生日》這首歌。但是如果系統(tǒng)又問一下「劉德華的生日」,這時候雖然我們的命名實(shí)體識別很有可能把「生日」也可能打成歌名的標(biāo)簽,劉德華打成歌手的標(biāo)簽,歌手的歌名,很容易以為是播放音樂,但是我們通過知識的驗(yàn)證知道劉德華并沒有唱過這首歌,這時候要轉(zhuǎn)成問答,這不是一個操控性的指令。直接返回他的生日,說「劉德華的生日是 1961 年 9 月 27 日」。
這幾個例子是我們通過知識幫助去理解用戶的指令。我下面再講一下怎么把知識和聊天結(jié)合起來。
(四)融合知識的聊天
1.上下文
現(xiàn)在學(xué)術(shù)界都用深度學(xué)習(xí)模型,所以我會簡單講一下深度學(xué)習(xí)的方法,把它的基本思想講一下。我們現(xiàn)在一般在學(xué)界把聊天變成一個 Sequence-to-Sequence 的模型,就是有一個 encoder對輸入進(jìn)行編碼為向量, 通過 decoder 把應(yīng)答生成出來。這時核心問題變成怎么把上下文加進(jìn)去,最基本的方法是把上下文的文本跟當(dāng)前文本的向量合在一起作為 encoder 的輸入;另外我們可以把上下文作為向量,在 decoder 階段輸入;或者用主題模型對這個 session 去建模,把這個 session 主題模型也作為 decoder 的輸入,這樣就可以實(shí)現(xiàn)一并上下文的效果。
2. 一致性
聊天還有一個很重要的問題是一致性。我們剛才說語境里面有一個agent畫像,跟我聊天的對象雖然是機(jī)器人,但是它有統(tǒng)一的人格,它的性別、年齡、籍貫、愛好應(yīng)該是一致的,這是目前聊天機(jī)器人里面最難的一點(diǎn)。你對機(jī)器人問它「多大了?」它可能說「18 歲」,如果你再去問一下「你今年高壽」,它很有可能回答「我今年 88 歲」,或者問你「芳齡幾許」,它很有可能回答「小女子今年芳齡二八等等」。
為什么會出現(xiàn)這種情況?因?yàn)槟壳傲奶斓臋C(jī)器人都是靠從各個來源去收集各種語料堆在一起的,對這種語料并沒有做歸一化處理,因?yàn)橛械恼Z料說「我今年 88 歲」,有的語料里面可能說「我今年 18 歲」等等,這時候換個方式問它可能會出現(xiàn)問答不一致的地方。更復(fù)雜的例子,你問它「你出生地在哪里?」它說「我在北京」,然后問它「你是中國人嗎?」它可能就回答不了,雖然人類常識知道北京屬于中國等等。
在深度學(xué)習(xí)里如果想把這些所謂的機(jī)器人的信息,進(jìn)行建模或向量化處理導(dǎo)入到 decoder 模型里去,這時候它會優(yōu)先從身份信息的詞向量去生成應(yīng)答,這樣也能達(dá)到一定一致性的效果。
3. 融合知識
另外,做問答的時候,像我們這個例子問「姚明有多高」,我們生成比較自然的問答,說「他是兩米二六,他是唯一一個可以從太空看到的人類。」當(dāng)然,這是開玩笑的。這種聊天就融合了知識,它知道姚明的身高。這時候通過深度學(xué)習(xí)模型做decode 時,除了生成常規(guī)的應(yīng)答之外,有部分的應(yīng)答還要從知識庫里去檢索,然后再把這個應(yīng)答跟文本的應(yīng)答拼在一起。
更多的類似工作可以看看獲得今年IJCAI杰出論文獎的黃民烈老師的工作。
(四)基于知識的問答
知識問答主要有兩種方法:一種是基于 Semantic Parsing 的傳統(tǒng)方法,它是把一個問題解析成一個形式化的查詢語言,再把查詢語言知識庫里面做查詢。這個方法的最大難點(diǎn)是把自然語言的問題轉(zhuǎn)成這樣一個形式化的查詢語言。同樣也有很多方法,最簡單的基于規(guī)則、基于模板,復(fù)雜點(diǎn)的基于翻譯模型、基于深度學(xué)習(xí)模型等。
目前學(xué)術(shù)界比較多的是基于機(jī)器學(xué)習(xí)的知識庫的問答方法,這里面它的基本思想是把問題建模成一個 embedding,然后對知識圖譜也做 embedding,變成一個個向量,這個問答就轉(zhuǎn)換成了一個相似度匹配的問題,把知識庫里的子圖的向量跟問題對應(yīng)子圖進(jìn)行相似度匹配。
還有很多其他方法,目前比較多的是基于網(wǎng)絡(luò)的方法,基于帶注意力機(jī)制的循環(huán)神經(jīng)網(wǎng)絡(luò)的方法。這塊我給一個參考,大家可以看一下《揭開知識庫問答 KB-QA 的面紗》這篇文章,講得非常詳盡、非常好。我個人的觀點(diǎn)是現(xiàn)在基于深度學(xué)習(xí)的知識庫問答目前在工業(yè)界這塊不是很成熟,它的效果不太可控,我們在系統(tǒng)里還是用基于傳統(tǒng)的 Semantic Parsing 問答。
在 CQA 上也有很多把知識結(jié)合進(jìn)去的方法。CQA 最核心的問題是我們要算用戶的問題和在我們問答庫里問題的語義相似度,這里的核心問題是怎么能把知識放到對句子的向量表示里。最近的 SIGIR2018 中提到,把知識和注意力的神經(jīng)網(wǎng)絡(luò)結(jié)合在一起的方法。現(xiàn)在這種論文基本都是一個網(wǎng)絡(luò)圖。另外一篇文章也是類似的,總體是在文本做排序時把知識向量化。
(五)基于知識的主動會話
這個實(shí)際上是非常關(guān)鍵的。在我們?nèi)藱C(jī)對話系統(tǒng),特別是在 VUI 交互下, VUI 音箱是沒有界面的,這就意味著你無法知道這個音箱到底支持哪些功能。當(dāng)你面對音箱的時候,你怎么知道它的功能,到底哪些話能說,哪些話不能說,或者它有什么東西?這時候很需要機(jī)器人主動的對話,能引導(dǎo)用戶用它,知道它的功能。
再舉個例子,如果一個用戶說「來首《傳奇》」,機(jī)器可以主動問他說「播放以后還想聽聽李健原唱嗎?」其實(shí)它的思想很簡單,就是根據(jù)我們的知識圖譜里面,看看相同實(shí)體下面有沒有其他關(guān)系或者屬性,或者推薦一個相同關(guān)系下面其他的實(shí)體。
這里一篇百度的文章思想也是類似的,如果覺得聊天聊不下去了,會先在上下文里去做實(shí)體分析和實(shí)體鏈接,找到作為聊天主題的實(shí)體之后再根據(jù)知識圖譜找相關(guān)的實(shí)體,根據(jù)相關(guān)的實(shí)體產(chǎn)生話題。
▌四、總結(jié)
前面把聊天、問答、對話、語義解析怎么跟知識結(jié)合起來做了簡單的介紹。接下來做個總結(jié):
第一,為什么人機(jī)對話系統(tǒng)很重要?
1、它有可能成為物聯(lián)網(wǎng)時代的最主要交互形式,類似于 OS。
2、知性會話的核心是知識圖譜。它最重要的是做兩件事情:一是線下要做基于知識圖譜做多源數(shù)據(jù)的融合,二是在服務(wù)時要做基于知識圖譜聊天、問答、對話、操控一體化。
3、從技術(shù)上來講,深度學(xué)習(xí)和知識圖譜技術(shù)的結(jié)合是目前最重要的一個趨勢。我個人比較看好 Sequence-to-Sequence 模型,因?yàn)樗谋磉_(dá)能力非常豐富,而且應(yīng)用場景非常多,基本上自然語言處理里面大部分的問題都可以建模成一個 Sequence-to-Sequence。包括我們的翻譯是一個語言到另外一個語言,還有聊天問答甚至拼音輸入法,就是把拼音序列轉(zhuǎn)成文字序列等等,還有做分詞、詞性識別、命名實(shí)體識別等等都是 Sequence-to-Sequence,這種模型分為 encoder 和 decoder 兩個階段,它在不同的階段都可以把一些知識融合進(jìn)去。
第二,在人機(jī)對話系統(tǒng)里的技術(shù)演進(jìn)是怎樣的?
1、在對話里不能只看語義,還要看語用,語用就是「語義+語境」。
2、我們不能只做閑聊式的機(jī)器人,而且是希望我們機(jī)器人是掌握領(lǐng)域知識,它是有文化的,而且文化水平還很高,是個領(lǐng)域?qū)<遥侵詴挕?/p>
3、流式對話。我們目前跟音箱的交互都是先喚醒,說「小愛同學(xué),給我點(diǎn)首歌」,又說「小愛同學(xué),播放下一首」。非常麻煩,但人和人對話是不會總頻繁叫人的名字的,這時候就需要流式對話,這塊的技術(shù)難點(diǎn)是怎么判斷一個人說話是不是說完了,你是否可以打斷,這是目前技術(shù)上最難的一點(diǎn)。還有一個是怎么去拒絕噪音,因?yàn)楝F(xiàn)在對話是沒有喚醒詞的,這時候旁邊人的說話甚至電視里面說的話很有可能被誤識別,機(jī)器也會對它做響應(yīng)。
▌五、答聽眾問
Q:我們公司在構(gòu)建電商的知識圖譜,但是電商的數(shù)據(jù)是每天都會更新的,有什么好的辦法對知識圖譜進(jìn)行更新嗎?而且基于 neo4j 的圖譜如何做知識推理?
A:這是個好問題。我們剛才強(qiáng)調(diào)知識圖譜要敏捷構(gòu)建,敏捷構(gòu)建就意味著你可以頻繁的發(fā)版本,這時候就有版本合并的問題,其實(shí)也是更新的問題。更新這塊主要的技術(shù)是知識本體的融合或者知識實(shí)體的匹配、實(shí)體的對齊。如果更新的數(shù)據(jù)量不是很大的話,我建議的方法是先通過實(shí)體對齊的技術(shù),把更新的數(shù)據(jù)自動添加到知識圖譜里去,如果量不大的話還需要做人工的 review,看更新的數(shù)據(jù)是否 OK。這個我認(rèn)為也沒有什么特別好的辦法,因?yàn)楦卤緛砭褪侵R圖譜里最難的問題。
neo4j 的圖譜如何做知識推理?首先,我個人認(rèn)為它不太適合存儲海量的知識圖譜,電商的數(shù)量應(yīng)該很大的,這時候用 neo4j 合適不合適還有待商榷。如何做知識推理?我們一般認(rèn)為知識圖譜最主要的是知識,盡量少去做推理,因?yàn)橥评硎峭﹄y的一個東西,而且也沒有特別工業(yè)化成熟度很高的工具。第二,如果非要做推理的話,我們一般做線下的推理,就是預(yù)先把推理做好,把它能展開的數(shù)據(jù)全展開,也叫「知識補(bǔ)全」,就像簡單的傳遞性的關(guān)系或者預(yù)先把它都展開,相當(dāng)于存儲空間換時間,這是一個比較常用的方法。我們現(xiàn)在不太建議線上服務(wù)時做實(shí)時推理,因?yàn)槟莻€性能一般很難達(dá)到要求。
Q:本體構(gòu)建的大致方法能簡單介紹一下嗎?
A:本體構(gòu)建的方法從大的面來講有兩種,一種是傳統(tǒng)基于專家的方法,就是請一般專家全手工構(gòu)建,他們對每個詞、每個實(shí)體、詞之間的關(guān)系都開會討論,最后決定應(yīng)該這樣、應(yīng)該那樣,這是專家驅(qū)動的方法。但這種方法已經(jīng)不太可行,而且這種方法也會成為我們做知識圖譜的瓶頸,因?yàn)槲覀兤谕R圖譜是一個敏捷構(gòu)建的。
目前大部分是數(shù)據(jù)驅(qū)動的方法,就是我們通過數(shù)據(jù)挖掘去自動構(gòu)建知識圖譜,適當(dāng)?shù)鼗谌斯さ?review。我傾向于極端的方法,我推薦的方式是知識圖譜的構(gòu)建整個是全自動,但是也需要專家的參與,但是專家參與不是做 review、不是做構(gòu)建,而是做評測。整個知識圖譜的效果根據(jù)應(yīng)用的效果說話,這個應(yīng)用不能假設(shè)整個知識圖譜是完全正確的、完整的的。我們可以通過快速迭代,不斷的對知識圖譜去做更新,然后根據(jù)自動化的測試或者根據(jù)人工的抽樣檢查和應(yīng)用的效果去看知識圖譜的質(zhì)量。只要我們知識圖譜的質(zhì)量能夠滿足應(yīng)用的需求就 OK。
Q:實(shí)體抽取有一個大致的最佳實(shí)踐嗎?
A:最佳實(shí)踐是這樣的,如果從工業(yè)界角度看的話,實(shí)體抽取肯定是多個方法的融合,基于詞典、基于規(guī)則、基于統(tǒng)計學(xué)習(xí)方法、基于深度學(xué)習(xí)方法,沒有一個方法就能搞定所有的問題。雖然詞典挖掘這個東西沒有技術(shù)含量,但是實(shí)踐中基于詞典的方法是非常有效的方法,特別是在垂直領(lǐng)域里面,像醫(yī)療這種領(lǐng)域,當(dāng)然,在有些領(lǐng)域可能這個方法不靠譜,比如在音樂領(lǐng)域,音樂里面有歌名,任何一個詞都可能是歌名。
但基于詞典方法還有一個重要考慮,一定要考慮這個詞典的這個詞有沒有歧義,或者一個詞的先驗(yàn)概率。比如「我愛你」也是一首歌名,但是它是歌名的概率可能不是特別大,但「忘情水」是歌名的概率就很大,所以詞典不是簡單的詞條列表,而是要帶先驗(yàn)概率的信息。
Q:知識圖譜還需要語義網(wǎng)的知識嗎?構(gòu)建 OWL 可還需要很強(qiáng)的領(lǐng)域知識?
A:我們剛才說到知識圖譜的前身是語義網(wǎng),所以如果想更加深刻理解知識圖譜,還是要了解一下語義網(wǎng)的知識,特別像 RDF OWL 的規(guī)范是要了解一下的。
OWL 的這個本體語言還是有點(diǎn)偏復(fù)雜,目前基本上不太推薦知識圖譜搞得那么復(fù)雜,基本對應(yīng)到 RDF 那種形態(tài)就差不多了。我們希望知識圖譜可以構(gòu)建盡量大,但是它從邏輯上來講盡量簡單,不要用 OWL 里面復(fù)雜的東西。一點(diǎn)點(diǎn)語義可以走得很遠(yuǎn),沒必要把模型搞得太復(fù)雜,因?yàn)榘涯P透愕锰珡?fù)雜的一個最重要難點(diǎn)是當(dāng)你把實(shí)體放進(jìn)去時你很難判斷這個實(shí)體屬于哪個概念。
Q:心理學(xué)出身的研究者在 NLP 學(xué)術(shù)領(lǐng)域是否有競爭力?對于心理學(xué)研究者轉(zhuǎn)向 NLP 學(xué)術(shù)圈有哪些建議?
A:這個問題挺有意思的。我們組里有一個主力骨干就是學(xué)心理學(xué)出身的,但他當(dāng)時學(xué)的心理學(xué)是偏統(tǒng)計方面的心理學(xué),也就是計量心理學(xué)這方面的,所以他相對有一定的統(tǒng)計基礎(chǔ)。這時候由統(tǒng)計基礎(chǔ)轉(zhuǎn)向到 NLP,因?yàn)橛袛?shù)學(xué)基礎(chǔ),是比較容易一點(diǎn)的。另外一點(diǎn),心理學(xué)比較有意義的是認(rèn)知這一塊,因?yàn)樯窠?jīng)網(wǎng)絡(luò)這些原理跟認(rèn)知心理學(xué)有一定的關(guān)系,所以心理學(xué)知識對轉(zhuǎn)到 NLP 挺有幫助的。
關(guān)于具體的建議,不管哪個專業(yè)轉(zhuǎn)到 NLP,最重要的是學(xué)好數(shù)學(xué)和機(jī)器學(xué)習(xí)最基礎(chǔ)的東西,這個基礎(chǔ)打好了,轉(zhuǎn)向 NLP 就比較簡單了。
Q:基于知識的方法和統(tǒng)計類的方法需要共融互補(bǔ),老師有沒有典型的合作思路,充分利用基于知識規(guī)則方法的穩(wěn)定可控的同時,又能利用統(tǒng)計從有監(jiān)督的大數(shù)據(jù)自動抽取模式?是否可以講講兩者一起 NLP 的經(jīng)驗(yàn)?
A:現(xiàn)在人工智能主要是三大學(xué)派——知識圖譜派、統(tǒng)計學(xué)習(xí)派、深度學(xué)習(xí)派,從工業(yè)界角度來看,在解決具體問題時各有所長,所以需要把這三者融合在一起,真實(shí)的線上系統(tǒng)不會只有一個方法。所以知識方法是一個很重要的方法,而且它跟深度學(xué)習(xí)是有比較好的互補(bǔ)性,特別是可以提供深度學(xué)習(xí)方法里面沒有的可解釋性這一塊。
具體怎么融合,最簡單的融合方法就是做模型Ensemble,把幾個分類器組裝在一起,這個可以看周志華老師那本「西瓜書」,因?yàn)橹芾蠋熥瞿P偷?Ensemble是最拿手的。
此外,把知識或規(guī)則都可以作為特征,從這個角度融合在一起。另外,深度學(xué)習(xí)里的解碼器也可以把知識融合進(jìn)來,所以這塊的方法是很多的。
-
人機(jī)對話
+關(guān)注
關(guān)注
0文章
10瀏覽量
9590 -
IOT
+關(guān)注
關(guān)注
187文章
4214瀏覽量
196933 -
知識圖譜
+關(guān)注
關(guān)注
2文章
132瀏覽量
7711
原文標(biāo)題:基于知識圖譜的人機(jī)對話系統(tǒng) | 公開課筆記
文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論