丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
人工智能 正文
發(fā)私信給clickstone
發(fā)送

1

從谷歌收購(gòu)的api.ai,來(lái)看構(gòu)建簡(jiǎn)單場(chǎng)景chatbot的方法

本文作者: clickstone 2016-09-26 09:48
導(dǎo)語(yǔ):你想要自己創(chuàng)造一個(gè)chatbot,來(lái)看看這篇文章。

雷鋒按:本文作者張俊,文章主要介紹了1)谷歌收購(gòu)的api.ai的發(fā)展歷史;2)構(gòu)建簡(jiǎn)單chatbot的一般原理。

chatbot無(wú)疑是當(dāng)前非?;鸬囊粋€(gè)研究領(lǐng)域和產(chǎn)品方向,簡(jiǎn)單地可以分為兩類(lèi),開(kāi)放域bot和封閉域bot,開(kāi)放域bot傾向于解決所有的事情,而封閉域bot傾向于解決某一個(gè)細(xì)分領(lǐng)域中的事情,旨在用AI技術(shù)提高效率,提高生產(chǎn)力?,F(xiàn)階段的開(kāi)放域bot我個(gè)人感覺(jué)更像是多個(gè)常用封閉域bot的疊加,當(dāng)用戶(hù)發(fā)起一個(gè)請(qǐng)求,系統(tǒng)會(huì)判斷出屬于哪個(gè)細(xì)分領(lǐng)域,然后轉(zhuǎn)到相應(yīng)的程序中去執(zhí)行并給出反饋,順著這個(gè)邏輯來(lái)看,研究簡(jiǎn)單場(chǎng)景下的chatbot是個(gè)重要的基礎(chǔ)工作,這類(lèi)研究或者產(chǎn)品的質(zhì)量直接決定了復(fù)雜場(chǎng)景或者開(kāi)放域bot的質(zhì)量。當(dāng)然逗樂(lè)型的bot并不屬于本文討論的范圍。

從谷歌收購(gòu)的api.ai,來(lái)看構(gòu)建簡(jiǎn)單場(chǎng)景chatbot的方法
圖片來(lái)自paper - The Dialog State Tracking Challenge Series- A Review

chatbot是場(chǎng)交互革命,也是一個(gè)多技術(shù)融合的平臺(tái)。上圖給出了構(gòu)建一個(gè)chatbot需要具備的組件,簡(jiǎn)單地說(shuō)chatbot = NLU(Natural Language Understanding) + NLG(Natural Language Generation)。(本文只關(guān)注NLP相關(guān)的技術(shù),對(duì)語(yǔ)音識(shí)別并無(wú)討論)

對(duì)于封閉域的chatbot,NLU的工作就是DST(Dialog State Tracker),用戶(hù)給出輸入之后,系統(tǒng)可以給出下面的形式作為state:

Act(Slot=Value)

Act表示用戶(hù)行為的類(lèi)型,比如請(qǐng)求、查詢(xún)、打招呼等等;Slot表示用戶(hù)輸入中包含的某種Act下的Entity,比如查詢(xún)酒店的位置、價(jià)格這些實(shí)體;Value是指Slot中Entity對(duì)應(yīng)的值,比如位置在北邊,價(jià)格在500-800之間等等。每一句話(huà)中可能包括多個(gè)Act-Slot-Value對(duì),chatbot需要做的事情就是準(zhǔn)確地識(shí)別出Act,并且抽取出相應(yīng)的Slot和Value。

緊接著是NLG的部分,前幾天在PaperWeekly第二期中分享了三篇paper,其中兩篇正是研究基于DST的NLG問(wèn)題。

本文首先從api.ai這家企業(yè)提供的服務(wù)說(shuō)起,通過(guò)研究其提供的封閉域bot構(gòu)建技術(shù),來(lái)提煉構(gòu)建簡(jiǎn)單場(chǎng)景chatbot的一般方法,為構(gòu)建復(fù)雜場(chǎng)景或者找出現(xiàn)有chatbot存在的技術(shù)問(wèn)題和面臨的技術(shù)難點(diǎn)打下基礎(chǔ)。

api.ai


api.ai公司介紹

Api.ai provides developers and companies with the advanced tools they need to build conversational user interfaces for apps and hardware devices.

