第一科大Chatbot LUIS

57
ChatBot LUIS 陳葵懋 Ian Chen 高雄第一科大

Transcript of 第一科大Chatbot LUIS

Page 1: 第一科大Chatbot LUIS

ChatBot

LUIS陳葵懋 Ian Chen

高雄第一科大

Page 2: 第一科大Chatbot LUIS

About Me

資深程式設計師,以Microsoft技術為主,

從事於商業應用系統軟體設計與開發,

累積超過15年的Web Application開發

經驗,近年來開始接觸App開發以及

Azure雲端服務,喜愛新事物、把玩新

技術、從Web到App,使終相信學習是

往前進的唯一道路,非常厭倦複製貼上

一成不變的機器模式。

Web: codeian.idv.tw

Email: [email protected]

Blog: dotblogs.com.tw/ian

• 高師大資訊教育研究所碩士

• Microsoft MVP Visual Studio and

Development Technologies

• Microsoft 大型研討會講師

• K.NET 社群講師兼共同創辦人

• 企業技術內訓講師

• 學校業界講師

Page 3: 第一科大Chatbot LUIS

Agenda

01 ChatBot讓我們先來看看ChatBot的發展與問題

ChatBot不只是聊天。

03 LUIS自然語意理解系統。

02 APP vs ChatBotChatBot取代APP。

04 Bot framework建立你的ChatBot。

Page 4: 第一科大Chatbot LUIS

ChatBot讓我們先來看看Bot的發展與問題

ChatBot不只是聊天

01

Page 5: 第一科大Chatbot LUIS

ChatBot

01

桌機的年代

PC

1980s

網路的年代

Internet

1990s

2000s

APP的年代

Mobile

人類與機器對話的年代

Conversation

Now

Page 6: 第一科大Chatbot LUIS

ChatBot1

1966年,MIT教授Joseph Weizenbaum

史上第一支Chatbot - Eliza

經過50年ChatBot為何現在才開始夯起來

Page 7: 第一科大Chatbot LUIS

ChatBot

Page 8: 第一科大Chatbot LUIS

ChatBot

https://medium.com/@compose.ai/聊天機器人市場版圖-chatbots-landscape-f89302206875

Page 9: 第一科大Chatbot LUIS

ChatBot

https://medium.com/@compose.ai/聊天機器人市場版圖-chatbots-landscape-f89302206875

Page 10: 第一科大Chatbot LUIS

98%• 行動通訊(mobile message)開啟率有將近

98%

• 2017年預計會有28.2兆則訊息會被發送

• 全球最常用的App中,通訊App(Messaging

App)就佔了6個

ChatBot03

https://www.scripted.com/content-marketing-2/chatbot-marketing

Page 11: 第一科大Chatbot LUIS

Chatbot1

1

2

3

4

人類的對話語句夾帶著情緒、文字,如何理

解語句真正意圖是有難度的。

人類的對話有時一句話可能會分段組成,eg:

今天...你有空嗎 vs 今天你有空嗎。

AI人工智慧 ,ML機器學習,NLP自然語言

處理,雲端服務的崛起

LINE 、 Facebook Messenger 、 Skype 、

Slack 都有提供 SDK 和 API

Page 12: 第一科大Chatbot LUIS

ChatBot1

ChatBot 能做什麼

理解用戶意圖,然後做出相對的回應

Page 13: 第一科大Chatbot LUIS

ChatBot1

ChatBot不只是聊天

任務導向型( Task )

「一問,一答」,你問它什麼,它就回答你什麼,明確地定義下一個步驟要做什麼

問:台北今天天氣如何答:70%會下雨

純聊天型( Chat )

純聊天自然的對話,閒聊沒有特定任務的目標

問:我今天心情不好答:聽首歌,外出走走如何呢

Page 14: 第一科大Chatbot LUIS

ChatBot1

銀行客服系統

電話語音

中文請按1,英文請按2

銀行業務請按1,基金業務請按2

美元匯率請按1,日元匯率請按2,歐元匯率請按3....

ChatBot

問:請問今天美元匯率是多少?

答:1美元兌換30.3台幣

Page 15: 第一科大Chatbot LUIS

ChatBot1

智慧數位助理

Microsoft Cortana Apple Siri Google Now

Page 16: 第一科大Chatbot LUIS

APP vs ChatBotChatBot取代APP。02

Page 17: 第一科大Chatbot LUIS

APP vs ChatBot2

ChatBot可以將多個APP能做的事情結合在一起處理完成

準備旅行

景點APP找景點高鐵APP訂車票交通APP查公車/捷運路線Mail通知團友分享行程到facebook

ChatBot

可以在一個對話行為中完成這些事情

Page 18: 第一科大Chatbot LUIS

APP vs ChatBot2

荷蘭皇家航空攜手臉書Messenger推新服務

透過Messenger接收航班預定確認、辦理登機手續的通知、行程、登機證和航班狀態更新等資訊

