大学新生小助手Android APP设计与开发

2019-10-08 09:03聂冲陈波郑媛
软件 2019年2期

聂冲 陈波 郑媛

摘  要: 为了帮助大学新生更快适应校园生活,解决新生对校园信息了解的及时性,真实性等问题,本文设计实现了一个大学新生小助手Android APP。介绍了基于安卓平台的APP开发和与用户深度交互技术,以及结合百度UNIT平台获取用户意图,实现各类常见问题的解答。该Android APP能够实现自主学习,准确地理解用户的意图并给出准确的回复。

关键词: 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  引言

每年新生入學季,各大校园里都充满了前来报到的新生。新生入学时最关心的事情是诸如宿舍、图书馆怎么走?寄到学校的快递在什么地方拿?等信息咨询问题。如何做好新生的服务工作,使新生能够快速地了解和融入新环境,成为各高校迫切需要解决的问题[1]。

为新同学提供信息咨询服务的传统方式主要有两种:一是学院安排学长学姐为新生解答相关的生活咨询问题;二是学院在微信公众号上推送一些生活指南的文章。不难发现,这些方式往往是针对一些常见的问题做出解答,很难满足学生的个性化需求。

近年来,信息技术高速发展,移动信息产品正在影响和改变着我们的生活。学生利用手机APP来实现校园生活中的一些操作更加便捷[2],为00后新同学提供入学助手APP成为解决问题的一种途径。例如,“清华入学助手”小程序[3],其包含了入学住宿、校园导览、校史典故三大模块。不过,目前该软件缺乏与用户深度交互的能力,仅能查看有限的信息,对于学生个性化查询需求的理解和支持功能不足。

为此,本文设计开发的大学新生小助手Android APP着力提高APP与用户深度交互的能力,以满足学生的个性化需求。所谓深度交互能力是指APP能够通过与用户的多轮对话确定用户意图,而不仅仅是根据一次问答确定搜索结果。

1  相关工作及本文思路

1.1  聊天机器人研究现状

近几年,我国移动互联网飞速发展,基于Android平台的应用软件也相继被推出,影响着人类的日常生活,最为显著的就是“互联网+”与智能聊天机器人的结合,为手机用户提供了全新的体验[4]。

本文实现的实际上是一个基于聊天机器人的信息查询类APP。聊天机器人(Chatterbot)是经由对话或文字与用户进行交谈的计算机程序[5]。聊天机器人对于知道答案的问题,往往回答的比较准确,而对于不知道的问题,则通过猜测,转移话题,或回答不知道的方式给出答案[6]。

目前,大多数聊天机器人只会撷取输入的关键字,再从数据库中找寻最合适的应答语句。面向任务型的聊天机器人可以解答用户的某个问题(如:今天天气怎么样、我的快递到哪儿了)、执行用户指令(如:去给我把咖啡端过来),甚至通过一系列交互引导用户达成某项需求(如:通过注册-选座-下单完成订票)[7]。准确地进行语义分析和上下文相关文法分析,理解自然语言一直是聊天机器人需要解决的难题[8]。

1.2  相关开发平台的对比

目前市面上聊天机器人开发平台中使用较为广泛的有图灵机器人[9]。利用该平台,开发者可快速为自己的产品接入一款具备个性化身份属性特征、满足不同场景的聊天机器人,实现产品的对话式交互。

目前,图灵机器人还缺乏与用户深度交互的能力,且对于问题的格式有比较严格的要求。用户向聊天机器人提出的问题中可能不包含得出答案的所有关键信息,这时聊天机器人还要向用户询问这些关键信息(比如在订火车票场景中,要使聊天机器人根据用户的问题为用户订到火车票,需要出发时间,出发地点和目的地三个关键信息。用户的问题可能只是“帮我订张明天的火车票”,这时具备深度交互能力的聊天机器人还要追问用户出发时间和目的地),这样的问题一般的聊天机器人就无法回答了。

百度理解与交互技术平台UNIT则能实现多轮对话功能。想要实现多轮对话,每轮对话都需将上轮对话的一部分信息和本轮对话封装在一起提交给UNIT,UNIT根据这些信息分析出是否含有得出答案的所有关键信息。如果有,则返回答案,如果没有则继续询问缺失的关键信息,一直到得出所有关键信息并给出答案为止。

1.3  本文思路

聊天机器人的基础功能是实现人机对话智能化,通过“训练”,实现机器对个人服务不断优化[10]。

本文将百度UNIT平台接入Android APP中,在APP中编写界面并实现消息的发送和接收,UNIT平台基于用户输入的文本内容,返回BOT(一个BOT对应一个场景下独立完整的对话系统)理解与应答的信息。

通过API接入的方式,导入大量的语料进行训练,并且还可以不断自我训练,对用户意图的判断会越来越准,最终准确理解用户意图。

2  开发环境搭建

2.1  Android Studio安装与环境配置

首先在谷歌官网上下载Android Studio的安装包并完成安装。Android Studio作为安卓应用的开发环境,仍依赖于JDK、SDK和NDK。

2.2  APP的通讯机制

安卓APP为开发者提供了访问网络的接口,当用户需要向服务器发送数据时,一般将数据封装成JSON数据包在网络上传输。当用户向APP发送消息时,实际上这条消息首先在本地封装成JSON数据包,再使用HttpUrlConnection发送到服务器端,在服务器解析完JSON数据包时,再发送JSON格式的响应结果给本地APP,APP解析出有效信息后显示在聊天界面上。

2.3  软件开发环境

(1)硬件环境

Intel? CoreTM i5 CPU 4.4GHz,Windows10家庭版64位,8G内存,250GB硬盘。

(2)软件环境

装有Android Studio的Windows系统。

(3)开发语言

JAVA开发工具JDK1.8。

3  软件架构设计与实现

3.1  软件架构设计

基于安卓平台开发的新生小助手APP软件架构如图1所示。

软件功能主要由地点查询、生活服务和其他服务三个功能组成,具体包括:

(1)地点查询:本文开发的新生小助手以南京

师范大学的地点为数据来源,能够回回答学校的绝大多数地点查询,例如图书馆、超市和教室,还能够根据学生的年级和专业回答学生所住的宿舍。

(2)生活服务:生活服务最有用的功能就是快递点查询,目前大学生更乐意在网上购物,每个大学都会设置好几个快递点,新生小助手会根据学生当前地点快速给出取快递路线,帮助学生快速拿到快递。

(3)其他服务:主要是与用户进行日常聊天等,是用户休闲娱乐的助手。

3.2  软件实现

3.2.1 聊天界面制作

在android studio中新建一个工程之后新建如下三个文件。

(1)聊天界面的布局文件:chat.XML,用于显示内容。

(2)layout_title.XML:聊天界面的标题栏布局。

(3)Activity_chat.Java:业务逻辑代码。

选择两张图片作为发送和接收消息的背景图。在布局文件的主界面中加入一个RecyclerView用于显示聊天的消息内容,在左下方放置一个EditText用于输入消息,右下方放置一个按钮Button用于发送消息。定义Msg类用于封装消息内容和消息类型(发送的消息和接收的消息),这里让发送的消息居右对齐,接收的消息据左对齐。

3.2.2  消息回复机制

根据UNIT的API接入文档可知,用户与服务器之间的消息交互类型分为文本、语音等。当用户向APP发送消息时,其消息内容与一些参数封装在一起,并以JSON格式传送到搭建好的BOT中,在处理用户消息时,需要先解析JSON信息,获取需要的信息内容。不同类型的JSON结构都包含talkUrl、bot_session、log_id、bot_id、accessToken、query6个核心字段。

3.2.3  用户意图获取实现

用户意图包含问答意图与对话意图,本模块既可以实现简单的问答意图,也可以解析用户的对话意图。机器人在收到用户以自然语言的形式发送的语句时,机器人需要对这些自然语言进行理解。这种理解包括对用户的意图识别、情感识别和回复确认等人工智能识别技术[11]。

(1)问答意图获取

可以直接给出答案的问题(例如查询图书馆在哪儿)属于问答意图,这时只需要设置回复就好。我们在网络上搜集新生入学时遇到的一些常见问题。搜集之后,对这些问题进行分类汇总并整理出答案后,在UNIT平台新建好问答意图和并设置相应的回复。

(2)对话意图获取

聊天机器人要与用户多轮对话才能确定回复的问题属于对话意图。例如,用户在查询宿舍位置时,在得到用户的年级和专业后才能给出答案。要获取用户的对话意图,APP需要通过用户的用户模型数据,判断查询词的意图特征值,根据查询词的意图特征值和查询词,确定搜索结果并准确提供相应信息。必要时根据搜索结果,还会主动提出问题,根据答复信息,以进一步确定查询词的意图特征值,根据进一步确定的意图特征值和查询词,确定搜索结果[12]。

对话意图的建立流程如下:新建一个对话意图,名称设置为DORMITOEY_QUERY,意图别名为查询宿舍。由于不同年级不同专业的宿舍位置都不一样,所以确定宿舍位置要通过用户回答的信息得到词槽。这里年级和专业就是词槽。分别配置这两个词槽定义为user_year和user_subject,并設置相应的澄清回应,比如说用户的文本里面只包含年级,那么就要设置澄清话术为“请问您是哪个专业的?”。UNIT根据用户回答的词槽到词典里面匹配,这里自定义一份学校所有专业的词典,里面添加所有专业名称,以及年份的词典,里面是所有的学生的年级。建立完成的对话意图如图2所示。

