中文字幕一区二区人妻电影,亚洲av无码一区二区乱子伦as ,亚洲精品无码永久在线观看,亚洲成aⅴ人片久青草影院按摩,亚洲黑人巨大videos

如何構(gòu)建聊天機(jī)器人:創(chuàng)建機(jī)器人的4個(gè)組件

發(fā)布于:2021-02-03 10:50:20

0

405

0

機(jī)器人 聊天機(jī)器人 組件 程序員

作為一名程序員,我想通過(guò)創(chuàng)建自己的聊天機(jī)器人來(lái)學(xué)習(xí)如何開(kāi)發(fā)聊天機(jī)器人。我重點(diǎn)介紹了開(kāi)發(fā)bot的以下組件:自然語(yǔ)言理解(NLU)組件、對(duì)話(huà)框管理器(DM)、自然語(yǔ)言生成(NLG)組件以及模塊化或端到端方法。

要構(gòu)建一個(gè)成功的聊天機(jī)器人,請(qǐng)考慮用戶(hù)的觀(guān)點(diǎn)。首先,用戶(hù)向bot寫(xiě)入一些內(nèi)容。bot處理消息并生成響應(yīng)。然后,將響應(yīng)發(fā)送回用戶(hù)。

這些步驟無(wú)限期地重復(fù),直到對(duì)話(huà)者之一決定完成。讓我們對(duì)上面描述的會(huì)話(huà)過(guò)程進(jìn)行更深入的挖掘,并對(duì)其進(jìn)行更詳細(xì)的分析,以了解其實(shí)際的復(fù)雜性。

在本文中,我將向您展示制作聊天機(jī)器人所涉及的元素,以及每個(gè)步驟涉及的細(xì)節(jié)。聊天機(jī)器人在很多場(chǎng)合和商業(yè)中都有使用,知道如何實(shí)現(xiàn)一個(gè)聊天機(jī)器人對(duì)你的開(kāi)發(fā)生涯非常重要。

構(gòu)建聊天機(jī)器人所涉及的元素

當(dāng)用戶(hù)寫(xiě)東西時(shí),bot需要處理它。由于機(jī)器人不懂人類(lèi)的語(yǔ)言,我們需要一種方法將我們的自然語(yǔ)言和非結(jié)構(gòu)化語(yǔ)言翻譯成任何可以被機(jī)器處理和理解的結(jié)構(gòu)化數(shù)據(jù)。

這一步被稱(chēng)為自然語(yǔ)言理解(NLU)。從用戶(hù)消息到結(jié)構(gòu)化數(shù)據(jù)的轉(zhuǎn)換稱(chēng)為“語(yǔ)義框架”。

一旦處理了用戶(hù)消息并生成了語(yǔ)義框架,bot就可以分析這些結(jié)構(gòu)化數(shù)據(jù),以尋找下一步要采取的最佳操作,包括生成響應(yīng)。

在此步驟中,bot可能需要記住會(huì)話(huà)中的數(shù)據(jù),因此它不會(huì)一次又一次地問(wèn)相同的問(wèn)題。這個(gè)過(guò)程由一個(gè)名為對(duì)話(huà)框管理器(dialogmanager,DM)的組件執(zhí)行,它跟蹤會(huì)話(huà)狀態(tài)并選擇與特定策略有關(guān)的操作。

最后,bot選擇的動(dòng)作包括對(duì)用戶(hù)的響應(yīng)或要生成的該響應(yīng)的數(shù)據(jù)。這些數(shù)據(jù)被傳遞到一個(gè)組件,該組件處理并將其轉(zhuǎn)換為顯示給用戶(hù)的人類(lèi)語(yǔ)言響應(yīng)。這個(gè)過(guò)程被稱(chēng)為自然語(yǔ)言生成(NLG)。

如何建立聊天機(jī)器人

這些是構(gòu)建bot過(guò)程中涉及的元素。讓我們逐一談?wù)撍鼈儭?/span>

NLU組件

如前所述,NLU組件從用自然語(yǔ)言編寫(xiě)的消息中生成語(yǔ)義框架。這個(gè)框架通常由一個(gè)意圖(用發(fā)送的消息表示用戶(hù)的意圖)和一組表示用戶(hù)在消息中給出的數(shù)據(jù)的實(shí)體組成。

例如,“我想訂一個(gè)從馬德里到哥本哈根的航班”可以翻譯成下圖中的結(jié)構(gòu):

如何建立聊天機(jī)器人

為了完成這種翻譯,可以使用經(jīng)典的自然語(yǔ)言處理(NLP)方法或更高級(jí)的深度學(xué)習(xí)(DL)方法。

