圖片來源: 

AWS

AWS終於在近日釋出Alexa的背後Chatbot引擎Amazon Lex,曾在2016年11月底AWS re:Invent的活動上推出Lex的測試版,2017年的4月發布正式版本,不過,目前只在美國東部(維吉尼亞北部)的區域提供服務,且只支援英文。

Lex是AWS旗下的一項服務,提供使用者打造對話機器人的引擎,Lex能介接到對話介面的通訊平臺,並提供開發人員深度學習的技術,像是自然語言理解技術和自動語音辨識。

開發人員使用Lex的服務建立Chatbot的過程中,不需要自行建立機器學習的模型,可直接使用Lex自動產生的機器學習模型,建立完成之後,開發人員也可以在Lex的平臺的測試視窗(Test Window)測試Chatbot。

Lex與Lambda無伺服器運算服務整合,讓使用者將程式碼上傳後,AWS即會自動調派AWS EC2運算服務,建立Lambda程式的執行環境,讓執行程式變得更便利,開發人員建置完對話機器人後,能將Chatbot部署到通訊平臺、行動用戶端,甚至是IoT裝置。

若開發人員想將Chatbot部署到行動裝置上,Lex也提供開發人員可用iOS和Android的SDK介接,開發人員可透過Amazon Cognito啟用使用者身份驗證,並使用AWS Mobile Hub來建立行動裝置平臺上的Chatbot。

若是要部署到通訊平臺,Lex整合了Facebook Messenger、Slack和Twilio SMS這3項對話通道,開發人員可以在Lex的介面上選擇要部署的通道,在提供Token之後,Lex會給予Callback URL,開發人員即可將Chatbot發布到對話通道上執行。

Lex的介面也提供了監控介面(Monitoring Dashboard),讓開發人員監控對話機器人的狀況,目前,Lex可以顯示遺漏的訊息、回應延遲時間和使用流量等相關資訊,也能檢視未被Lex辨識出來語句,這樣的監控機制,讓開發人員能夠獲得修改Chatbot的參考依據。

打造自家Chatbot,建立語意分析資料搭配訊息管理

企業開發人員使用Lex之前,要先註冊AWS的帳戶,註冊完即可開始使用Lex的服務。首先,Lex將Chatbot語意分析分為意圖(Intent)、例句(Utterance)和Slot。

意圖是使用者要對話機器人完成的任務,例句是使用者依據不同表達方式說明意圖的語句,與微軟和IBM不一樣的是,Lex將例句設定為意圖的平行項目,這也意味著,Lex的例句能夠用在不同意圖中,省去在不同意圖下建立一樣例句的步驟。

Slot則是要滿足執行意圖的條件所輸入的參數,與微軟和IBM的Entity不同,Slot能夠記錄此參數觸發程式的狀態(Statement),Lex遇到類似的意圖,像是訂飯店或是訂機票,就會保留Slot的資訊,供不同意圖使用。

舉例來說,我要訂機票這個例句就會觸發訂票的意圖,對話機器人透過提示(Prompt)的反問機制問使用者「請問您要到哪裡?」使用者輸入「紐約」這個參數便是要滿足意圖的Slot。

其中,Slot又可以依照對應的意圖,分為不同的條件詞彙類別(Slot Type),像是訂機票意圖的條件詞彙又可分為出發地、目的地、時間、班機編號等類別,此外,Lex不僅像微軟一樣,有提供開發人員內建的條件詞彙類別,包含日期、時間、數字等,還提供了一些基本的意圖,像是查詢天氣、電影時刻表、音樂等。

開發人員建立完語意分析的資料後,就可以開始建置訊息管理,讓Chatbot更聰明。Lex訊息的管理上,採用提示(Prompt)來獲得足夠的Slot,例如,開發人員可以設定在接收到訂機票的意圖後,建立「請問您要到哪裡?」的提示。

Lex能透過問答的方式,取得語意分析所需的Slot,經過多輪的對話,得到足夠的條件後,再執行使用者的意圖。

