亚洲综合伊人,成人欧美一区二区三区视频不卡,欧美日韩在线高清,日韩国产午夜一区二区三区,大胆美女艺术,一级毛片毛片**毛片毛片,你瞅啥图片

您當(dāng)前的位置是:  首頁(yè) > 新聞 > 文章精選 >
 首頁(yè) > 新聞 > 文章精選 >

Chatopera多輪對(duì)話設(shè)計(jì)器:實(shí)現(xiàn)天氣查詢機(jī)器人的過(guò)程

2018-07-31 14:05:14   作者:   來(lái)源:CTI論壇   評(píng)論:0  點(diǎn)擊:


  隨著語(yǔ)音識(shí)別(ASR)和文字轉(zhuǎn)語(yǔ)音(TTS)技術(shù)的成熟,語(yǔ)音交互逐漸成為人機(jī)交互重要方式,AI音箱開(kāi)始流行,各種手機(jī)廠商也推出手機(jī)智能語(yǔ)音助手,在消費(fèi)者領(lǐng)域,各種技能快速增長(zhǎng)。另外一方面,消費(fèi)者也趨于使用即時(shí)通訊軟件來(lái)取代電話和短信。
2016-2018年亞馬遜Alexa技能數(shù)量增長(zhǎng)圖
  在企業(yè)中,客服系統(tǒng)、工作臺(tái)和辦公軟件也逐漸走向更加智能化和自動(dòng)化的方案。不管是中小型企業(yè)或者大型公司,都在踴躍嘗試AI技術(shù)飛躍帶來(lái)的福利。企業(yè)IT系統(tǒng)將迎來(lái)更多升級(jí),機(jī)器學(xué)習(xí)會(huì)刷新每一個(gè)軟件。圖片,視頻和文本是人工智能技術(shù)重點(diǎn)發(fā)揮優(yōu)勢(shì)的地方。人機(jī)對(duì)話系統(tǒng)將迎來(lái)革命,企業(yè)會(huì)普遍應(yīng)用對(duì)話應(yīng)用,一種更快捷,更智能的服務(wù)方式:使用對(duì)話機(jī)器人完成業(yè)務(wù)流程,比如智能會(huì)簽、智能請(qǐng)假、智能審批和智能客服等。
  但是目前,企業(yè)實(shí)現(xiàn)對(duì)話應(yīng)用的方式還很笨拙:
  1)上線周期長(zhǎng):由于缺少實(shí)踐經(jīng)驗(yàn),難以掌握人工智能技術(shù)的邊界,往往難以做好功能設(shè)計(jì),在開(kāi)始后還會(huì)返工。
  2)需要一個(gè)華麗的團(tuán)隊(duì):需要招聘目前緊俏的AI產(chǎn)品經(jīng)理、機(jī)器學(xué)習(xí)工程師和自然語(yǔ)言處理工程師,亦或是標(biāo)注人員和測(cè)試人員。
  3)需要接入第三方服務(wù):比如語(yǔ)音識(shí)別、文字到語(yǔ)音和機(jī)器學(xué)習(xí)硬件依賴等。
  然而,在Chatopera,我們回顧一些對(duì)話應(yīng)用,比如機(jī)器人客服場(chǎng)景時(shí),和機(jī)器人相關(guān)的模塊可以獨(dú)立為一個(gè)產(chǎn)品,經(jīng)過(guò)了仔細(xì)的分析,我們認(rèn)為,可以開(kāi)發(fā)兩個(gè)產(chǎn)品:多輪對(duì)話設(shè)計(jì)器和智能問(wèn)答引擎。前者面向企業(yè)的業(yè)務(wù)人員,撰寫(xiě)聊天機(jī)器人腳本;后者面向企業(yè)的IT人員,是問(wèn)答服務(wù)的運(yùn)行環(huán)境。
  本文重點(diǎn)介紹使用多輪對(duì)話設(shè)計(jì)器實(shí)現(xiàn)“天氣查詢機(jī)器人”的過(guò)程,我們選擇這個(gè)場(chǎng)景并不是因?yàn)樗?jiǎn)單,而是因?yàn)樗菀桌斫,使用多輪?duì)話設(shè)計(jì)器可以實(shí)現(xiàn)更復(fù)雜,更有價(jià)值的應(yīng)用。我們先一睹為快,這個(gè)機(jī)器人是什么樣子的。
  天氣查詢機(jī)器人Demo:https://v.qq.com/x/page/a0717l5z53k。html
  是不是很實(shí)用?如果你掌握了下面的技巧,它可以幫助做更多的事情。
  需求分析
  首先,我們需要梳理一下需求:
  1. 我想知道任意城市的天氣信息,比如“今天上海天氣怎么樣”;
  2. 我還比較關(guān)心空氣,我可以通過(guò)“今天上海空氣怎么樣”獲得空氣質(zhì)量信息;
  3. 我想知道今天適不適合戶外運(yùn)動(dòng),就問(wèn)“今天上海適合運(yùn)動(dòng)么”;
  4. 如果我問(wèn)了一個(gè)城市的天氣狀況,我還想繼續(xù)詢問(wèn)這個(gè)城市更多信息,這樣我不用每次都告訴機(jī)器人城市名稱。
  當(dāng)然,我的每個(gè)意圖都有多種表述方式,機(jī)器人能支持一些變化的問(wèn)法。如果我的問(wèn)題不夠嚴(yán)謹(jǐn),機(jī)器人還應(yīng)該提醒我合理的表達(dá)。
  準(zhǔn)備開(kāi)發(fā)環(huán)境
  • 下載多輪對(duì)話設(shè)計(jì)器
  多輪對(duì)話設(shè)計(jì)器的下載地址是:
  https://www.chatopera.com/product/conversation-designer
  如果您打開(kāi)后,下載按鈕顯示未“待發(fā)步”,是因?yàn)槲覀冞在緊張的測(cè)試,預(yù)計(jì)2018年7月21日可以發(fā)布v1.0版本,請(qǐng)?zhí)顚?xiě)“建立聯(lián)系”表單,我們發(fā)布后第一時(shí)間與您聯(lián)系。