通常,當(dāng)數(shù)據(jù)很少或沒(méi)有數(shù)據(jù)時(shí)使用經(jīng)典方法,因?yàn)镈L方法需要大量數(shù)據(jù)才能很好地執(zhí)行。然而,在這種情況下,隨著預(yù)訓(xùn)練模型的出現(xiàn),人們可以選擇DL方法并使用定制數(shù)據(jù)對(duì)模型進(jìn)行微調(diào),即使可用數(shù)據(jù)很少。

對(duì)話(huà)框管理器

這一部分是最關(guān)鍵的,因?yàn)閷?duì)話(huà)的成敗很大程度上取決于它的肩膀。當(dāng)然,談話(huà)過(guò)程中隱含的所有內(nèi)容都非常重要。盡管如此,對(duì)話(huà)的連續(xù)性——流暢性——在很大程度上取決于這個(gè)組件在內(nèi)存(通過(guò)填滿(mǎn)的插槽)和動(dòng)作選擇方面的表現(xiàn)。

這就是為什么這篇文章通常由兩個(gè)子部分組成:

  • 對(duì)話(huà)框狀態(tài)跟蹤器(DST)

  • 對(duì)話(huà)框策略(DP)

DST跟蹤會(huì)話(huà)歷史、時(shí)隙以及與會(huì)話(huà)上下文相關(guān)的所有信息。上面提到的插槽是內(nèi)存單元,其中填充了通過(guò)語(yǔ)義框架、數(shù)據(jù)庫(kù)調(diào)用、webhook響應(yīng)等接收到的實(shí)體。

DP是負(fù)責(zé)根據(jù)語(yǔ)義框架、會(huì)話(huà)歷史或所選動(dòng)作選擇下一個(gè)動(dòng)作的子組件。

讓我們通過(guò)一個(gè)示例來(lái)了解此組件必須處理的復(fù)雜性:

(1)用戶(hù):“我想從我的銀行賬戶(hù)中提取50元?!?/span>

(2)Bot:“哪種賬戶(hù):活期還是信用?““

(3)用戶(hù):“我的信用賬戶(hù)上有多少錢(qián)?““

(4)Bot:“您的銀行卡賬戶(hù)余額為100元?!?/span>

(5)用戶(hù):“太好了!那我就從那一個(gè)拿走?!?/span>

(6)機(jī)器人:“好的,那么你想從你的信用賬戶(hù)中提取50元。是這樣嗎?““

(7)用戶(hù):“是的,請(qǐng)?!?/span>

…。

在(1)NLU部分中,推斷的意圖可能是“提取現(xiàn)金”,實(shí)體“金額”中填有50元。bot已經(jīng)知道這個(gè)用戶(hù),比如說(shuō)因?yàn)樗且粋€(gè)登錄用戶(hù),并且從DB獲取信息,得到兩個(gè)帳戶(hù)“current”和“credit”,這兩個(gè)帳戶(hù)填充了“availableu accounts”的位置

DP決定bot需要知道用戶(hù)想要從哪個(gè)帳戶(hù)取款,因此下一個(gè)操作是詢(xún)問(wèn)(2)中的用戶(hù)應(yīng)該從哪個(gè)可用帳戶(hù)取款。在(3)中,用戶(hù)改變了目標(biāo),現(xiàn)在想知道他們信用賬戶(hù)的余額。

DM必須足夠聰明,在目標(biāo)改變后繼續(xù)對(duì)話(huà),但要保留已經(jīng)通過(guò)插槽記住的信息。在(5)中,用戶(hù)返回到初始目標(biāo),引用過(guò)去的數(shù)據(jù)而不顯式地指定它。

bot必須將這些信息關(guān)聯(lián)起來(lái),在(6)中,bot在執(zhí)行所需操作之前請(qǐng)求確認(rèn)收集的數(shù)據(jù)。

正如你所看到的,這不是一項(xiàng)容易的任務(wù);學(xué)術(shù)界和公司正在對(duì)這一過(guò)程進(jìn)行大量研究。根據(jù)目標(biāo),可以選擇更直接的方法或更復(fù)雜的方法。

最簡(jiǎn)單實(shí)用的方法和最不靈活的方法是將對(duì)話(huà)框建模為一個(gè)有限狀態(tài)機(jī)(FSM),其中每個(gè)狀態(tài)表示動(dòng)作,邊表示意圖。插槽可以保存在鍵/值數(shù)據(jù)結(jié)構(gòu)中。