這家公司是一家典型的B2D公司,提供了一些工具幫助開(kāi)發(fā)者輕松地開(kāi)發(fā)一款bot,并且可以輕松地發(fā)布到各種message平臺(tái)上。商業(yè)模式也非常簡(jiǎn)單,免費(fèi)用戶(hù)有一定次數(shù)的調(diào)用權(quán)限,需要大量調(diào)用的話(huà),則付費(fèi)購(gòu)買(mǎi),不同的權(quán)限有不同的價(jià)格,該公司也提供高級(jí)定制化服務(wù)。

api.ai公司成立于2010年(數(shù)據(jù)來(lái)自CrunchBase),其早期業(yè)務(wù)不清楚,但可以從提供的服務(wù)中推斷出早期攢了大量的用戶(hù)數(shù)據(jù),而且涉及的領(lǐng)域非常多,比如:

從谷歌收購(gòu)的api.ai,來(lái)看構(gòu)建簡(jiǎn)單場(chǎng)景chatbot的方法

每個(gè)領(lǐng)域都有一個(gè)知識(shí)庫(kù),如果你要開(kāi)發(fā)某個(gè)常用領(lǐng)域內(nèi)的chatbot,那么這個(gè)知識(shí)庫(kù)將會(huì)非常有用。

重要概念和工作原理

重要概念

1、Agents。這個(gè)是一個(gè)對(duì)外接口,與其他應(yīng)用程序或你的app進(jìn)行整合的部分。如下圖:

從谷歌收購(gòu)的api.ai,來(lái)看構(gòu)建簡(jiǎn)單場(chǎng)景chatbot的方法

2、Entities。這里的實(shí)體和引言中提到的Slot類(lèi)似,是指某個(gè)特定領(lǐng)域內(nèi)的實(shí)體,是一類(lèi)東西的抽象概括,比如HotelName這一實(shí)體,對(duì)應(yīng)著很多的酒店名字,凱賓斯基、如家等等。有Entity,就一定有value,chatbot中重要的一步正是從user input中抽取出對(duì)應(yīng)預(yù)先設(shè)定好entity的value,是一個(gè)典型的Named Entity Recognition任務(wù)。

這里經(jīng)典的NER任務(wù)是識(shí)別出user input中的person、time、place等等幾個(gè)基本元素,api.ai將這些常見(jiàn)的entity定義為system級(jí)的,即默認(rèn)提供了訓(xùn)練好的識(shí)別器,當(dāng)然不僅僅限于這幾類(lèi)基本的;而特定領(lǐng)域知識(shí)庫(kù)的重要作用也正是在于識(shí)別該領(lǐng)域內(nèi)的entity。除了system level的NER之外,需要developer自定義一些entity,比如菜名,而且要給定具體的菜名和相似的表達(dá)作為samples進(jìn)行訓(xùn)練。

3、Intents。這個(gè)相當(dāng)于是從user input到chatbot執(zhí)行某個(gè)action之間的一個(gè)映射關(guān)系,用戶(hù)輸入一句話(huà)之后,chatbot就可以理解其意圖,是在打招呼,還是查詢(xún),還是做些別的事情。這部分api.ai提供了訓(xùn)練器,但是需要developer定義一些標(biāo)注好的examples,標(biāo)注的形式如下:

從谷歌收購(gòu)的api.ai,來(lái)看構(gòu)建簡(jiǎn)單場(chǎng)景chatbot的方法

這里用戶(hù)輸入是book a ticket to Los Angeles on Monday,所謂標(biāo)注包括兩個(gè)level,一個(gè)是entity標(biāo)注,一個(gè)是intent標(biāo)注,前一個(gè)是為了訓(xùn)練NER工具,后一個(gè)是為了識(shí)別intent。這里因?yàn)長(zhǎng)A是地名,Monday是時(shí)間,所以都會(huì)被api.ai的系統(tǒng)自動(dòng)標(biāo)注出來(lái)。

4、Actions。這個(gè)是由intents進(jìn)行trigger的,actions就和引言中的Act類(lèi)似,是一個(gè)具體的動(dòng)作,比如說(shuō)查詢(xún),但執(zhí)行動(dòng)作的時(shí)候一般都要帶上具體的參數(shù)value,用戶(hù)輸入:“三里屯最近的阿迪達(dá)斯店在什么位置?”,chatbot首先會(huì)提取出place->三里屯,query->阿迪達(dá)斯店,然后轉(zhuǎn)換為json丟給后臺(tái)的查詢(xún)服務(wù),查詢(xún)到結(jié)果后給出答案。這里的value抽取其實(shí)就是第二個(gè)概念提到的entity value。

5、Contexts。上下文是一個(gè)非常重要但卻解決不是很好的點(diǎn),api.ai提供的方式是自定義一些context condition,當(dāng)condition滿(mǎn)足時(shí),自動(dòng)trigger出context關(guān)聯(lián)內(nèi)容template,然后filling slots,生成response。

工作原理

以RSarXiv chatbot為例,簡(jiǎn)單介紹下工作原理。(注:RSarXiv是我之前寫(xiě)的一個(gè)arxiv paper推薦系統(tǒng))

step 1 自定義Entity,這里我定義了兩個(gè)entities,一個(gè)是keywords和subject。keywords是為search功能提供value,而subject是為update new papers功能提供value。

從谷歌收購(gòu)的api.ai,來(lái)看構(gòu)建簡(jiǎn)單場(chǎng)景chatbot的方法

定義好subject entity之后,我給出了幾個(gè)examples,同時(shí)也包括其synonyms,keywords entity類(lèi)似。

step 2 自定義Intents,這里我定義了兩個(gè)Intents,分別是update和search。下圖是update的examples,是我自定義的幾個(gè)例子。api.ai會(huì)根據(jù)我定義好的entity進(jìn)行自動(dòng)標(biāo)注,比如cs.CL,today是系統(tǒng)默認(rèn)的entity所以也進(jìn)行了自動(dòng)標(biāo)注。自動(dòng)標(biāo)注是為了后臺(tái)的機(jī)器學(xué)習(xí)算法對(duì)標(biāo)注好的examples進(jìn)行學(xué)習(xí),以提高chatbot的NLU準(zhǔn)確率。

從谷歌收購(gòu)的api.ai,來(lái)看構(gòu)建簡(jiǎn)單場(chǎng)景chatbot的方法

接下來(lái),我需要定義下Actions,如下圖:

從谷歌收購(gòu)的api.ai,來(lái)看構(gòu)建簡(jiǎn)單場(chǎng)景chatbot的方法

Action被稱(chēng)為update,必須包含的參數(shù)是subject,也就是我們上面講到的一個(gè)entity,date參數(shù)并不是必須的。所以,這里如果用戶(hù)的input被識(shí)別出是update intents的話(huà),就必須包括subject參數(shù),否則chatbot會(huì)trigger一個(gè)response,類(lèi)似“請(qǐng)用戶(hù)輸入subject”這樣的話(huà)。

step 3 簡(jiǎn)單測(cè)試,在界面的右側(cè)有一個(gè)console,用來(lái)測(cè)試當(dāng)前chatbot的效果,我輸入update cs.CL,得到下面的效果:

從谷歌收購(gòu)的api.ai,來(lái)看構(gòu)建簡(jiǎn)單場(chǎng)景chatbot的方法

chatbot識(shí)別出Intent是Update,Action是update,Parameter是date和subject,并且subject的值是cs.CL,下面的Show JSON是api.ai為developer生成的,用來(lái)與developer自己的web service進(jìn)行數(shù)據(jù)交換。

step 4 訓(xùn)練。訓(xùn)練包括兩個(gè)部分,一是訓(xùn)練NER,二是訓(xùn)練Intent Classification。訓(xùn)練器是api.ai提供的,但是標(biāo)注數(shù)據(jù)是developer自己提供的,當(dāng)然訓(xùn)練數(shù)據(jù)越多,標(biāo)注越準(zhǔn),分類(lèi)器的準(zhǔn)確率就越高,chatbot的NLU準(zhǔn)確率越高。至于訓(xùn)練方法,docs中沒(méi)有細(xì)說(shuō),我簡(jiǎn)單猜測(cè)一下,NER可以當(dāng)做Sequence Labeling任務(wù),和Intent Recognition類(lèi)似,都可以看作是多分類(lèi)問(wèn)題,不管是傳統(tǒng)的分類(lèi)方法還是當(dāng)下流行的deep learning方法都能得到不錯(cuò)的準(zhǔn)確率。隨著user logs的增多,訓(xùn)練數(shù)據(jù)會(huì)越來(lái)越多,chatbot通過(guò)學(xué)習(xí)就會(huì)變得越來(lái)越“聰明”。但這里有個(gè)問(wèn)題,training data越多,需要標(biāo)注或者修改標(biāo)注的數(shù)據(jù)就會(huì)越多,也是一個(gè)麻煩事兒。

