不少SAP顧問朋友們對於人工智能/機器學習這個話題很是感興趣,也在不斷思考如何將這種新技術和SAP傳統產品相結合。Jerry以前的公衆號文章C4C和微信集成系列教程曾經介紹了Partner如何利用SAP Cloud for Customer內置的社交媒體集成框架,作一些簡單的開發將微信集成到C4C中去。該系列教程裏其中一篇文章,介紹瞭如何將圖靈機器人集成到某個公衆號的消息服務器上去,讓該公衆號能夠「智能地」同其關注粉絲聊天。程序員
這個圖靈機器人的圖靈服務經過Restful API的方式暴露出來,全部和機器學習相關的細節都被www.tuling123.com封裝成黑盒子,應用開發人員只管消費。這是第三方的人工智能解決方案。算法
2018年1月,SAP收購了一家法國的人工智能提供商,Recast.AI, 今後SAP也有了本身的人工智能解決方案。服務器
如今,訪問https://recast.ai, 能看到一行醒目的提示:Recast.AI is now part of SAP。那麼Recast.AI提供了怎樣的功能呢?最好的入門辦法,莫過於本身動手作一個Hello World例子出來。跟着Jerry一塊作一個吧。微信
咱們的目的同本文開頭截圖展現的一致:開發一個在微信裏使用的聊天機器人,不一樣之處在於此次咱們使用SAP Recast.AI做爲人工智能解決方案。app
絕大多數SAP顧問朋友們關注的是如何利用人工智能基於SAP傳統產品作創新,給客戶帶來價值,而不是花大量時間精力去學習機器學習底層須要的那些艱深的數學知識。Recast.AI也完美地將不須要應用開發人員瞭解的機器學習底層細節進行了封裝,咱們將要作的這個聊天機器人甚至不須要太多的編碼。框架
咱們在Recast.AI網站上在線建立聊天機器人。通常網站首次登錄都須要先建立用戶,而Recast.AI除了常規用戶註冊方式外,還貼心地提供了使用Github帳號直接登陸的選擇,對於天天混Github的程序員來講,這太方便了。機器學習
點擊按鈕容許Recast.AI訪問您Github帳號的公有信息後,能看到這個歡迎界面:ide
點"START WITH A TEMPLATE"基於現成的模板建立一個機器人:學習
和咱們在Fiori UI裏進行業務模型建立相似,首先維護機器人的ID和描述信息:測試
建立成功後,來到以下的機器人明細頁面,一共包含5個標籤。本文只會用到Train, Build和Connect這三個標籤。
Train標籤下沒有任何內容,只有一個提示:You have no intents.
什麼是intent呢?在Android開發裏也有intent的概念,intent是一個將要執行的動做的抽象描述。Android框架根據此intent的描述,負責找到將要執行動做對應的組件,再把包含了附加參數的intent傳遞給決定出的負責組件。而在Recast.AI裏的intent一樣是一個抽象概念。通俗地解釋,intent是一系列句子的集合,這些句子雖然從文字上來講表達方式各異,然而傳遞的是同一個意思。
好比下列三句話實際上是在同一個問題:
你是一個程序員麼?
你天天的工做是編寫代碼麼?
你天天使用集成開發環境或者命令行進行單步調試麼?
咱們能夠把這三個句子歸爲同一個intent,姑且命名爲"程序員"。假設當用戶又發送了一個新的文本到您的聊天機器人去:「你是靠編寫代碼維生麼?」 Recast.AI封裝好的算法會解析這個文本,將其和"程序員"intent裏的語句進行比較,若是判斷出來這個新的文本和intent中的某一句表達的意思很是接近,那麼咱們就能說這個新文本的intention(意圖)是"程序員"。此時,就可讓機器人回覆預先準備好的回答,好比「是的,我是程序員,我很喜歡寫代碼」。
上面的描述實際上已經涵蓋了本文聊天機器人建立完畢後,須要執行哪些後續步驟。
回到我建立的聊天機器人,目前沒有分配任何intent。
那麼我就點Create按鈕建立一個。固然也能夠點Search按鈕,從Recast社區上搜索一個別人建立好的intent。
如今新建的這個programmer intent尚未任何語句,如今咱們就來給它「喂」一些句子,這個動做稱爲"Train(訓練)"。輸入一個句子"Are you a programmer?",回車:
Recast.AI會自動將這個句子進行分詞,而且識別出一個代詞(Pronoun) - You, 一個數量詞(Number) - a, 和一個工做描述(Job) - programmer。
咱們再多喂幾個句子給這個intent:
Are you coding with Java or ABAP or JavaScript or C# or C++ or Python or Ruby?
Are you using Integrated Development Environment or Command Line to debug?
is Programming your daily work?
何時能夠結束訓練呢?首先給intent喂的句子越多,那麼它分析新的語句的意圖(intention)是否和程序員相關的準確度就越高。如今咱們能夠對這個intent進行測試。點擊Train標籤頁右上角的Test連接,會看到下圖的測試窗口。如今我給這個intent發送一條文本:
Are you working with Java every day?
Recast.AI將這個句子同我建立的"programmer" intent裏的句子進行比較,最後判斷出,這句話有99%的可能性屬於該intent(下圖字段confidence: 0.99)。
那麼咱們就結束訓練,進入下一個"Build"步驟。這個步驟負責定義當您的聊天機器人成功識別到了您的輸入是在討論程序員後,應該執行何種動做。Recast.AI把機器人這種成功識別出文本的intention後執行某種動做的能力,稱爲skill。在Build標籤頁點擊Create skill:
我給新建的skill取名:chat_with_programmer
給這個skill定義Triggers,意思是知足何種條件會觸發這個skill?在Triggers標籤頁下面使用Recast.AI預置的一些公式進行條件定義。
下圖if@programmer,意思就是:若是聊天機器人計算出用戶發送的文本是屬於"programmer"這個intent:
Actions就是在這種條件下應該執行的具體動做。
這裏我定義的Actions就是簡單地推送一些文本(SEND MESSAGE)給用戶。
準備一些文本,機器人會從中間隨機地選取一條推送給用戶。
Yes, and I am learning Scala in my spare time.
Yes, I have been programming for 20 years.
Yes, I am a programmer, I love programming!
點擊Build標籤頁的"CHAT WITH YOUR BOT"進行測試。隨便輸入一句和程序員相關的話,好比"Are you working with Java?" 在測試頁面,看到了機器人自動給我推送了一個回覆,同時顯示了我以前建立的"chat_with_programmer" skill已經被觸發(triggered)了。這意味着Build標籤頁裏的配置也已經完成。
最後,咱們能夠把這個建立好的聊天機器人進行發佈,讓它能夠被其餘平臺消費。這裏我選擇的是Webchat渠道,意思是在一個網頁內嵌入這個聊天機器人的對話窗口。
點擊Connect標籤頁,選擇Webchat:
能夠對嵌入的聊天機器人的會話窗口的某些屬性進行定製化,好比窗口標題,用戶和機器人的圖片定製等。
點擊SAVE CHANGES,會生成一段包含Script標籤的HTML代碼。直接拷貝到某個網頁裏,就能使用了。
好比您能夠把這個網頁做爲HTML5應用部署到SAP雲平臺上,獲得一個URL,而後把這個URL綁定到公衆號的某個自定義菜單上。當用戶點擊了這個微信菜單後,就會在微信裏打開聊天機器人的會話窗口。
具體步驟在個人博客裏有介紹:
Wechat development series 5 – embedded your UI5 application to Wechat app
下圖是個人聊天機器人在微信裏工做的效果圖。
本文這個例子的完整步驟在SAP Recast.AI的官網上也有記載,不過是全英文的。你們有興趣能夠動手作一作。感謝閱讀。
https://recast.ai/blog/build-your-first-bot-with-recast-ai/
要獲取更多Jerry的原創技術文章,請關注公衆號"汪子熙"或者掃描下面二維碼: