聶沖 陳波 鄭媛
摘? 要: 為了幫助大學(xué)新生更快適應(yīng)校園生活,解決新生對(duì)校園信息了解的及時(shí)性,真實(shí)性等問題,本文設(shè)計(jì)實(shí)現(xiàn)了一個(gè)大學(xué)新生小助手Android APP。介紹了基于安卓平臺(tái)的APP開發(fā)和與用戶深度交互技術(shù),以及結(jié)合百度UNIT平臺(tái)獲取用戶意圖,實(shí)現(xiàn)各類常見問題的解答。該Android APP能夠?qū)崿F(xiàn)自主學(xué)習(xí),準(zhǔn)確地理解用戶的意圖并給出準(zhǔn)確的回復(fù)。
關(guān)鍵詞: Android;百度UNIT;智能聊天
【Abstract】: In order to help freshmen adapt to campus life faster and solve the problems of timeliness and authenticity of freshmen's understanding of campus information, this paper designs and implements Android APP, a freshman assistant. It introduces the development of APP based on Android platform and the technology of deep interaction with users, as well as the acquisition of user intentions with Baidu UNIT platform. Realize the answers to all kinds of common questions. The Android APP can achieve autonomous learning, accurately understand the user's intentions and provide accurate responses.
【Key words】: Android; Baidu UNIT; Intelligent chat
0? 引言
每年新生入學(xué)季,各大校園里都充滿了前來報(bào)到的新生。新生入學(xué)時(shí)最關(guān)心的事情是諸如宿舍、圖書館怎么走?寄到學(xué)校的快遞在什么地方拿?等信息咨詢問題。如何做好新生的服務(wù)工作,使新生能夠快速地了解和融入新環(huán)境,成為各高校迫切需要解決的問題[1]。
為新同學(xué)提供信息咨詢服務(wù)的傳統(tǒng)方式主要有兩種:一是學(xué)院安排學(xué)長(zhǎng)學(xué)姐為新生解答相關(guān)的生活咨詢問題;二是學(xué)院在微信公眾號(hào)上推送一些生活指南的文章。不難發(fā)現(xiàn),這些方式往往是針對(duì)一些常見的問題做出解答,很難滿足學(xué)生的個(gè)性化需求。
近年來,信息技術(shù)高速發(fā)展,移動(dòng)信息產(chǎn)品正在影響和改變著我們的生活。學(xué)生利用手機(jī)APP來實(shí)現(xiàn)校園生活中的一些操作更加便捷[2],為00后新同學(xué)提供入學(xué)助手APP成為解決問題的一種途徑。例如,“清華入學(xué)助手”小程序[3],其包含了入學(xué)住宿、校園導(dǎo)覽、校史典故三大模塊。不過,目前該軟件缺乏與用戶深度交互的能力,僅能查看有限的信息,對(duì)于學(xué)生個(gè)性化查詢需求的理解和支持功能不足。
為此,本文設(shè)計(jì)開發(fā)的大學(xué)新生小助手Android APP著力提高APP與用戶深度交互的能力,以滿足學(xué)生的個(gè)性化需求。所謂深度交互能力是指APP能夠通過與用戶的多輪對(duì)話確定用戶意圖,而不僅僅是根據(jù)一次問答確定搜索結(jié)果。
1? 相關(guān)工作及本文思路
1.1? 聊天機(jī)器人研究現(xiàn)狀
近幾年,我國(guó)移動(dòng)互聯(lián)網(wǎng)飛速發(fā)展,基于Android平臺(tái)的應(yīng)用軟件也相繼被推出,影響著人類的日常生活,最為顯著的就是“互聯(lián)網(wǎng)+”與智能聊天機(jī)器人的結(jié)合,為手機(jī)用戶提供了全新的體驗(yàn)[4]。
本文實(shí)現(xiàn)的實(shí)際上是一個(gè)基于聊天機(jī)器人的信息查詢類APP。聊天機(jī)器人(Chatterbot)是經(jīng)由對(duì)話或文字與用戶進(jìn)行交談的計(jì)算機(jī)程序[5]。聊天機(jī)器人對(duì)于知道答案的問題,往往回答的比較準(zhǔn)確,而對(duì)于不知道的問題,則通過猜測(cè),轉(zhuǎn)移話題,或回答不知道的方式給出答案[6]。
目前,大多數(shù)聊天機(jī)器人只會(huì)擷取輸入的關(guān)鍵字,再?gòu)臄?shù)據(jù)庫中找尋最合適的應(yīng)答語句。面向任務(wù)型的聊天機(jī)器人可以解答用戶的某個(gè)問題(如:今天天氣怎么樣、我的快遞到哪兒了)、執(zhí)行用戶指令(如:去給我把咖啡端過來),甚至通過一系列交互引導(dǎo)用戶達(dá)成某項(xiàng)需求(如:通過注冊(cè)-選座-下單完成訂票)[7]。準(zhǔn)確地進(jìn)行語義分析和上下文相關(guān)文法分析,理解自然語言一直是聊天機(jī)器人需要解決的難題[8]。
1.2? 相關(guān)開發(fā)平臺(tái)的對(duì)比
目前市面上聊天機(jī)器人開發(fā)平臺(tái)中使用較為廣泛的有圖靈機(jī)器人[9]。利用該平臺(tái),開發(fā)者可快速為自己的產(chǎn)品接入一款具備個(gè)性化身份屬性特征、滿足不同場(chǎng)景的聊天機(jī)器人,實(shí)現(xiàn)產(chǎn)品的對(duì)話式交互。
目前,圖靈機(jī)器人還缺乏與用戶深度交互的能力,且對(duì)于問題的格式有比較嚴(yán)格的要求。用戶向聊天機(jī)器人提出的問題中可能不包含得出答案的所有關(guān)鍵信息,這時(shí)聊天機(jī)器人還要向用戶詢問這些關(guān)鍵信息(比如在訂火車票場(chǎng)景中,要使聊天機(jī)器人根據(jù)用戶的問題為用戶訂到火車票,需要出發(fā)時(shí)間,出發(fā)地點(diǎn)和目的地三個(gè)關(guān)鍵信息。用戶的問題可能只是“幫我訂張明天的火車票”,這時(shí)具備深度交互能力的聊天機(jī)器人還要追問用戶出發(fā)時(shí)間和目的地),這樣的問題一般的聊天機(jī)器人就無法回答了。
百度理解與交互技術(shù)平臺(tái)UNIT則能實(shí)現(xiàn)多輪對(duì)話功能。想要實(shí)現(xiàn)多輪對(duì)話,每輪對(duì)話都需將上輪對(duì)話的一部分信息和本輪對(duì)話封裝在一起提交給UNIT,UNIT根據(jù)這些信息分析出是否含有得出答案的所有關(guān)鍵信息。如果有,則返回答案,如果沒有則繼續(xù)詢問缺失的關(guān)鍵信息,一直到得出所有關(guān)鍵信息并給出答案為止。
1.3? 本文思路
聊天機(jī)器人的基礎(chǔ)功能是實(shí)現(xiàn)人機(jī)對(duì)話智能化,通過“訓(xùn)練”,實(shí)現(xiàn)機(jī)器對(duì)個(gè)人服務(wù)不斷優(yōu)化[10]。
本文將百度UNIT平臺(tái)接入Android APP中,在APP中編寫界面并實(shí)現(xiàn)消息的發(fā)送和接收,UNIT平臺(tái)基于用戶輸入的文本內(nèi)容,返回BOT(一個(gè)BOT對(duì)應(yīng)一個(gè)場(chǎng)景下獨(dú)立完整的對(duì)話系統(tǒng))理解與應(yīng)答的信息。
通過API接入的方式,導(dǎo)入大量的語料進(jìn)行訓(xùn)練,并且還可以不斷自我訓(xùn)練,對(duì)用戶意圖的判斷會(huì)越來越準(zhǔn),最終準(zhǔn)確理解用戶意圖。
2? 開發(fā)環(huán)境搭建
2.1? Android Studio安裝與環(huán)境配置
首先在谷歌官網(wǎng)上下載Android Studio的安裝包并完成安裝。Android Studio作為安卓應(yīng)用的開發(fā)環(huán)境,仍依賴于JDK、SDK和NDK。
2.2? APP的通訊機(jī)制
安卓APP為開發(fā)者提供了訪問網(wǎng)絡(luò)的接口,當(dāng)用戶需要向服務(wù)器發(fā)送數(shù)據(jù)時(shí),一般將數(shù)據(jù)封裝成JSON數(shù)據(jù)包在網(wǎng)絡(luò)上傳輸。當(dāng)用戶向APP發(fā)送消息時(shí),實(shí)際上這條消息首先在本地封裝成JSON數(shù)據(jù)包,再使用HttpUrlConnection發(fā)送到服務(wù)器端,在服務(wù)器解析完JSON數(shù)據(jù)包時(shí),再發(fā)送JSON格式的響應(yīng)結(jié)果給本地APP,APP解析出有效信息后顯示在聊天界面上。
2.3? 軟件開發(fā)環(huán)境
(1)硬件環(huán)境
Intel? CoreTM i5 CPU 4.4GHz,Windows10家庭版64位,8G內(nèi)存,250GB硬盤。
(2)軟件環(huán)境
裝有Android Studio的Windows系統(tǒng)。
(3)開發(fā)語言
JAVA開發(fā)工具JDK1.8。
3? 軟件架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)
3.1? 軟件架構(gòu)設(shè)計(jì)
基于安卓平臺(tái)開發(fā)的新生小助手APP軟件架構(gòu)如圖1所示。
軟件功能主要由地點(diǎn)查詢、生活服務(wù)和其他服務(wù)三個(gè)功能組成,具體包括:
(1)地點(diǎn)查詢:本文開發(fā)的新生小助手以南京
師范大學(xué)的地點(diǎn)為數(shù)據(jù)來源,能夠回回答學(xué)校的絕大多數(shù)地點(diǎn)查詢,例如圖書館、超市和教室,還能夠根據(jù)學(xué)生的年級(jí)和專業(yè)回答學(xué)生所住的宿舍。
(2)生活服務(wù):生活服務(wù)最有用的功能就是快遞點(diǎn)查詢,目前大學(xué)生更樂意在網(wǎng)上購(gòu)物,每個(gè)大學(xué)都會(huì)設(shè)置好幾個(gè)快遞點(diǎn),新生小助手會(huì)根據(jù)學(xué)生當(dāng)前地點(diǎn)快速給出取快遞路線,幫助學(xué)生快速拿到快遞。
(3)其他服務(wù):主要是與用戶進(jìn)行日常聊天等,是用戶休閑娛樂的助手。
3.2? 軟件實(shí)現(xiàn)
3.2.1 聊天界面制作
在android studio中新建一個(gè)工程之后新建如下三個(gè)文件。
(1)聊天界面的布局文件:chat.XML,用于顯示內(nèi)容。
(2)layout_title.XML:聊天界面的標(biāo)題欄布局。
(3)Activity_chat.Java:業(yè)務(wù)邏輯代碼。
選擇兩張圖片作為發(fā)送和接收消息的背景圖。在布局文件的主界面中加入一個(gè)RecyclerView用于顯示聊天的消息內(nèi)容,在左下方放置一個(gè)EditText用于輸入消息,右下方放置一個(gè)按鈕Button用于發(fā)送消息。定義Msg類用于封裝消息內(nèi)容和消息類型(發(fā)送的消息和接收的消息),這里讓發(fā)送的消息居右對(duì)齊,接收的消息據(jù)左對(duì)齊。
3.2.2? 消息回復(fù)機(jī)制
根據(jù)UNIT的API接入文檔可知,用戶與服務(wù)器之間的消息交互類型分為文本、語音等。當(dāng)用戶向APP發(fā)送消息時(shí),其消息內(nèi)容與一些參數(shù)封裝在一起,并以JSON格式傳送到搭建好的BOT中,在處理用戶消息時(shí),需要先解析JSON信息,獲取需要的信息內(nèi)容。不同類型的JSON結(jié)構(gòu)都包含talkUrl、bot_session、log_id、bot_id、accessToken、query6個(gè)核心字段。
3.2.3? 用戶意圖獲取實(shí)現(xiàn)
用戶意圖包含問答意圖與對(duì)話意圖,本模塊既可以實(shí)現(xiàn)簡(jiǎn)單的問答意圖,也可以解析用戶的對(duì)話意圖。機(jī)器人在收到用戶以自然語言的形式發(fā)送的語句時(shí),機(jī)器人需要對(duì)這些自然語言進(jìn)行理解。這種理解包括對(duì)用戶的意圖識(shí)別、情感識(shí)別和回復(fù)確認(rèn)等人工智能識(shí)別技術(shù)[11]。
(1)問答意圖獲取
可以直接給出答案的問題(例如查詢圖書館在哪兒)屬于問答意圖,這時(shí)只需要設(shè)置回復(fù)就好。我們?cè)诰W(wǎng)絡(luò)上搜集新生入學(xué)時(shí)遇到的一些常見問題。搜集之后,對(duì)這些問題進(jìn)行分類匯總并整理出答案后,在UNIT平臺(tái)新建好問答意圖和并設(shè)置相應(yīng)的回復(fù)。
(2)對(duì)話意圖獲取
聊天機(jī)器人要與用戶多輪對(duì)話才能確定回復(fù)的問題屬于對(duì)話意圖。例如,用戶在查詢宿舍位置時(shí),在得到用戶的年級(jí)和專業(yè)后才能給出答案。要獲取用戶的對(duì)話意圖,APP需要通過用戶的用戶模型數(shù)據(jù),判斷查詢?cè)~的意圖特征值,根據(jù)查詢?cè)~的意圖特征值和查詢?cè)~,確定搜索結(jié)果并準(zhǔn)確提供相應(yīng)信息。必要時(shí)根據(jù)搜索結(jié)果,還會(huì)主動(dòng)提出問題,根據(jù)答復(fù)信息,以進(jìn)一步確定查詢?cè)~的意圖特征值,根據(jù)進(jìn)一步確定的意圖特征值和查詢?cè)~,確定搜索結(jié)果[12]。
對(duì)話意圖的建立流程如下:新建一個(gè)對(duì)話意圖,名稱設(shè)置為DORMITOEY_QUERY,意圖別名為查詢宿舍。由于不同年級(jí)不同專業(yè)的宿舍位置都不一樣,所以確定宿舍位置要通過用戶回答的信息得到詞槽。這里年級(jí)和專業(yè)就是詞槽。分別配置這兩個(gè)詞槽定義為user_year和user_subject,并設(shè)置相應(yīng)的澄清回應(yīng),比如說用戶的文本里面只包含年級(jí),那么就要設(shè)置澄清話術(shù)為“請(qǐng)問您是哪個(gè)專業(yè)的?”。UNIT根據(jù)用戶回答的詞槽到詞典里面匹配,這里自定義一份學(xué)校所有專業(yè)的詞典,里面添加所有專業(yè)名稱,以及年份的詞典,里面是所有的學(xué)生的年級(jí)。建立完成的對(duì)話意圖如圖2所示。
(3)配置對(duì)話模板
在新建技能完成后,就要給BOT添加訓(xùn)練數(shù)據(jù),首先要配置對(duì)話模板。將“我需要、我要查,查一下”等都抽象為表達(dá)查詢的特征詞。在定義完特征詞和詞槽之后,還需要導(dǎo)入更多的對(duì)話模板,并導(dǎo)入系統(tǒng)。詞槽和特征詞的標(biāo)注如圖3所示。
(4)標(biāo)注對(duì)話樣本
把對(duì)話數(shù)據(jù)導(dǎo)入U(xiǎn)NIT平臺(tái),然后給他們逐條標(biāo)注意圖、詞槽。這部分?jǐn)?shù)據(jù)可以用于后續(xù)的樣本學(xué)習(xí),讓對(duì)話機(jī)器人獲得更好的對(duì)話理解泛化能力。對(duì)話模板的標(biāo)注如圖4所示。
(5)訓(xùn)練模型
在以上工作完成后,就可以訓(xùn)練發(fā)布到沙盒環(huán)境訓(xùn)練模型了,沙盒環(huán)境是UNIT平臺(tái)提供給開發(fā)者驗(yàn)證技能模型效果的環(huán)境,開發(fā)者將模型訓(xùn)練后生效至沙盒環(huán)境,即可和技能對(duì)話,通過對(duì)話可驗(yàn)證沙盒中模型的效果,也可實(shí)現(xiàn)數(shù)據(jù)標(biāo)注。剛創(chuàng)建技能時(shí)沙盒也處在運(yùn)行中,此時(shí)沙盒中的模型是一個(gè)空的模型,還不能用于對(duì)話,需要定義技能,添加訓(xùn)練數(shù)據(jù),訓(xùn)練且生效到沙盒后才能用于對(duì)話。
3.2.4? 問答功能
為了調(diào)用UNIT,必須先注冊(cè)百度賬號(hào),進(jìn)入U(xiǎn)NIT,UNIT提供多種接入方式:API接入、微信公眾號(hào)接入等。本文選擇API接入。
根據(jù)用戶的問題,UNIT在對(duì)話樣本集里面進(jìn)行匹配,當(dāng)達(dá)到預(yù)定的問答匹配度時(shí),它把相應(yīng)的回復(fù)返回給用戶,在本地解析出關(guān)鍵信息之后,顯示在聊天界面上。
3.2.5? 日常閑聊模塊
UNIT除了可以自定義特殊技能外,它還能與讓人類交談,完成日常對(duì)話,。與傳統(tǒng)機(jī)器人不同,UNIT的回答更加幽默和口語化且能與時(shí)代潮流保持一致[13]。例如用戶可以詢問它姓名。聊天對(duì)話的友好性進(jìn)一步提升,更加符合真實(shí)人類對(duì)話的情景。
4? 小助手使用實(shí)例
當(dāng)用戶安裝好APP后,打開APP,即可以使用小助手提供的各種服務(wù),圖5是新生詢問宿舍在哪里。用戶在編輯框中直接輸入想要咨詢的問題,UNIT會(huì)根據(jù)事先導(dǎo)入的對(duì)話模板進(jìn)行識(shí)別,得到用戶的意圖之后進(jìn)行相應(yīng)的回復(fù)。圖6是拿快遞和問路相關(guān)的問答。圖7是閑聊示例。
5? 結(jié)論
已有的新生助手僅僅通過新生的查詢?cè)~來進(jìn)行搜索,搜索過程是單向的,只有用戶向搜索引擎提出問題。用戶在使用時(shí)會(huì)存在很大的障礙,且當(dāng)查詢?cè)~存在歧義時(shí),新生不能一次完成搜索任務(wù),需要重新輸入查詢?cè)~,即對(duì)同樣的查詢?cè)~,不同的學(xué)
生會(huì)有不同的認(rèn)知和偏好,導(dǎo)致搜索結(jié)果沒有針對(duì)性,準(zhǔn)確性也不高。
作為一款新興的軟件,大學(xué)新生小助手Android APP接入百度UNIT平臺(tái),采用了交互式搜索技術(shù),可以提供常見的學(xué)習(xí)和生活信息查詢服務(wù),包括查詢課表,查詢上課教室,校園導(dǎo)航,拿快遞等。幫助新生快速融入新環(huán)境,給新生的日常生活帶來極大的便利。也為學(xué)校節(jié)省了大量人力物力,提升了新生的報(bào)到率。
在高校中,新生的群體是龐大的,也是使用本
APP的主要用戶,僅僅有以上的功能還是不夠的。新生還關(guān)心個(gè)人成績(jī)等。將這些主要信息補(bǔ)充完善之后還可以添加一些其他的生活服務(wù)資訊,比如教學(xué)信息的發(fā)布以及空閑的教室,一些社團(tuán)的活動(dòng)消息,天氣信息等。
參考文獻(xiàn)
陳星. 高校新生迎新網(wǎng)上服務(wù)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 2015.
謝杭, 朱鵬羽, 孟慶賀. 基于安卓平臺(tái)的掌上校園APP的設(shè)計(jì)與開發(fā)[J]. 2016, 19(3): 24-26.
北京搜狗科技發(fā)展有限公司. 清華入學(xué)助手[EB/OL]. http://www.91ud.com/app/27030.html.
周國(guó)華. Android平臺(tái)上的智能聊天機(jī)器人設(shè)計(jì)及應(yīng)用[J]. 計(jì)算機(jī)產(chǎn)品與流通, 2017(7): 35-36.
百度百科. 聊天機(jī)器人[EB/OL]. https://baike.baidu.com/ item/%E8%81%8A%E5%A4%A9%E6%9C%BA%E5%99%A8%E4%BA%BA/1052902?fr=aladdin
智能聊天機(jī)器人的關(guān)鍵技術(shù)研究[D]. 杭州電子科技大學(xué), 2011.
百度UNIT. 如何站在巨人的肩膀上, 將自己的產(chǎn)品賦予AI的能力[EB/OL]. https://www.jianshu.com/p/c5be75ef9420
戴開宇, 張申生, 王淼. 分布式虛擬環(huán)境中的聊天機(jī)器人的研究[J]. 計(jì)算機(jī)工程與應(yīng)用, 2002, (7): 13-16.
北京圖靈機(jī)器人股份有限公司. 圖靈機(jī)器人[EB/OL]. http://www.tuling123.com/
技術(shù)宅. 知心朋友? 聊天機(jī)器人是怎么聊天的[J]. 電腦愛好者, 2016(17): 62-63.
曹祎遐, 何文清. 聊天機(jī)器人 換個(gè)方式聊天[J]. 上海信息化, 2016(10): 16-19
孫國(guó)致, 楊志峰, 周杰龍. 一種交互搜索方法及裝置, CN 102456018 A[P]. 2010.
劉蓉, 陳波. 基于微信公眾平臺(tái)的招生咨詢智能聊天機(jī)器人[J]. 軟件, 2018, 39(06): 49-57.