step 5 整合、發(fā)布。api.ai支持的平臺(tái)非常多,包括當(dāng)下流行的message平臺(tái),還有各種操作系統(tǒng)平臺(tái)。在message平臺(tái)上提供了一鍵整合的功能,在操作系統(tǒng)上提供了SDK。這里我用了slack平臺(tái),api.ai打通了和slack的接口,也提供了webhook,連接了我之前寫(xiě)好的web service,只需要按照它給定的消息接口進(jìn)行定義即可。

demo

目前RSarXiv只提供兩個(gè)簡(jiǎn)單的功能,一個(gè)是update今天最新的arxiv paper,你可以通過(guò)show me new papers in cs.CL等類(lèi)似的話(huà)來(lái)獲取cs.CL這個(gè)領(lǐng)域中最新的paper;一個(gè)是search功能,你可以通過(guò)search LSTM等類(lèi)似的話(huà)來(lái)獲取包括LSTM這個(gè)關(guān)鍵詞的paper。由于是一個(gè)測(cè)試用的demo,就沒(méi)做什么復(fù)雜的功能。

從谷歌收購(gòu)的api.ai,來(lái)看構(gòu)建簡(jiǎn)單場(chǎng)景chatbot的方法

大家如果感興趣的話(huà),可以留言給我或者發(fā)郵件給我(mcgrady150318@gmail.com),我邀請(qǐng)大家到這個(gè)slack team中。

簡(jiǎn)單場(chǎng)景chatbot構(gòu)建方法

介紹了下api.ai提供的服務(wù),下面簡(jiǎn)單地提煉一下。

chatbot = NLU + NLG

api.ai解決的重點(diǎn)問(wèn)題是NLU的問(wèn)題,NLU也是Dialogue State Tracker(DST)的核心和基礎(chǔ),而DST是chatbot的核心。這里的NLU包括兩個(gè)問(wèn)題:

1、從user inputs中識(shí)別出user intent和對(duì)應(yīng)的action。

2、從user inputs中抽取出預(yù)先設(shè)定好的entity value,作為action的parameter。

NLG在api.ai這里基本上通過(guò)developer在Intent中設(shè)定response,當(dāng)識(shí)別出是哪個(gè)intent之后,response自然就有了,最多空一些slot,用結(jié)果進(jìn)行填充。如果developer選擇了webhook,即需要從自定義的web service中給定response。如下圖:

從谷歌收購(gòu)的api.ai,來(lái)看構(gòu)建簡(jiǎn)單場(chǎng)景chatbot的方法

跑了一個(gè)簡(jiǎn)單場(chǎng)景的chatbot demo之后,簡(jiǎn)單歸納下構(gòu)建方法:

1、從特定任務(wù)中歸納出Intents、Actions、Entities。

2、分別編寫(xiě)Intents、Entities的examples,兩類(lèi)examples是做DST的基礎(chǔ),用來(lái)訓(xùn)練chatbot準(zhǔn)確地識(shí)別user intents和entity parameters,至于算法,自己寫(xiě)也可以,用api.ai也可以。

3、做好DST之后,chatbot就知道用戶(hù)的意圖和相應(yīng)的參數(shù),丟給后臺(tái)的web service去執(zhí)行,并得到執(zhí)行的結(jié)果,然后填充預(yù)先定義好的templates,生成response,返回給用戶(hù)。

結(jié)束語(yǔ)

