案例分享:用SAP Conversational AI構建聊天機器人
譯文【51CTO.com快譯】如果您是一名初次接觸構建聊天智能機器人(Chatbot)的新手,那么在面對各種自然語言理解、對話流和消息傳輸平臺等概念時,一定會倍感壓力。在本文中,我將手把手地引導您在SAP Conversational AI上構建出***個聊天機器人,并達到如下的目標:
- 讓Bot理解人類的語言。
- 由強人工智能所驅動的復雜對話流。
- 將該Bot部署到外部渠道上(如:Facebook Messenger、Twitter等)。
下面讓我們從一個簡單的Bot開始吧。下圖是它與人類對話的界面:
在此,該Bot需要達到的智能程度為:
- 理解各種問候和告別語。
- 理解用戶要求講個笑話,能夠從列表中隨機挑選一個笑話,并回復。
- 理解至少兩種反饋(大笑或咧嘴笑)的意義,并能以有趣的GIF圖片或深深的道歉作出回復。
- 在Facebook Messenger上部署該Bot。
前期要求
1. 在SAP Conversational AI上創(chuàng)建一個免費帳戶。
2. 在登錄之后,單擊“Start with a template”按鈕,或直接單擊右邊標簽處的“+ NEW BOT”按鈕。
3. 您可以為Bot選擇一項或多項預定義的技能。這將有助于您更快地上手。此處,我們只選擇“Greetings”,不過稍后您還可以添加其他技能。
4. 將它命名為“joke-Bot”。
5. 將其描述為“我的***個有趣的joke-Bot”。
6. 您可以設置6個主題來改進對Bot的培訓。同時,您可以將主題的關鍵字定義為:“時尚”、“游戲”或“工作”。
7. 根據(jù)數(shù)據(jù)的使用情況,選擇適當?shù)臄?shù)據(jù)策略選項。注意:考慮到可能會被問及用戶的個人健康信息,因此我們沒有勾選“健康”類Bot。
8. 將默認語言設為英語。
9. 由于暫時沒有隱私信息,您可以將其設置為公開狀態(tài),稍后再酌情調(diào)整。
至此,我們已經(jīng)為構建Bot做好了前期準備工作。
Bot的構建階段
常規(guī)情況下,Bot會在平臺上經(jīng)歷如下5個階段:
1. 訓練 - 教會Bot需要理解的東西。
2. 構建 - 使用Bot Builder工具來創(chuàng)建對話流。
3. 代碼 - 使用外部API或數(shù)據(jù)庫來連接Bot。
4. 連接 - 將Bot發(fā)送到一個或多個消息傳輸平臺上。
5. 監(jiān)控 – 持續(xù)訓練Bot,使之更智能、更能靈活地應對各種情況。
由于我們暫時不需要任何外部的信息,因此我們在此跳過“代碼”部分。當然,如果您想進一步了解Bot與代碼的連接,請參閱:https://cai.tools.sap/blog/nodejs-chatBot-movie-Bot/ 。
第1步:訓練Bot理解人類語言
作為Bot,它需要能夠理解自己收集到的信息,并區(qū)分不同的意圖(intent)。此處,意圖是指不同表達方式的句子,所具有相同的含義。因此,當用戶向Bot發(fā)送一些文本信息時,我們的算法會將它們與意圖中的短語進行比較,檢查并匹配出最接近的一個,進而判斷出文本消息的意圖是什么。
例如:
- 您是機器人嗎?
- 您答復得這么快,我相信您一定是某種機器人吧。
- 我是在與人類交談嗎?
可見,上述三句的表達方式不同,但都是在問同一個問題:您是機器人嗎?因此,如果您的Bot能夠識別該問題,那么就可以準備好一個明智的回答,例如“我是機器人,我驕傲。”
“叉”入意圖(Fork Intents)
在與用戶交流時,所有類型的Bot都能夠識別諸如:“問候”、“同意”、“不同意”等基本內(nèi)容。因此,如果您在前期給Bot選擇設置了預定義的“Greetings”技能,那么它已經(jīng)具備了告別和問候,這兩種意圖的判斷能力。
而且,由于SAP Conversational AI是協(xié)作式的,因此您無需每次都重新創(chuàng)建新的意圖。您完全可以將其他人已經(jīng)創(chuàng)建的意圖“叉”入(克隆)進來。例如,當獲悉用戶想要聽笑話時,我們就可以在社區(qū)中檢索是否有已經(jīng)創(chuàng)建好的此類意圖。
如上圖所示,您可以在搜索欄中輸入“joke”,以獲取結果列表。如果想查看其具體內(nèi)容,您也可以直接單擊不同意圖的名稱。
創(chuàng)建一個新的意圖
如果您想要自定義一個新的意圖,那么就需要從頭開始構建它。在此,我們希望Bot能夠理解到對方在聽到笑話時笑了。因此,您可以單擊搜索字段右側的“+ Create”,然后為您的意圖起一個名稱。
重復上述過程,您可以創(chuàng)建對方覺得不可笑的意圖:
第2步:添加表達式
既然創(chuàng)建了意圖,我們就需要用各種表達式表示它們。我們可以單擊不同的意圖,然后添加不同的表達式語句。我的建議是:請為單個意圖添加至少30個表達式,理想情況為50個。
下面是一些表達式的例子:
大笑
- 哈哈哈,這很有趣。
- ROFL(笑得在地上打滾,rolling on the floor laughing)您很棒!
- 朋友,真有你的!這是一個超贊的笑話。
- 我很久沒有如此大笑了。
不可笑
- 看來,您缺乏幽默細胞。
- 這個既糟糕又令人反感。
- 這到底表達了什么?
- 這個笑話一點都不好笑,換一個試試。
提示:您可以通過單擊界面中藍色的“You have X expressions suggested to enrich your intent”,來查看更多可添加的表達式示例。這樣能夠加快對Bot的訓練。
第3步:測試Bot
在控制臺上,單擊右上角的TEST氣泡圖標。鍵入一個您從沒訓練過的句子,例如:“您能給我講個笑話嗎?”
根據(jù)您輸入的內(nèi)容,Bot會檢索出意圖、并做出答復。如果現(xiàn)有算法沒能檢測到相應的意圖、或是檢測到了無效的意圖,那么您就需要添加新的、或是修改現(xiàn)有的表達,來進一步訓練它。這似乎有些繁瑣,但這是確保Bot能夠正確識別用戶語句的***方式。
在Bot的意圖檢測效果達標之后,我們就可以進入下一階段:構建Bot的對話流。
第4步:構建和管理對話流
現(xiàn)在,讓我們在Bot Builder中找到Build選項卡,它能夠幫助我們根據(jù)Bot的技能來構建對話流。
什么是技能?
每一個技能都代表Bot“知道”如何做的某件事,它們之間通過相互排列組合,會變得逐漸復雜起來。
在創(chuàng)建一個新的Bot時,您已經(jīng)為它選擇了預定義的技能。當然為了避免“重復制造輪子”,您也可以在平臺上查找并“叉”入其他人創(chuàng)建好的技能。
例如:如果您在創(chuàng)建時選擇了預定義技能“Greetings”,那么它就會出現(xiàn)在您的界面上。
單擊其名稱,可獲取如下詳細的信息:
通常,一項技能會包含四個部分:
- 自述文件:對該技能進行描述。
- 觸發(fā)器:定義在收到用戶何種消息后,應激活此技能。
- 需求:描述此技能需要進一步收集哪些信息,以及收集這些信息的條件。
- 動作:在需求滿足的條件下,應采取何種動作?
通過瀏覽該問候技能,您會發(fā)現(xiàn)其結構為:
- 如果問候或告別的意圖匹配成功,則觸發(fā)。
- 由于不需要收集更多的信息,因此沒有其他需求。這意味著它會在被觸發(fā)后,直接采取動作。
- 在此,它有兩個可能的動作:如果匹配的意圖是問候語,它會從列表中隨機選取歡迎的消息發(fā)送出去;如果意圖是告別,則從另一個列表中選取并發(fā)送消息。
第5步:建立自己的技能
讓我們回到Build選項卡,單擊左側的“+ Create”技能,以建立自己的技能。
在此有三種不同類型的技能:商業(yè)(Business)、浮動(Floating)和后備(Fallback)。
- 商業(yè)與浮動并無結構上的差異。它們足以涵括常用的大多數(shù)技能。
- 在接到用戶的消息但無法觸發(fā)任何技能時,后備技能就派上用場了。多數(shù)情況下,您只能使用其中一種類型。當然您也可以通過提示用戶有關Bot能做什么,以建議他們改寫問題。
在此,我們的技能屬于浮動類型。我將其命名為“tell-me-a-joke”。
通過單擊新創(chuàng)建的技能,以及“Triggers”選項卡,我們可以針對匹配上的意圖,激活不同的技能。
如上圖所示,由于默認是AND條件,而我們卻希望在任何一個意圖被匹配時,都激活我們的技能,因此不要忘記將條件更改為OR(單擊其中的藍色按鈕“AND”)。
由于對此案例并無任何額外的需求,因此我們不做額外的設置。當然您也可以通過詢問更多信息來改進Bot,例如:喜歡什么類型的笑話,或是為成人笑話添加年齡要求等。
下面,我們通過點擊“動作”選項卡,來創(chuàng)建***個消息組。
單擊“ADD NEW MESSAGE GROUP”,以及“ADD CONDITION”,來添加消息觸發(fā)的條件,例如:If @ask-joke is-present。此處“@”代表意圖的類型。我們稍后會介紹到。
然后,您可以選擇動作為“SEND MESSAGE”,以及文本的格式。
***,您就可以輸入自己喜歡的笑話了。
當然,您也可以在兩條消息之間設置5秒鐘的延遲,以方便用戶花時間讀完Bot回復的那些長消息。
第6步:給Bot提供不同可能的答案
單擊消息上的“+”,您可將新的消息添加到隨機列表之中。這樣您就不會總是發(fā)送一些千篇一律的笑話了。如果再次單擊“SEND MESSAGE”的下方,您還可以同時發(fā)送多條消息。
下面我們來介紹另外兩個意圖。
請單擊“ADD A NEW MESSAGE GROUP”,并將條件設置為:If @laughs is-present。
如果我想在這種情況下發(fā)送各種GIF圖片,那么就可以點擊“SEND MESSAGE”和“Image format”。
同理,我也可以對第三種意圖進行此類操作。
第7步:與Bot聊天
接下來,我們就需要讓Bot在真實情況下去與人類用戶聊天了。當然,我建議您在構建的過程中,就盡可能多地與Bot聊天,以盡早識別出那些邏輯錯誤。
單擊右下角的藍色按鈕“CHAT WITH YOUR BOT”,試著發(fā)送一些消息。同時,您也可以使用“Clear”來清屏。
第8步:將Bot連接到消息傳輸平臺
一切準備就緒后,我們就可以將Bot部署到公共消息傳輸平臺上了。
讓我們轉到“Connect”選項卡,選擇您偏好的消息傳輸平臺,然后按照其分步說明進行操作。
值得注意的是,不同的平臺會有所差異。例如:Telegram雖然易于配置,卻不支持GIF圖像。因此,您應該適當?shù)卣{(diào)整自己的Bot。如果您無從下手的話,我建議您使用Facebook Messenger,它是一個功能非常強大的平臺,而且擁有著大量的用戶。
第9步:監(jiān)控并訓練Bot
“Monitor”選項卡能夠幫助您持續(xù)改進Bot的智能程度。它能夠收集Bot所接收到的所有消息,并顯示匹配了何種意圖。通過密切監(jiān)控,您可以針對那些匹配無效、或根本不存在的意圖,進行動態(tài)調(diào)整與分配。
如上圖所示,針對***一條消息,Bot未能實現(xiàn)意圖的匹配。如果此類消息持續(xù)出現(xiàn)的話,我們就需要為它創(chuàng)建一個新的意圖了。
展望
如果您順利地完成了上述9個步驟,并想持續(xù)地改進該聊天機器人的話,您還可以從如下三個方面入手:
- 學習如何從消息中提取豐富的關鍵信息。
- 將Bot與代碼連接,實現(xiàn)與外部API的交互。
- 讓Bot能夠支持多種語言,以擴大自己的受眾。
***,不要忘了“叉”入他人創(chuàng)建好的意圖和技能。相信您的Bot一定會在不斷迭代與重構中更加智能的。
原文標題:Build Your First ChatBot With SAP Conversational AI,作者:Omer Biran
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】