Page 19: 第一科大Chatbot LUIS

APP vs ChatBot2

台灣房屋房仲Chatbot

利用LINE Messaging API結合微軟LUIS的語意理解

台灣房屋將地產機器人定位成功能型Chatbot,消費者需要資訊時,可以即時得到資訊,平時將不會發送訊息干擾消費者

消費者只需加入地產機器人的Line帳號,就可以透過對話的方式,即時獲得房屋資訊、成交行情等資料

Page 20: 第一科大Chatbot LUIS

LUIS自然語意理解系統。03

Page 21: 第一科大Chatbot LUIS

LUIS3

Nature Language Processing 自然語言的挑戰辨別使用者的意圖到底是什麼

自已建立條件判斷式資料庫,程式由大量的 if-then 組成,利用關鍵字來處理eg:

substring("hi") or substring("hello")

or substring("您好")...

自建文字庫

透過機器學習,建立語意理解系統,需要龐大的物力及專業知識,一般個人或團隊無法建立,通常我們會運用現有的雲端資源來協助

Luis.ai – Microsoft / API.ai – Google

雲端服務

Page 22: 第一科大Chatbot LUIS

LUIS3

LUIS(Language Understanding Intelligent Services)藉由對話語句理解用戶的意圖

微軟推出針對語句理解能力的雲端服務,藉由句子推測出用戶的意圖(intents)以及相關的關鍵項目(entities)

Page 23: 第一科大Chatbot LUIS

LUIS3

語意理解是嘗試藉由句子推測出用戶的意圖

(intents)以及相關的關鍵項目(entities)

意圖就是你想要幹嘛

實體就是關鍵項目

語意理解Language Understanding

對一個句子或一串文字進行拆解分析,找出關

鍵字做為後續運用

文字分析Text Analytics

Page 24: 第一科大Chatbot LUIS

LUIS3

我要一杯咖啡

意圖 : 點餐關鍵項目:飲料

Language Understanding

咖啡

Text Analytics

Page 25: 第一科大Chatbot LUIS

LUIS3

意圖(Intents)與關鍵項目(Entities)設計不當

Intents:天氣如何Entities:台北

台北天氣如何?

Intents:詢問天氣Entities:地點

Page 26: 第一科大Chatbot LUIS

LUIS3

LUIS Custom entities

簡單的、通用的項目例如:餐點地點

Simple

Page 27: 第一科大Chatbot LUIS

LUIS3

LUIS Custom entities

具有父子層關係的項目設計例如:機票 頭等艙、商務艙、經濟艙

Hierarchical

Page 28: 第一科大Chatbot LUIS

LUIS3

LUIS Custom entities

複合式項目設計,組合兩個以上的Entities (simple or hierarchical),項目間彼此是獨立的,不需有相關性例如:購買2張到台北2/10的商務艙高鐵票(數字/地點/日期/票種)

Composite

Page 29: 第一科大Chatbot LUIS

LUIS3

LUIS Custom entities

相似關鍵字項目設計,將意思相同的文字關鍵字定義成統一的項目值例如:台大 台灣大學、台大美金 美金、美元、美圓

List

Page 30: 第一科大Chatbot LUIS

Create App使用Microsoft account登入LUIS Portal,建

立你的APP

1

LUIS

https://www.luis.ai3

Page 31: 第一科大Chatbot LUIS

Add Intents 加入意圖項目,可以有多個意圖

LUIS

https://www.luis.ai3

Page 32: 第一科大Chatbot LUIS

Add Entities 加入關鍵項目,可以有多個

3

LUIS

https://www.luis.ai3

Page 33: 第一科大Chatbot LUIS

範本例句建立範本例句及關鍵項目對應,做為後續機器

學習的參考

4

LUIS

https://www.luis.ai3

Page 34: 第一科大Chatbot LUIS

Train & Testing 反覆訓練及測試

LUIS

https://www.luis.ai3

Page 35: 第一科大Chatbot LUIS

Publish發行並取得服務結點Url

LUIS

https://www.luis.ai3

Page 36: 第一科大Chatbot LUIS

LUIS3

LUIS(Language Understanding Intelligent Services)藉由對話語句理解用戶的意圖

LUIS回饋的是使用者

意圖機率的推測

LUIS 具有機器學習機

制,透過範本例句的反

覆回饋訓練,提高預測

準確度

"query": "服務人員口氣

不好",

"topScoringIntent":