多輪對(duì)話設(shè)計(jì)器下載頁(yè)面
  目前,多輪對(duì)話設(shè)計(jì)器支持的操作系統(tǒng)包括Windows和MacOSX,在安裝過(guò)程和啟動(dòng)過(guò)程中,如果遇到問(wèn)題請(qǐng)通過(guò)微信公眾號(hào)找到我們:
  微信公眾號(hào):獲得支持和幫助
  • 調(diào)研提供天氣信息查詢的API
  現(xiàn)在很多服務(wù)以API的形式提供,從搜索引擎中查找“天氣查詢服務(wù)API”,我們就能得到一些供應(yīng)商,經(jīng)過(guò)一些比較,我選擇了和風(fēng)天氣,它數(shù)據(jù)豐富,免費(fèi)額度大方。
  • AI音箱
  Chatopera與Sayinfo達(dá)成戰(zhàn)略合作關(guān)系,所以,我們的對(duì)話系統(tǒng)產(chǎn)品與任你說(shuō)音箱可以直接集成。
  第一條規(guī)則
  第一次打開(kāi)多輪對(duì)話設(shè)計(jì)器后,我們看到如下的面板,我們稱之為主面板。
  點(diǎn)擊新建按鈕,彈出創(chuàng)建機(jī)器人的表單:
  填入“小叮當(dāng)”,當(dāng)前多輪對(duì)話設(shè)計(jì)器支持中文(zh_CN)和英文(en_US),我們選擇“zh_CN”,點(diǎn)擊“確認(rèn)”。然后我們就得到了一個(gè)聊天機(jī)器人。
  在操作中,有幾個(gè)按鈕:
  • 管理:管理聊天機(jī)器人的多輪對(duì)話。
  • 版本管理:管理不同版本的機(jī)器人,導(dǎo)出機(jī)器人和在不同版本之間進(jìn)行比對(duì)。
  • 環(huán)境變量:機(jī)器人函數(shù)中依賴的全局變量,這些變量在“設(shè)計(jì)對(duì)話”的階段和在IT人員“部署到生產(chǎn)環(huán)境”下的值是不同的,比如一些接口服務(wù)的認(rèn)證鍵值對(duì)。
  • 發(fā)布:發(fā)布當(dāng)前機(jī)器人為最新版本。
  • 刪除:將機(jī)器人刪除。
  點(diǎn)擊“管理”,進(jìn)入多輪對(duì)話管理頁(yè)面,點(diǎn)擊“新建對(duì)話”,在彈出的窗口中,填寫(xiě)“對(duì)話名稱”為“weather”,點(diǎn)擊“確認(rèn)”。這時(shí),我們看到了新建的對(duì)話,我們將修改它的內(nèi)容完成天氣對(duì)話服務(wù)。
  點(diǎn)擊“編輯”,進(jìn)入對(duì)話編輯窗口。在左側(cè)的“腳本區(qū)域”,寫(xiě)下第一條規(guī)則。
  +今天(*)天氣[怎么樣]
  -{keep} <cap1>天氣挺好的
  點(diǎn)擊“保存”,這時(shí)右側(cè)的“邏輯區(qū)域”有了變化,出現(xiàn)了一個(gè)線條,在線條左右兩端分別是問(wèn)題和答案。在“對(duì)話區(qū)域”,我們輸入“今天北京天氣怎么樣”,點(diǎn)擊發(fā)送,這時(shí)機(jī)器人回復(fù)了。
  從我們需求上看,這沒(méi)什么用,但是它工作了,我們就一點(diǎn)點(diǎn)優(yōu)化它。對(duì)于在這條規(guī)則中,我們使用的語(yǔ)法,(*)代表一個(gè)槽位,<cap1>代表在回復(fù)中取槽位的值,[怎么樣]是可有的字符串,{keep}代表這條規(guī)則始終生效,keep涉及到對(duì)話的狀態(tài)管理,我們將在文檔中提供更多規(guī)則的描述,現(xiàn)在,讀者看懂本示例就可以了。
  添加函數(shù)
  在多輪對(duì)話設(shè)計(jì)器中,怎么請(qǐng)求和風(fēng)天氣的數(shù)據(jù)呢?使用函數(shù)。函數(shù)是多輪對(duì)話支持的使用JavaScript實(shí)現(xiàn)的程序。
  我們?cè)?ldquo;對(duì)話編輯窗口”點(diǎn)擊函數(shù),粘貼如下代碼:
var WForewast = function (apiKey) {
    if (!apiKey) throw new Error('Invalid token, get it from http://www.heweather.com/my/service');
    this.key = apiKey;
}


WForewast.prototype.getWeatherByCity = function (city) {
    return new Promise((resolve, reject)=>{
        let url =  "https://free-api.heweather.com/v5/weather?city=" + encodeURIComponent(city) + "&key=" + this.key
        http
            .get(url)
            .then((res)=>{
                resolve(res.data.HeWeather5[0].suggestion);
            })
            .catch(function (err) {
                if (err) return reject(err);
            });
    })
}

const wf = new WForewast('182f1b6826d94c6285a489d2414f3ad0');


exports.getWeatherByCity = function(city, cb){
    debug("getWeatherByCity: %s", city);
    wf.getWeatherByCity(city)
        .then((suggestions)=>{
            cb(null, {
                text: suggestions["comf"]["txt"]
            })
        }, (err)=>{
            debug("error:%j", err)
            cb(null, {
                text: `很抱歉,沒(méi)有獲得${city}的天氣信息。`
            })
        })
}

exports.getAirByCity = function(city, cb){
    debug("getAirByCity: %s", city);
    wf.getWeatherByCity(city)
        .then((suggestions)=>{
            cb(null, {
                text: suggestions["air"]["txt"]
            })
        }, (err)=>{
            cb(null, {
                text: `很抱歉,沒(méi)有獲得${city}的空氣信息。`
            })
        })
}


exports.getSportByCity = function(city, cb){
    debug("getSportByCity: %s", city);
    wf.getWeatherByCity(city)
        .then((suggestions)=>{
            cb(null, {
                text: suggestions["sport"]["txt"]
            })
        }, (err)=>{
            cb(null, {
                text: `很抱歉,沒(méi)有獲得${city}的信息。`
            })
        })
}