簡(jiǎn)單場(chǎng)景的chatbot關(guān)鍵之處在于做好DST,有一個(gè)叫Dialogue State Tracking Challenge的比賽正式為了解決這個(gè)問(wèn)題而舉辦的。我們說(shuō),封閉域的chatbot涉及兩個(gè)方面,一是NLU,一是NLG,前者通過(guò)大量的examples來(lái)學(xué)習(xí)一個(gè)分類(lèi)器和抽取器,得到Dialogue State,而后者根據(jù)Dialogue State,生成合適的response。

NLU不是一個(gè)簡(jiǎn)單的事情,尤其是標(biāo)注大量的examples不是那么容易;NLG同樣也不是一個(gè)好解決的問(wèn)題,預(yù)先定義的template會(huì)讓chatbot受限制于template的多少,手工痕跡太重,需要一種更牛的解決方案來(lái)代替。(其實(shí)挺多paper都在做這件事情,PaperWeekly也分享過(guò)幾篇相關(guān)的paper,data driven的NLG方案同樣需要大量的examples做訓(xùn)練。)

Context是個(gè)挺難的事情,現(xiàn)有的、成熟的解決方案仍是手工來(lái)定義條件,然后根據(jù)條件來(lái)trigger。我在想,能否構(gòu)建一個(gè)動(dòng)態(tài)的DST,可以是一張動(dòng)態(tài)hash table,也可以是一個(gè)動(dòng)態(tài)graph,記錄著某一個(gè)user方方面面的狀態(tài),而不僅僅是某一輪對(duì)話(huà)中抽取出的信息,而是多輪對(duì)話(huà)中的信息,不僅在intent識(shí)別中可以用到context,在生成response時(shí)也可以用到,多輪對(duì)話(huà)和個(gè)性化對(duì)話(huà)都將不是什么問(wèn)題了?;蛘?,用現(xiàn)在流行的表示學(xué)習(xí)思維來(lái)想這個(gè)問(wèn)題的話(huà),也許context可以是一個(gè)分布式表示,user profile也是一個(gè)表示,NLG時(shí)以context distribution為condition來(lái)做generatation。

本文介紹了構(gòu)建簡(jiǎn)單場(chǎng)景下chatbot的一般方法,用api.ai確實(shí)很容易做一個(gè)chatbot,而對(duì)于復(fù)雜場(chǎng)景,我覺(jué)得用api.ai來(lái)開(kāi)發(fā)也沒(méi)有太大問(wèn)題,最費(fèi)時(shí)的可能是構(gòu)建context trigger。api.ai因?yàn)槭敲嫦騞eveloper的,所以對(duì)于普通的用戶(hù)并不適合,但對(duì)于有一定經(jīng)驗(yàn)的developer來(lái)說(shuō),使用起來(lái)就非常簡(jiǎn)單,提供的web界面也很好用,如果說(shuō)chatbot是一個(gè)平臺(tái)的話(huà),那么api.ai正像是一個(gè)開(kāi)發(fā)工具,提高了開(kāi)發(fā)chatbot的效率,雖然NLG和context這兩個(gè)問(wèn)題可以做的更好,但整體來(lái)說(shuō)降低了開(kāi)發(fā)chatbot的門(mén)檻,是個(gè)很有意義和錢(qián)景的服務(wù)。

雷鋒網(wǎng)注:本文由clickstone授權(quán)雷鋒網(wǎng)發(fā)布,如需轉(zhuǎn)載請(qǐng)聯(lián)系原作者,并注明作者和出處,不得刪減內(nèi)容。

相關(guān)閱讀:

谷歌收購(gòu)語(yǔ)音識(shí)別開(kāi)放平臺(tái) API.ai,或?qū)⑵湔显?Allo 中

雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。

從谷歌收購(gòu)的api.ai,來(lái)看構(gòu)建簡(jiǎn)單場(chǎng)景chatbot的方法

分享:
相關(guān)文章

知情人士

個(gè)性化推薦社區(qū) ResysChina 發(fā)起人,微信公眾號(hào)【ResysChina】
當(dāng)月熱門(mén)文章
最新文章
請(qǐng)?zhí)顚?xiě)申請(qǐng)人資料
姓名
電話(huà)
郵箱
微信號(hào)
作品鏈接
個(gè)人簡(jiǎn)介
為了您的賬戶(hù)安全,請(qǐng)驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請(qǐng)驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說(shuō)