Lex將語意分析的元件分為意圖(Intent)、例句(Utterance)和Slot,與微軟和IBM不一樣的是,Lex將例句設定為意圖的平行項目,Slot也與微軟和IBM的Entity不同,Slot能夠記錄此參數觸發程式的狀態(Statement),Lex遇到類似的意圖,就會保留Slot的資訊,供不同意圖使用。

圖片來源:AWS

Amazon Lex的特性

Lex也有提供對話管理的機制,不同於IBM的Conversation服務的對話樹,Lex採用Session timeout與Cross-intent information sharing這2項機制來管理對話。

Session timeout提供開發人員設定一段時間,讓Lex保留對話的資訊,讓使用者在有效的時間內,可延續對話,不需要每次都重新輸入資訊。

舉例來說,訂購機票的Chatbot與使用者互動時,會支援訂票、查詢訂單狀況等意圖,當Chatbot收到使用者要訂票的意圖時,會開始反問問題以得到足夠的Slot,像是時間、艙等和目的地等。

若使用者提供了相關的條件詞彙資訊,但尚未完成訂購,Lex會將使用者的提供資訊的記錄保留一段時間,若使用者在時效內回到對話,即可繼續訂購的對話,不需要重新對話一次,開發人員可以自由設定時效的時間,Lex的預設值為5分鐘。

Cross-intent information sharing則是讓Chatbot在執行不同的意圖時,可以同時使用對話內容的資訊,例如,在訂購機票的Chatbot中,若使用者已完成訂購機票的意圖,也提供了Slot的資訊,想轉移到查詢訂購狀況的意圖,Lex則是透過詢問使用者訂購編號和日期,將兩項意圖的資訊串在一起,這樣一來,訂購的資訊就可以同時被不同意圖使用,不需要重新再問一次使用者訂購的相關資訊。

另外,Lex還提供意圖鏈(Intent Chain)機制來管理上下文,根據使用者表達的語句,動態地轉移意圖,能夠讓開發人員將對話分成多個元件,簡化複雜的對話。

以旅遊的對話機器人為例,開發人員可在使用者訂購機票之後,設計對話機器人接續詢問是否要訂飯店或是車子,根據使用者的回覆,可能會觸發或是拒絕額外的訂購,Lex也都正確地處理。

比較特別的是,Lex提供2個版本管理的功能,分別是Versioning和Alias,Versioning是在開發人員第一次發布(Publish)Chatbot後,Lex會自動記錄並產生一個版本,之後每一次發布都會產生一個新的版本,版本編號依序增加1,像是Version2的下一個版本就是Version3。

不過,Lex在開發人員發布Chatbot時會與最新的版本比較,若沒有修改或調整任何內容,Lex並不會建立新的版本。

版本管理的功能,讓開發人員在部署Chatbot時,有更高的自由度,例如,開發人員要將Chatbot部署到不同的通訊平臺上,就能使用不同的版本。

Alias則是提供開發人員指定特定版本的Chatbot,每個開發和執行階段都可以指定不同版本的Chatbot,甚至,開發人員可以在使用者使用Chatbot時更新版本。

舉例來說,開發人員可以先指定發布版本一的對話機器人,若版本二要發布,開發人員可以在版本二發布後,直接將Alias轉為指定新的版本。由於Lex採用Alias的機制,而不用另外發布新的版本,使用者可以隨時使用Chatbot最新的功能。

這樣的機制對開發人員而言,是一大優點,若新的版本有問題時,就可直接透過Alias轉到前一個版本。除此之外,Lex的服務還能提供企業的開發人員一同參與設計Chatbot的過程,能允許多個開發人員在Lex服務中開發、測試。

Lex提供2項版本管理的功能,分別是Versioning和Alias,Versioning能記錄每次開發人員發布的Chatbot版本,Alias則是提供開發人員能在開發、執行階段,分別指定使用特定版本的Chatbot。

圖片來源:AWS


Advertisement

更多 iThome相關內容