(3)配置对话模板

在新建技能完成后,就要给BOT添加训练数据,首先要配置对话模板。将“我需要、我要查,查一下”等都抽象为表达查询的特征词。在定义完特征词和词槽之后,还需要导入更多的对话模板,并导入系统。词槽和特征词的标注如图3所示。

(4)标注对话样本

把对话数据导入UNIT平台,然后给他们逐条标注意图、词槽。这部分数据可以用于后续的样本学习,让对话机器人获得更好的对话理解泛化能力。对话模板的标注如图4所示。

(5)训练模型

在以上工作完成后,就可以训练发布到沙盒环境训练模型了,沙盒环境是UNIT平台提供给开发者验证技能模型效果的环境,开发者将模型训练后生效至沙盒环境,即可和技能对话,通过对话可验证沙盒中模型的效果,也可实现数据标注。刚创建技能时沙盒也处在运行中,此时沙盒中的模型是一个空的模型,还不能用于对话,需要定义技能,添加训练数据,训练且生效到沙盒后才能用于对话。

3.2.4  问答功能

为了调用UNIT,必须先注册百度账号,进入UNIT,UNIT提供多种接入方式:API接入、微信公众号接入等。本文选择API接入。

根据用户的问题,UNIT在对话样本集里面进行匹配,当达到预定的问答匹配度时,它把相应的回复返回给用户,在本地解析出关键信息之后,显示在聊天界面上。

3.2.5  日常闲聊模块

UNIT除了可以自定义特殊技能外,它还能与让人类交谈,完成日常对话,。与传统机器人不同,UNIT的回答更加幽默和口语化且能与时代潮流保持一致[13]。例如用户可以询问它姓名。聊天对话的友好性进一步提升,更加符合真实人类对话的情景。

4  小助手使用实例

当用户安装好APP后,打开APP,即可以使用小助手提供的各种服务,图5是新生询问宿舍在哪里。用户在编辑框中直接输入想要咨询的问题,UNIT会根据事先导入的对话模板进行识别,得到用户的意图之后进行相应的回复。图6是拿快递和问路相关的问答。图7是闲聊示例。

5  结论

已有的新生助手仅仅通过新生的查询词来进行搜索,搜索过程是单向的,只有用户向搜索引擎提出问题。用户在使用时会存在很大的障碍,且当查询词存在歧义时,新生不能一次完成搜索任务,需要重新输入查询词,即对同样的查询词,不同的学

生会有不同的认知和偏好,导致搜索结果没有针对性,准确性也不高。

作为一款新兴的软件,大学新生小助手Android APP接入百度UNIT平台,采用了交互式搜索技术,可以提供常见的学习和生活信息查询服务,包括查询课表,查询上课教室,校园导航,拿快递等。帮助新生快速融入新环境,给新生的日常生活带来极大的便利。也为学校节省了大量人力物力,提升了新生的报到率。

在高校中,新生的群体是庞大的,也是使用本

APP的主要用户,仅仅有以上的功能还是不够的。新生还关心个人成绩等。将这些主要信息补充完善之后還可以添加一些其他的生活服务资讯,比如教学信息的发布以及空闲的教室,一些社团的活动消息,天气信息等。

参考文献

陈星. 高校新生迎新网上服务系统的设计与实现[D]. 2015.

谢杭, 朱鹏羽, 孟庆贺. 基于安卓平台的掌上校园APP的设计与开发[J]. 2016, 19(3): 24-26.

北京搜狗科技发展有限公司. 清华入学助手[EB/OL]. http://www.91ud.com/app/27030.html.

周国华. Android平台上的智能聊天机器人设计及应用[J]. 计算机产品与流通, 2017(7): 35-36.

百度百科. 聊天机器人[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

智能聊天机器人的关键技术研究[D]. 杭州电子科技大学, 2011.

百度UNIT. 如何站在巨人的肩膀上, 将自己的产品赋予AI的能力[EB/OL]. https://www.jianshu.com/p/c5be75ef9420

戴开宇, 张申生, 王淼. 分布式虚拟环境中的聊天机器人的研究[J]. 计算机工程与应用, 2002, (7): 13-16.

北京图灵机器人股份有限公司. 图灵机器人[EB/OL]. http://www.tuling123.com/

技术宅. 知心朋友? 聊天机器人是怎么聊天的[J]. 电脑爱好者, 2016(17): 62-63.

曹祎遐, 何文清. 聊天机器人 换个方式聊天[J]. 上海信息化, 2016(10): 16-19

孙国致, 杨志峰, 周杰龙. 一种交互搜索方法及装置, CN 102456018 A[P]. 2010.

刘蓉, 陈波. 基于微信公众平台的招生咨询智能聊天机器人[J]. 软件, 2018, 39(06): 49-57.