更靈活的方法是將FSM與基于幀的系統(tǒng)相結(jié)合,如GUS在1977年描述的框架驅(qū)動(dòng)對(duì)話(huà)系統(tǒng)。

一種更復(fù)雜但同時(shí)也更復(fù)雜的方法是將對(duì)話(huà)框建模為ML的一個(gè)分類(lèi)問(wèn)題,其中對(duì)話(huà)框的歷史、過(guò)去選擇的動(dòng)作和槽是特征,動(dòng)作是要預(yù)測(cè)的類(lèi)。

NLG組件

NLP將人類(lèi)語(yǔ)言轉(zhuǎn)化為非結(jié)構(gòu)化數(shù)據(jù),NLU通過(guò)語(yǔ)法理解數(shù)據(jù),NLG則從結(jié)構(gòu)化數(shù)據(jù)生成文本。

NLG可以比作一個(gè)分析員,他將數(shù)據(jù)翻譯成單詞、句子和段落。這個(gè)組件的主要好處是它創(chuàng)建了一個(gè)上下文化的敘述,輸入隱藏在數(shù)據(jù)中的含義并進(jìn)行交流。

一旦機(jī)器人知道下一步要做什么,就應(yīng)該向用戶(hù)生成一個(gè)響應(yīng),這樣他們就可以得到某種反饋。在用戶(hù)收到反饋后,他們可以決定是否有足夠的信息,是否可以完成交互,或者提出進(jìn)一步的問(wèn)題。

這里有兩個(gè)主要的解決方案:簡(jiǎn)單的方法是在模板中預(yù)定義響應(yīng),在生成響應(yīng)時(shí)用占位符替換它們。另一種解決方案是動(dòng)態(tài)句子生成,它稍微復(fù)雜一點(diǎn),使用深度學(xué)習(xí)在注入一些數(shù)據(jù)后自動(dòng)生成響應(yīng)。它可以用于創(chuàng)建復(fù)雜的模板系統(tǒng)。

預(yù)定義響應(yīng)解決方案的示例如下所示。這種模板可以用于將數(shù)據(jù)直接翻譯成文本。

“我找到了從{從{城市}到{到{城市}的機(jī)票。”占位符是{從{城市}}和{到{城市},它們是取而代之的是談話(huà)中收集的實(shí)際數(shù)據(jù),給出這樣的回答:“我找到了從馬德里到哥本哈根的機(jī)票。”

誰(shuí)知道呢,也許GPT-3會(huì)給你這個(gè)組件的答案!

模塊化方法或端到端方法

到目前為止,在本文中,我已經(jīng)介紹了構(gòu)建chatbot的三個(gè)模塊或組件:NLU、DM和NLG。然而,有一種不同的方法正在積極研究中,這意味著只有一個(gè)組件接收用戶(hù)消息并生成響應(yīng)。

用戶(hù)可以說(shuō):“我想飛往北京”=>生成響應(yīng)的E2E黑盒=>星期一和星期二有航班。

這是一種端到端的方法,非常有趣,但目前它只存在于學(xué)術(shù)領(lǐng)域。然而,它看起來(lái)非常有前途!

這種方法的主要好處是,它允許您在每個(gè)模塊中控制NLP過(guò)程,對(duì)其進(jìn)行培訓(xùn),并分別對(duì)其進(jìn)行改進(jìn)。另一個(gè)好處是單一責(zé)任原則,每個(gè)模塊只負(fù)責(zé)一件事,便于代碼維護(hù)。

為您的項(xiàng)目選擇正確的方法

到目前為止,我們已經(jīng)提出了開(kāi)發(fā)對(duì)話(huà)系統(tǒng)的不同技術(shù)和方法。根據(jù)您的項(xiàng)目需要,如果所需的bot非常簡(jiǎn)單,可以使用使用經(jīng)典N(xiāo)LP方法的簡(jiǎn)單NLU和基于FSM的對(duì)話(huà)框管理器。

如果您正在研究ML提供的可能性,您可以選擇模塊化方法,每個(gè)模塊使用不同的ML技術(shù),也可以使用端到端方法。另一種選擇是將它們結(jié)合起來(lái)——例如,實(shí)現(xiàn)一個(gè)基于ML的NLU模塊,以及一個(gè)基于幀的對(duì)話(huà)框管理器和一個(gè)基于模板的NLG。

有很多可能性,但我們的想象力是有限的。我鼓勵(lì)那些對(duì)構(gòu)建bot感興趣的人深入研究本文中討論的不同選項(xiàng),以發(fā)現(xiàn)哪個(gè)選項(xiàng)適合您的項(xiàng)目。