{ "intent": "客訴",

"score": 0.8642544

86.42

%

luis.ai

Page 37: 第一科大Chatbot LUIS

Bot framework4

https://docs.microsoft.com/en-us/bot-framework/overview-how-bot-framework-works

Page 38: 第一科大Chatbot LUIS

1 2 3

Conversation Channels

Skype

Facebook Message

Web Chat

Slack

Cortana

Bot Connector Service

Send/receive messages

Microsoft Cognitive

Service / LUIS

Bot Web Service

Your ChatBot Core Logic

#Azure Web APP

Bot framework04

Page 39: 第一科大Chatbot LUIS

1 2 3

Bot framework04

Bot Web Service

• Visual Studio 2017 (Community )

• Project Template (http://aka.ms/bf-bc-vstemplate)

• Copy Project Template *.zip file to %USERPROFILE%\Documents\Visual Studio

2017\Templates\ProjectTemplates\Visual C#\

%USERPROFILE%\Documents\Visual Studio 2017\Templates\ProjectTemplates\Visual C#\

Page 40: 第一科大Chatbot LUIS

1 2 3

Bot framework04

Bot Web Service

%USERPROFILE%\Documents\Visual Studio 2017\Templates\ProjectTemplates\Visual C#\

• create a new C# project

• Bot Application template

• Update Microsoft.Bot.Builder

Page 41: 第一科大Chatbot LUIS

1 2 3

Bot framework04

Bot Web Service

%USERPROFILE%\Documents\Visual Studio 2017\Templates\ProjectTemplates\Visual C#\

• install bot emulator (https://emulator.botframework.com/)

• Start your bot

• Connect bot emulator to

http://localhost:port-number/api/messages

Page 42: 第一科大Chatbot LUIS

1 2 3

Bot framework04

%USERPROFILE%\Documents\Visual Studio 2017\Templates\ProjectTemplates\Visual C#\

• Crate a bot

(https://dev.botframework.com/)

Bot Connector

Page 43: 第一科大Chatbot LUIS

1 2 3

Bot framework04

%USERPROFILE%\Documents\Visual Studio 2017\Templates\ProjectTemplates\Visual C#\

• Bot handle (Used in the URL for your bot)

• Messaging endpoint (your bot web service url)

• Create Microsoft App ID and password

Bot Connector

Page 44: 第一科大Chatbot LUIS

1 2 3

Bot framework04

%USERPROFILE%\Documents\Visual Studio 2017\Templates\ProjectTemplates\Visual C#\

• Publish Your bot Service to Azure Web

• Configuration Messaging endpoint

https://your_bots_hostname/api/messages

• Test bot connector

Bot Connector

Page 45: 第一科大Chatbot LUIS

1 2 3

Bot framework04

%USERPROFILE%\Documents\Visual Studio 2017\Templates\ProjectTemplates\Visual C#\

Channels

Page 46: 第一科大Chatbot LUIS

1 2 3

Bot framework04

%USERPROFILE%\Documents\Visual Studio 2017\Templates\ProjectTemplates\Visual C#\

Channels

• Create your facebook fans page

• Create your facebook application

https://developers.facebook.com/

Page 47: 第一科大Chatbot LUIS

1 2 3

Bot framework04

%USERPROFILE%\Documents\Visual Studio 2017\Templates\ProjectTemplates\Visual C#\

Channels

• Facebook Page ID

• Facebook App ID

• Facebook App Secret

• Page Access Token

Page 48: 第一科大Chatbot LUIS

1 2 3

Bot framework04

%USERPROFILE%\Documents\Visual Studio 2017\Templates\ProjectTemplates\Visual C#\

Channels

• Add Webhooks (developers.facebook.com)

• Callback URL

• Verify Token

Page 49: 第一科大Chatbot LUIS

1 2 3

Bot framework04

%USERPROFILE%\Documents\Visual Studio 2017\Templates\ProjectTemplates\Visual C#\

Channels

Page 50: 第一科大Chatbot LUIS

1 2 3

Bot framework04

%USERPROFILE%\Documents\Visual Studio 2017\Templates\ProjectTemplates\Visual C#\

Channels

Page 51: 第一科大Chatbot LUIS

Bot framework4

Page 52: 第一科大Chatbot LUIS

Bot framework4

Page 53: 第一科大Chatbot LUIS

Bot framework4

Page 54: 第一科大Chatbot LUIS

Bot framework4

結合LUIS的Chatbot

Page 55: 第一科大Chatbot LUIS

Bot framework4

//Send to LUIS

WebRequest request = WebRequest.Create(luisurl + "&q=" + HttpUtility.UrlEncode(activity.Text));

HttpWebResponse luisres = (HttpWebResponse)request.GetResponse();

Stream datastream = luisres.GetResponseStream();

StreamReader reader = new StreamReader(datastream);

string resjson = reader.ReadToEnd();

//Recevice LUIS ResultLuisFeedBackResult luisresdata = JsonConvert.DeserializeObject<LuisFeedBackResult>(resjson);

//Use LuisFeedBackResult Object Write your logic code……..

……..

ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl));

// return our reply to the user

Activity reply = activity.CreateReply(answer);

await connector.Conversations.ReplyToActivityAsync(reply);

Page 56: 第一科大Chatbot LUIS

Bot framework4

Page 57: 第一科大Chatbot LUIS

Resources

• https://dev.botframework.com/

• https://www.luis.ai/