exports.getDresscodeByCity = function(city, cb){
    debug("getDresscodeByCity: %s", city);
    wf.getWeatherByCity(city)
        .then((suggestions)=>{
            cb(null, {
                text: suggestions["drsg"]["txt"]
            })
        }, (err)=>{
            cb(null, {
                text: `很抱歉,沒(méi)有獲得${city}的信息。`
            })
        })
}
 
  在函數(shù)中,我們實(shí)現(xiàn)了根據(jù)城市請(qǐng)求天氣、空氣質(zhì)量、著裝建議和運(yùn)動(dòng)建議的接口,分別是getWeatherByCity,getAirByCity,getDresscodeByCity和getSportByCity。
  細(xì)心的讀者會(huì)發(fā)現(xiàn),在函數(shù)中,多輪對(duì)話設(shè)計(jì)器直接支持了http,debug作為工具類,發(fā)起網(wǎng)絡(luò)請(qǐng)求和輸出日志信息。這兩個(gè)接口極大的擴(kuò)展了函數(shù)的能力,我們也會(huì)在函數(shù)中詳細(xì)描述它們的使用。
  然后,回到“腳本區(qū)域”,修改一下規(guī)則,更新如下:
  +今天(*)天氣[怎么樣]
  -{keep}^getWeatherByCity(<cap1>)
  在回復(fù)中,我們調(diào)用了getWeatherByCity,并且傳入了城市名稱。接著,在“對(duì)話區(qū)域”,輸入“今天北京天氣怎么樣”,回復(fù)與上次不一樣了。
  這次,我們看到了期望的回復(fù),正是從和風(fēng)天氣返回的北京今天的天氣狀況。
  使用環(huán)境變量
  在上面的函數(shù)中,我們有一個(gè)敏感的信息:和風(fēng)天氣的API密鑰。在實(shí)際應(yīng)用中,我們希望設(shè)計(jì)階段和部署階段,它的值是不同的。這時(shí),就需要使用環(huán)境變量,環(huán)境變量正是為解決這個(gè)問(wèn)題而設(shè)計(jì)的。
  回到主面板,在“小叮當(dāng)”操作中,點(diǎn)擊環(huán)境變量,創(chuàng)建如下鍵值對(duì):
  讀者可以從和風(fēng)天氣獲得該密鑰,為驗(yàn)證用途,可以粘貼下面的值:
   "HEWEATHER_URL": "https://free-api.heweather.com/v5",
        "HEWEATHER_KEY": "182f1b6826d94c6285a489d2414f3ad0"
  保存后,回到天氣對(duì)話腳本的“對(duì)話編輯窗口”,在函數(shù)中,使用下面的腳本:
/**
 * Plugin
 */

var WForewast = function (apiKey) {
    if (!apiKey) throw new Error('Invalid token, get it from http://www.heweather.com/my/service');
    this.key = apiKey;
}


WForewast.prototype.getWeatherByCity = function (city) {
    return new Promise((resolve, reject)=>{
        let url = config["HEWEATHER_URL"] + "/weather?city=" + encodeURIComponent(city) + "&key=" + this.key
        http
            .get(url)
            .then((res)=>{
                resolve(res.data.HeWeather5[0].suggestion);
            })
            .catch(function (err) {
                if (err) return reject(err);
            });
    })
}

const wf = new WForewast(config["HEWEATHER_KEY"]);


exports.getWeatherByCity = function(city, cb){
    debug("getWeatherByCity: %s", city);
    wf.getWeatherByCity(city)
        .then((suggestions)=>{
            cb(null, {
                text: suggestions["comf"]["txt"]
            })
        }, (err)=>{
            debug("error:%j", err)
            cb(null, {
                text: `很抱歉,沒(méi)有獲得${city}的天氣信息。`
            })
        })
}



exports.getAirByCity = function(city, cb){
    debug("getAirByCity: %s", city);
    wf.getWeatherByCity(city)
        .then((suggestions)=>{
            cb(null, {
                text: suggestions["air"]["txt"]
            })
        }, (err)=>{
            cb(null, {
                text: `很抱歉,沒(méi)有獲得${city}的空氣信息。`
            })
        })
}


