chatbot是最近一段時(shí)間非?;鸬囊粋€(gè)詞或者一個(gè)應(yīng)用,不僅僅各大新聞媒體在熱炒bot的概念,各大巨頭也投入巨大的資源進(jìn)行研發(fā),arxiv上刷出bot相關(guān)的paper也更是家常便飯。炒作歸炒作,PR歸PR,不得不說一個(gè)尷尬的事實(shí)是市面上確實(shí)難以找到一個(gè)真正好用的bot。bot按照涉及的領(lǐng)域,分為開放域(open-domain)和面向具體任務(wù)(task-oriented)的bot。開放域要做的事情很大,更像是一個(gè)什么都能搞的平臺(tái),不管你提什么樣的需求,它都能夠解決,有點(diǎn)true AI的意思,而面向任務(wù)的bot則專注做好一件事情,訂機(jī)票,訂餐,辦護(hù)照等等。
說到開放域bot,大家接觸最多的也就是一些回答非常無厘頭的娛樂用bot,比如很多年前活躍在各大社交網(wǎng)站上的小黃雞,現(xiàn)在市面上活躍著很多號(hào)稱掌握了bot技術(shù),在用深度學(xué)習(xí)解決bot技術(shù)的bot公司,都是這種,解決不了什么實(shí)際問題,就是能和大家聊上兩句,而且很多時(shí)候回答都是牛頭不對(duì)馬嘴的,十分可笑。
再說task-oriented bot,市面上最多的就是客服機(jī)器人,銀行也好,電商也罷,不想重復(fù)性地回答用戶的問題,就用一個(gè)客服機(jī)器人來應(yīng)對(duì),且不說效果如何,開發(fā)一個(gè)具體task的bot需要費(fèi)不少工夫,而且后期還要大量的維護(hù),因?yàn)樘嗟膆and crafted features被用到,整個(gè)bot的框架橫向擴(kuò)展性相對(duì)來說較差,換一個(gè)場景基本上就需要重新開發(fā)一套,人力成本太高了。
bot的理想非常豐滿,大公司描繪的場景也確實(shí)很美,但現(xiàn)實(shí)的bot卻狠狠地澆了一盆冷水下來。期望越高,失望越大。如果媒體一味地吹捧bot,仿佛整個(gè)世界明天就會(huì)是bot的了,對(duì)bot的發(fā)展并無益處,捧殺只會(huì)帶來氣泡,破裂之后,一切如初。
功能強(qiáng)大的、開放域的bot在短期內(nèi)是比較難實(shí)現(xiàn)的,但是如果降低期望,將bot不應(yīng)當(dāng)做是一種技術(shù)層面的革命,而應(yīng)當(dāng)做交互層面的革新才是理性的態(tài)度,bot作為一種入口,可能大家都不再需要一個(gè)隨身攜帶的終端,只需要找到一個(gè)可以識(shí)別身份,可以聯(lián)網(wǎng)的硬件,比如一面鏡子,就可以執(zhí)行很多的task,訂機(jī)票、買東西等等等等。bot這個(gè)時(shí)候起到的是一個(gè)操作的入口和背后執(zhí)行各種不同task的黑箱,我們不需要看到整個(gè)執(zhí)行過程,也不需要知道原理是什么,通過一些簡單的語言交互,就能完成一些復(fù)雜的task,終端要做的事情就是反饋結(jié)果和接收輸入,執(zhí)行的過程都在云端,各種bot云。
而這一切的關(guān)鍵是解決好task-oriented bot,用更多data driven的解決方案來代替?zhèn)鹘y(tǒng)的人工features和templates。
|問題描述
bot是一個(gè)綜合性的問題,涉及到下面三個(gè)主要問題:
1、response generation(selection)
對(duì)話生成是最后一個(gè)步驟,是輸出的部分。簡單總結(jié)下,有四種solutions:
solution 1直接根據(jù)context來生成對(duì)話,這方面最近的paper非常地多,尤其是seq2seq+attention框架席卷了NLP的很多任務(wù)之后,對(duì)話生成的benchmark也一次又一次地被各種model刷新著。對(duì)話生成的問題,被定義為基于某個(gè)條件下的生成模型,典型的根據(jù)context來predict words,涉及到句子生成的問題,評(píng)價(jià)問題就會(huì)是一個(gè)比較難的問題。
solution 2當(dāng)然有的paper并不是將對(duì)話生成定義為語言模型問題,而是一個(gè)next utterance selection的問題,一個(gè)多選一的問題,給定一個(gè)context,給定一個(gè)utterance candidate list,從list中選擇一個(gè)作為response,當(dāng)然這類問題的難度會(huì)小很多,評(píng)價(jià)起來也非常容易,但是數(shù)據(jù)集準(zhǔn)備起來要多花一些功夫,而且在實(shí)際應(yīng)用中不好被借鑒。
solution 3rule-based或者說template-based,response的最終形式其實(shí)是填充了一個(gè)模板而成的,大多數(shù)的東西是給定的,只有一些具體的value需要來填充。這一類解決方案很適合做task-oriented bot,但過多的人工features和templates導(dǎo)致了其難以移植到其他task上。
solution 4query-based或者說example-based,response是來自于一個(gè)叫做知識(shí)庫的數(shù)據(jù)庫,里面包含了大量的、豐富的example,根據(jù)用戶的query,找到最接近的example,將對(duì)應(yīng)的response返回出來作為輸出。這一類解決方案非常適合做娛樂、搞笑用的bot,核心技術(shù)在于找更多的數(shù)據(jù)來豐富知識(shí)庫,來清洗知識(shí)庫。但畢竟respnose是從別人那里拿出來的,可能會(huì)很搞笑,但大多數(shù)會(huì)牛頭不對(duì)馬嘴。
2、dialog state tracking(DST)
有的paper稱DST為belief trackers,這個(gè)部件其實(shí)是bot的核心,它的作用在于理解或者捕捉user intention或者goal,只有當(dāng)你真的知道用戶需要什么,你才能做出正確的action或者response。關(guān)于這個(gè)部分,會(huì)有Dialog State Tracking Challenge比賽。一般來說都會(huì)給定一個(gè)state的范圍,通過context來predict用戶屬于哪個(gè)state,有什么樣的需求,是需要查詢天氣還是要查詢火車票。
3、user modeling
bot面向具體的業(yè)務(wù),都是和真實(shí)的user來打交道的,如果只是簡單的FAQ bot,回答幾個(gè)常見的問題可能不需要這塊,但如果是其他更加復(fù)雜、細(xì)致的業(yè)務(wù),都需要給用戶建模,相同的問題,bot給每個(gè)人的response一定是不同的,這個(gè)道理非常簡單。user modeling,需要涉及的不僅僅是簡單的用戶基本信息和用戶的一些顯式反饋信息,而更重要的是用戶的history conversations,這些隱式的反饋信息。就像是推薦系統(tǒng)火起來之前,大家都是中規(guī)中矩地賣東西,但是有一些聰明人開始分析用戶的行為,不僅是那些點(diǎn)贊行為,更多的是那些用戶不經(jīng)意間留下的“蛛絲馬跡”,從而知道了用戶對(duì)哪些東西潛在地感興趣,也就是后來推薦系統(tǒng)在做的事情。對(duì)user進(jìn)行建模,就是做一個(gè)個(gè)性化的bot,生成的每一個(gè)response都有這個(gè)user鮮明的特點(diǎn)。
|語料
大型的語料都是用來訓(xùn)練開放域bot對(duì)話生成模型的,數(shù)據(jù)源一般都是來自社交網(wǎng)站。而對(duì)于task-oriented bot來說,客戶的數(shù)據(jù)一般規(guī)模都非常地小,這也正是難以將data driven的方案直接套用到task-oriented bot上的一個(gè)主要原因。
[1]中給出了bot訓(xùn)練語料的survey,感興趣的同學(xué)可以讀一下這篇survey。
圖來自文章[13],英文的語料確實(shí)比較多,Sina Weibo那個(gè)語料是華為諾亞方舟實(shí)驗(yàn)室release的[12]。從twitter或者微博上產(chǎn)生bot數(shù)據(jù)的話,“conversational in nature”效果不如從ubuntu chat logs這種聊天室產(chǎn)生的數(shù)據(jù)更加適合訓(xùn)練response生成模型,因?yàn)楦犹烊粺o公害。文章[5]也用了一個(gè)大型中文語料,數(shù)據(jù)來自百度貼吧。
|模型
研究bot的paper是在太多了,這是一個(gè)非常活躍的研究領(lǐng)域,細(xì)分的方向也非常的多,接下來按照所針對(duì)的研究問題來分別介紹一些模型。
seq2seq生成模型
現(xiàn)在最流行的解決方案是seq2seq+attention,encoder將user query feed進(jìn)來,輸出一個(gè)vector representation來表示整個(gè)query,然后作為decoder的condition,而decoder本質(zhì)上就是一個(gè)語言模型,一步一步地生成response,[2]采用就是這種方案,google用了海量的參數(shù)訓(xùn)練出這么一個(gè)模型,得到了一個(gè)不錯(cuò)的bot。
而典型的seq2seq存在一個(gè)問題,就是說容易生成一些“呵呵”的response,即一些非常safe,grammatical但沒有實(shí)際意義的response,比如”I don’t know!”之類的。原因在于傳統(tǒng)的seq2seq在decoding過程中都是以MLE(Maximum Likelihood Estimate)為目標(biāo)函數(shù),即生成最grammatical的話,而不是最有用的話,這些safe句子大量地出現(xiàn)在訓(xùn)練語料中,模型學(xué)習(xí)了之后,無可避免地總是生成這樣的response,而文章[3]借鑒了語音識(shí)別的一些經(jīng)驗(yàn),在decoding的時(shí)候用MMI(Maximum Mutual Information)作為目標(biāo)函數(shù),提高了response的diversity。
文章[4]認(rèn)為類似于RNNLM這樣的語言模型在生成人話質(zhì)量不高的根本原因在于,沒有處理好隱藏在utterance中的隨機(jī)feature或者說noise,從而在生成next token(short term goal)和future tokens(long term goal)效果一般。
在生成每一個(gè)utterance時(shí),需要用到四個(gè)部分,encoder RNN、context RNN、latent variable、decoder RNN,按順序依次輸入和輸出。這里的latent variable和IR中的LSI有一點(diǎn)異曲同工,latent表明我們說不清他們到底具體是什么,但可能是代表一種topic或者sentiment,是一種降維的表示。
文章[5]提出了一種叫做content introducing的方法來生成短文本response。
step 1給定query之后,預(yù)測一個(gè)keyword作為response的topic,這個(gè)topic詞性是名詞,這里的keyword并不能捕捉復(fù)雜的語義和語法,而只是根據(jù)query的每個(gè)詞來預(yù)估出一個(gè)PMI(Pointwise Mutual Information)最高的名詞作為keyword.
step 2[5]的模型叫做Sequence To Backward and Forward Sequences,首先進(jìn)行backward step,給定一個(gè)query,用encoder表示出來得到一個(gè)context,decoder的部分首先給定keyword作為第一個(gè)詞,然后進(jìn)行decoding,生成的這部分相當(dāng)于keyword詞前面的部分;接下來進(jìn)行的是forward step,也是一個(gè)典型的seq2seq,用encoder將query表示成context,然后給定backward生成的話和keyword作為decoder的前半部分,繼續(xù)decoding生成后半部分。整個(gè)的流程這樣簡單描述下:
step 1 query + keyword => backward sequence
step 2 query + keyword + backward sequence(reverse) => forward sequence
step 3 response = backward (reverse) sequence + keyword + forward sequence
user modeling模型
文章[6]針對(duì)的問題是多輪對(duì)話中response不一致的問題,將user identity(比如背景信息、用戶畫像,年齡等信息)考慮到model中,構(gòu)建出一個(gè)個(gè)性化的seq2seq模型,為不同的user,以及同一個(gè)user對(duì)不同的請(qǐng)將中生成不同風(fēng)格的response。
[6]的模型叫Speaker Model,是一個(gè)典型的seq2seq模型,不同的地方在于在decoding部分增加了一個(gè)speaker embedding,類似于word embedding,只是說這里對(duì)用戶進(jìn)行建模。因?yàn)闊o法對(duì)用戶的信息顯式地進(jìn)行建模,所以用了一種embedding的方法,通過訓(xùn)練來得到speaker向量,下面左邊的圖是speaker向量在二維平面上的表示,具有相似背景信息的user就會(huì)很接近,與word向量一個(gè)道理。
reinforcement learning模型
用增強(qiáng)學(xué)習(xí)來解決人機(jī)對(duì)話問題具有很悠久的歷史,只不過隨著AlphaGo的炒作,deepmind公司將增強(qiáng)學(xué)習(xí)重新帶回了舞臺(tái)上面,結(jié)合著深度學(xué)習(xí)來解決一些更難的問題。
增強(qiáng)學(xué)習(xí)用long term reward作為目標(biāo)函數(shù),會(huì)使得模型通過訓(xùn)練之后可以predict出質(zhì)量更高的response,文章[7]提出了一個(gè)模型框架,具有下面的能力:
1. 整合開發(fā)者自定義的reward函數(shù),來達(dá)到目標(biāo)。
2. 生成一個(gè)response之后,可以定量地描述這個(gè)response對(duì)后續(xù)階段的影響。
兩個(gè)bot在對(duì)話,初始的時(shí)候給定一個(gè)input message,然后bot1根據(jù)input生成5個(gè)候選response,依次往下進(jìn)行,因?yàn)槊恳粋€(gè)input都會(huì)產(chǎn)生5個(gè)response,隨著turn的增加,response會(huì)指數(shù)增長,這里在每輪對(duì)話中,通過sample來選擇出5個(gè)作為本輪的response。
在一個(gè)大型數(shù)據(jù)集上訓(xùn)練一個(gè)效果不錯(cuò)的seq2seq作為初始值,用增強(qiáng)學(xué)習(xí)來提升模型實(shí)現(xiàn)自定義reward函數(shù)的能力,以達(dá)到期待的效果。
文章[7]的模型可以生成更多輪數(shù)的對(duì)話,而不至于過早地陷入死循環(huán)中,而且生成的對(duì)話diversity非常好。
task-oriented seq2seq模型
現(xiàn)有的task-oriented bot多是采用rule-based、template-based或者example-based或者是綜合起來用,用data driven的解決方案十分稀有。文章[8]和[9]就是嘗試在bot的個(gè)別部件上采用深度學(xué)習(xí)的技術(shù)來做,并且給出了切實(shí)可行的方案。
文章[8]先是從一個(gè)大家熟知的場景開始介紹,一個(gè)經(jīng)驗(yàn)豐富的客服是如何帶一個(gè)新入職的客服,分為四個(gè)階段:
1. 告訴新客服哪些”controls”是可用的,比如:如何查找客戶的信息,如何確定客戶身份等等。
2. 新客服從老客服做出的good examples中模仿學(xué)習(xí)。
3. 新客服開始試著服務(wù)客戶,老客服及時(shí)糾正他的錯(cuò)誤。
4. 老客服放手不管,新客服獨(dú)自服務(wù)客戶,不斷學(xué)習(xí),不斷積累經(jīng)驗(yàn)。
[8]的模型框架就是依照上面的過程進(jìn)行設(shè)計(jì)的:
開發(fā)者提供一系列備選的actions,包括response模板和一些API函數(shù),用來被bot調(diào)用。
由專家提供一系列example dialogues,用RNN來學(xué)習(xí)。
用一個(gè)模擬user隨機(jī)產(chǎn)生query,bot進(jìn)行response,專家進(jìn)行糾正。
bot上線服務(wù),與真實(shí)客戶進(jìn)行對(duì)話,通過反饋來提高bot服務(wù)質(zhì)量。
一個(gè)完整的工作流程由上圖描述,具體步驟看下圖:
訓(xùn)練的時(shí)候是用一部分高質(zhì)量的數(shù)據(jù)進(jìn)行監(jiān)督學(xué)習(xí)SL,用增強(qiáng)學(xué)習(xí)RL來優(yōu)化模型,得到質(zhì)量更高的結(jié)果。
文章[9]平衡了兩種流行方案的優(yōu)缺點(diǎn),提出了一套有參考價(jià)值的、具有實(shí)際意義的seq2seq解決方案。
一共五個(gè)組件:
1、 Intent Network
這個(gè)部分可以理解為seq2seq的encoder部分,將用戶的輸入encode成一個(gè)vector。
2、 Belief Trackers
又被稱為Dialogue State Tracking(DST),是task-oriented bot的核心部件。本文的Belief Trackers具有以下的作用:
支持各種形式的自然語言被映射成一個(gè)有限slot-value對(duì)集合中的元素,用于在數(shù)據(jù)庫中進(jìn)行query。
追蹤bot的state,避免去學(xué)習(xí)那些沒有信息量的數(shù)據(jù)。
使用了一種weight tying strategy,可以極大地減少訓(xùn)練數(shù)據(jù)的需求。
易擴(kuò)展新的組件。
3、 Database Operator
數(shù)據(jù)庫查詢的輸入來自于Belief Trackers的輸出,即各種slot的概率分布,取最大的那個(gè)作為DB的輸入,進(jìn)行查詢,獲取到相應(yīng)的值。
4、 Policy Network
這個(gè)組件是像一個(gè)膠水,起到粘合其他上面三個(gè)組件的作用。輸入是上面三個(gè)組件的輸出,輸出是一個(gè)向量。
5、 Generation Network
最后一個(gè)組件是生成模型,本質(zhì)上是一個(gè)語言模型,輸入是Policy Network的輸出,輸出是生成的response,再經(jīng)過一些處理之后可以返回給用戶了。這里的處理主要是將response中的slot,比如s.food還原成真實(shí)的值。這一步和文章[8]的step 10一樣,將具體的值還原到entity上。
完全用end-to-end來解決task-oriented是不可能的事情,一定是在一個(gè)框架或者體系內(nèi)用這種seq2seq的解決方案來做這件事情,文章[8]和[9]給出了很大的啟發(fā)。
Knowledge Sources based模型
純粹的seq2seq可以解決很多問題,但如果針對(duì)具體的任務(wù),在seq2seq的基礎(chǔ)上增加一個(gè)相關(guān)的knowledge sources會(huì)讓效果好很多。這里的knowledge可以是非結(jié)構(gòu)化的文本源,比如文章[10]中的ubuntu manpages,也可以是結(jié)構(gòu)化的業(yè)務(wù)數(shù)據(jù),比如文章[9]中的database,也可以是一個(gè)從源數(shù)據(jù)和業(yè)務(wù)數(shù)據(jù)中提取出的knowledge graph。
文章[10]作者將bot任務(wù)定義為next utterance classification,有一點(diǎn)像question answering任務(wù),給定一個(gè)context和一個(gè)response candidate list作為備選答案,通過context來從candidate list中選擇正確的response。本文的貢獻(xiàn)在于在context的基礎(chǔ)上,引入了task相關(guān)的外部專業(yè)知識(shí)庫,并且這個(gè)知識(shí)庫是非結(jié)構(gòu)化的。
模型是三個(gè)rnn encoder組成,一個(gè)rnn來encode context,一個(gè)rnn來encode response,還有一個(gè)rnn來encode knowledge,然后綜合起來做預(yù)測,選出最合適的response。模型被稱作knowledge encoder。因?yàn)閿?shù)據(jù)集采用的是ubuntu technical support相關(guān)的數(shù)據(jù)集,外部資源就選用了ubuntu manpages。
context sensitive模型
文章[11]的模型比較簡單,但考慮的問題意義很大,history information的建模對(duì)于bot在解決實(shí)際工程應(yīng)用的幫助很大,也直接決定了你的bot是否能夠work。作者將history context用詞袋模型表示,而不是我們經(jīng)常采用的rnn,然后將context和用戶query經(jīng)過一個(gè)簡單的FNN,得到一個(gè)輸出。
|評(píng)價(jià)
bot response評(píng)價(jià)很難,雖然說可以借鑒機(jī)器翻譯的自動(dòng)評(píng)價(jià)方法BLEU來做,但效果不會(huì)太好。幾乎每篇paper都是會(huì)花錢雇人來做人工評(píng)價(jià),設(shè)計(jì)一套評(píng)價(jià)機(jī)制來打分,人工的評(píng)價(jià)更具有說服力。對(duì)于實(shí)際工程應(yīng)用更是如此,用戶說好才是真的好。而不是簡單地拿著自己提的、有偏的指標(biāo),和幾個(gè)方法或者其他公司的bot進(jìn)行對(duì)比,來說明自己好。
|思考
讀了一些paper,也和一線在做bot應(yīng)用的工程師交流之后,有了一點(diǎn)思考,總結(jié)如下:
1、要不要做bot?流行一種說法是市面上沒有好用的bot,要解決bot的問題需要很多技術(shù)同時(shí)進(jìn)步,可能還需要非常長的一段時(shí)間,現(xiàn)在用這個(gè)東西來做business,簡直荒謬。我個(gè)人的看法是,解決具體task的bot,結(jié)合當(dāng)前先進(jìn)的技術(shù),做一些框架性的工具,并不是那么遙遠(yuǎn)的事情,雖然不容易,但卻非常有意義,解決了垂直領(lǐng)域的bot問題,才有可能解決open domain的bot問題。也正是因?yàn)椴蝗菀?,提高了門檻,才會(huì)出現(xiàn)真正的機(jī)會(huì),誕生一些很牛的技術(shù)公司。
2、open domain還是task-oriented?如果是我,我會(huì)選后者,因?yàn)榍罢咧皇且粋€(gè)夢(mèng)想,一個(gè)遙不可及的夢(mèng)想,需要更多的技術(shù)層面上的大突破。task-oriented更加具體,更加實(shí)用,針對(duì)具體的業(yè)務(wù),提供一些解決方案,已經(jīng)有很多企業(yè)在做了,雖然一個(gè)通用性或者擴(kuò)展性強(qiáng)的解決方案還沒有出現(xiàn),但一定是一個(gè)趨勢(shì),也是新一代做bot的公司的機(jī)會(huì)。
3、task-oriented bot為什么難,該朝哪個(gè)方向來發(fā)力?end-to-end是一種理想化的模型,用深度學(xué)習(xí)模型從大量訓(xùn)練數(shù)據(jù)中來“捕捉”一些features,“擬合”一些函數(shù),雖然可以得到很不錯(cuò)的效果,而且使用起來確實(shí)很方便,但尷尬就尷尬在具體的task中是拿不到海量數(shù)據(jù)的,數(shù)據(jù)規(guī)模小了之后,純粹的end-to-end就變得非常雞肋了。然而真實(shí)的場景中,很多企業(yè)又有一定的數(shù)據(jù),也有bot的需求,所以現(xiàn)在成熟的解決方案就是針對(duì)你的具體業(yè)務(wù),來設(shè)計(jì)一些features,templates和rules,當(dāng)客戶的業(yè)務(wù)發(fā)生更改時(shí),需要不斷地維護(hù)現(xiàn)有的bot系統(tǒng),十分費(fèi)時(shí)費(fèi)力。真實(shí)的場景中往往涉及到很多結(jié)構(gòu)化的業(yè)務(wù)數(shù)據(jù),純粹地、暴力地直接根據(jù)context生成response是不可能做到的,文章[8][9]都給出了非常有啟發(fā)性的解決方案,將end-to-end應(yīng)用在局部,而非整體上,配合上Information Extraction和Knowledge Graph等技術(shù),實(shí)現(xiàn)一個(gè)高可用的框架體系,這個(gè)應(yīng)該是task-oriented bot的發(fā)展方向。
4、response的生成應(yīng)該與哪些因素有關(guān)呢?response質(zhì)量的好壞,需要聯(lián)系到這幾個(gè)features:(1)user query,用戶的提問,用戶在這輪對(duì)話中到底在問什么,準(zhǔn)確地理解用戶的意圖,這是至關(guān)重要的。(2)user modeling,對(duì)用戶進(jìn)行建模,包括用戶的基本信息,還有更重要的是用戶history conversation logs的mining,這個(gè)工作很難,但同時(shí)也很見水平,也是一家技術(shù)公司證明自己技術(shù)牛逼的一種途徑。logs的挖掘現(xiàn)在很常見,不見得大家都做的很好,而這里的logs不是一般的設(shè)定好的、結(jié)構(gòu)化的指標(biāo),而是非結(jié)構(gòu)化的文本logs,挖掘起來難度更大。另外一點(diǎn),也是paper種看到的,user emotion,情感分析是nlp中研究比較多的task,用戶的情緒直接關(guān)系到銷售的成敗,如果技術(shù)足夠牛,可以考慮的因素就可以足夠多,對(duì)user的分析也就足夠清晰。將history生掛在模型中不是一個(gè)好辦法,因?yàn)閔istory是不斷增長,會(huì)導(dǎo)致模型在捕捉信息時(shí)出現(xiàn)問題,更好的辦法可能是build user profile之類的東西,將history沉淀出來,作為一個(gè)vector representation,或者一種knowledge graph來表征一個(gè)user。有了這種能力的bot,說的冠冕堂皇一點(diǎn)就是個(gè)性化的bot。(3)knowledge,外部知識(shí)源,涉及到具體業(yè)務(wù)的時(shí)候,業(yè)務(wù)數(shù)據(jù)也是一種knowledge,如何將knowledge建模到模型中,在生成對(duì)話的時(shí)候可以更加專業(yè)和準(zhǔn)確也是一個(gè)非常重要的問題。bot是一個(gè)綜合性的難題,不僅僅是系統(tǒng)框架上的難,而且是建模上的難。
5、我一直覺得做人和看問題都不可以極端,世界并非非黑即白,而是介于兩者之間的連續(xù)值。不可能說要么做成一個(gè)open-domain巨無霸的bot,要么就是一個(gè)什么具體功能都沒有的bot,不能只看到現(xiàn)有的bot不成熟,以及幻想中的bot遙不可及,就開始黑這個(gè)領(lǐng)域,還嘲笑人家能夠居然拿到投資。爭吵這些毫無意義,真正有意義的是深挖這個(gè)領(lǐng)域,找到痛點(diǎn)和難點(diǎn),逐個(gè)擊破,不斷地推進(jìn)這個(gè)領(lǐng)域的發(fā)展,而不是像一些街邊看熱鬧的人一樣,簡直無趣!在很多領(lǐng)域突破之前,仿佛都看不到曙光,但幾年之后很多當(dāng)時(shí)難以解決的問題不都是紅海一片,滿大街都是了么?做一個(gè)通用的bot可能很長一段時(shí)間內(nèi)都是一件比較困難的事情,但做一個(gè)高可用、擴(kuò)展性不錯(cuò)的bot解決方案還是有盼頭的,不必過度自信,也不必妄自菲薄,踏踏實(shí)實(shí)地做就是了。