exports.getSportByCity = function(city, cb){
    debug("getSportByCity: %s", city);
    wf.getWeatherByCity(city)
        .then((suggestions)=>{
            cb(null, {
                text: suggestions["sport"]["txt"]
            })
        }, (err)=>{
            cb(null, {
                text: `很抱歉,沒(méi)有獲得${city}的信息。`
            })
        })
}

exports.getDresscodeByCity = function(city, cb){
    debug("getDresscodeByCity: %s", city);
    wf.getWeatherByCity(city)
        .then((suggestions)=>{
            cb(null, {
                text: suggestions["drsg"]["txt"]
            })
        }, (err)=>{
            cb(null, {
                text: `很抱歉,沒(méi)有獲得${city}的信息。`
            })
        })
}
  這次,代碼內(nèi)容和前一版本相比,使用了config對(duì)象,config是一個(gè)包含環(huán)境變量的JSON數(shù)據(jù)。所以,我們更佳利于將來(lái)部署對(duì)話應(yīng)用了。
  支持更多對(duì)話
  回想我們需要的幾種天氣信息,我們根據(jù)需求變更腳本,一個(gè)滿足需求的腳本呈現(xiàn)如下:
/**
 * 一個(gè)能回答天氣的對(duì)話腳本
 * author: Hai Liang Wang<hain@chatopera.com>
 * date:   2018-06-20
 */


// 技能介紹

+ 你知道哪些天氣信息
- 我知道今天的空氣,著裝建議和適不適合運(yùn)動(dòng)

// 天氣

+ 今天 (*) 天氣 [怎么樣]
- {keep} ^getWeatherByCity(<cap1>)

+ [今天] (天氣|氣候) [怎么樣]
- {@__wf_guide_}

+ (*) 今天天氣 [怎么樣]
- {keep} ^getWeatherByCity(<cap1>)

    + (*) 空氣 (*)
    % ^getWeatherByCity(<cap1>)
    - {keep} ^getAirByCity(<p1cap1>)


+ __wf_guide_
- {keep} 添加城市名哦,比如“今天北京天氣怎么樣”或者“北京天氣怎么樣”
- 我需要知道城市名稱,比如“今天北京天氣怎么樣”或者“北京天氣怎么樣”
- 要告訴我城市名,比如“今天北京天氣怎么樣”或者“北京天氣怎么樣”


// 空氣

+ [今天] 空氣 [怎么樣]
- {@__wf_guide_air}

+ (*) 今天空氣 [怎么樣]
- {keep} ^getAirByCity(<cap1>)

+ 今天 (*) 空氣 [怎么樣]
- {keep} ^getAirByCity(<cap1>)

+ __wf_guide_air
- {keep} 添加城市名哦,比如“今天北京空氣怎么樣”或者“北京空氣怎么樣”
- 我需要知道城市名稱,比如“今天北京空氣怎么樣”或者“北京空氣怎么樣”
- 要告訴我城市名,比如“今天北京空氣怎么樣”或者“北京空氣怎么樣”


// 運(yùn)動(dòng)

+ [今天] 適(合|宜)運(yùn)動(dòng)(么|嗎)
- {@__wf_guide_sport}

+ (*) 今天適(合|宜)運(yùn)動(dòng)(么|嗎)
- {keep} ^getSportByCity(<cap1>)

+ 今天 (*) 適(合|宜)運(yùn)動(dòng)(么|嗎)
- {keep} ^getSportByCity(<cap1>)

+ __wf_guide_sport
- {keep} 添加城市名哦,比如“今天北京適合運(yùn)動(dòng)么”或者“北京今天適合運(yùn)動(dòng)么”
- 我需要知道城市名稱,比如“今天北京適合運(yùn)動(dòng)么”或者“北京今天適合運(yùn)動(dòng)么”
- 要告訴我城市名,比如“今天北京適合運(yùn)動(dòng)么”或者“北京今天適合運(yùn)動(dòng)么”


// 衣著

+ [今天] 適(合|宜)穿什么
- {@__wf_guide_dresscode}

+ (*) 今天適(合|宜)穿什么
- {keep} ^getDresscodeByCity(<cap1>)

+ [今天] (*) 適(合|宜)穿什么
- {keep} ^getDresscodeByCity(<cap1>)


+ __wf_guide_dresscode
- {keep} 添加城市名哦,比如“今天北京適合穿什么”或者“北京今天適合穿什么”
- 我需要知道城市名稱,比如“今天北京適合穿什么”或者“北京今天適合穿什么”
- 要告訴我城市名,比如“今天北京適合穿什么”或者“北京今天適合穿什么”
  這也就是我們?cè)谔鞖獠樵儥C(jī)器人Demo中看到的機(jī)器人的腳本,在設(shè)計(jì)過(guò)程中,我們通過(guò)對(duì)話區(qū)域來(lái)測(cè)試機(jī)器人的回復(fù)是否符合預(yù)期,我們通過(guò)邏輯窗口來(lái)查看當(dāng)前機(jī)器人的思維邏輯導(dǎo)圖,當(dāng)前機(jī)器人對(duì)話的狀態(tài)會(huì)被高量,被命中的規(guī)則呈現(xiàn)為路徑。
  另外,在設(shè)計(jì)過(guò)程中,每次保存自動(dòng)為腳本和函數(shù)生成快照,使用快照下拉列表,我們能方便的回退。
  這就是我們追求的體驗(yàn),業(yè)務(wù)人員可以更專注于對(duì)話機(jī)器人的對(duì)話邏輯滿足需求。
  發(fā)布機(jī)器人
  現(xiàn)在,有了可以工作的腳本,我們想發(fā)布一個(gè)版本,這時(shí)回到主面板,點(diǎn)擊“發(fā)布”,填入如下信息,點(diǎn)擊“確認(rèn)”。
  導(dǎo)出機(jī)器人
  最終,我們需要得到一個(gè)“服務(wù)”,它能時(shí)刻被訪問(wèn),以及和AI音箱集成。我們需要將天氣機(jī)器人導(dǎo)出為對(duì)話應(yīng)用,然后部署到智能問(wèn)答引擎。在主面板,點(diǎn)擊版本管理,我們看到操作中有三項(xiàng)。
  • 對(duì)比差異:在多個(gè)版本中比較差異,包括腳本和函數(shù)。
  • 導(dǎo)出:將機(jī)器人導(dǎo)出為對(duì)話應(yīng)用文件。
  • 覆蓋:使用這個(gè)版本覆蓋當(dāng)前機(jī)器人,包括腳本和函數(shù)等。
  什么是智能問(wèn)答引擎
  智能問(wèn)答引擎是多輪對(duì)話的運(yùn)行時(shí),同時(shí)也包含知識(shí)庫(kù)和統(tǒng)計(jì)監(jiān)控等功能。智能問(wèn)答引擎和多輪對(duì)話設(shè)計(jì)器會(huì)同時(shí)發(fā)布。
  如果您想?yún)⒓舆@兩個(gè)產(chǎn)品的發(fā)布會(huì),請(qǐng)報(bào)名Chatopera產(chǎn)品發(fā)布會(huì):追求高度智能化和自動(dòng)化的企業(yè)服務(wù)。
【免責(zé)聲明】本文僅代表作者本人觀點(diǎn),與CTI論壇無(wú)關(guān)。CTI論壇對(duì)文中陳述、觀點(diǎn)判斷保持中立,不對(duì)所包含內(nèi)容的準(zhǔn)確性、可靠性或完整性提供任何明示或暗示的保證。請(qǐng)讀者僅作參考,并請(qǐng)自行承擔(dān)全部責(zé)任。

專題

宜川县| 株洲县| 前郭尔| 垦利县| 酒泉市| 淮南市| 齐河县| 天柱县| 泸定县| 静安区| 军事| 泗洪县| 和田县| 临高县| 大宁县| 桦南县| 庆城县| 元谋县| 南汇区| 长治市| 明水县| 连云港市| 诸城市| 始兴县| 剑河县| 桂平市| 内江市| 会宁县| 阿克苏市| 岱山县| 西乡县| 金门县| 金山区| 台中市| 蒙城县| 新乡县| 金湖县| 历史| 凤凰县| 新绛县| 普格县|