基于自然语言处理的学生日程规划管理系统分析与实现
2018-08-01王江雨胡鼎峰王赛
王江雨,胡鼎峰,王赛
(1.南京工程学院计算机工程学院,南京 211167;2.南京工程学院自动化学院,南京 211167)
0 引言
信息化社会中,工作及日常事务的增加使人们对日程管理的需求不断提高。一款好的日程管理软件不仅可以提高短期任务规划执行效率,还为个体间互动协作提供便利。
目前,大多数日程管理软件还使用手动添加、管理内容的方式,其操作过程过于机械繁琐。即使部分已经支持语音输入,但仅能在此基础上完成简单的增删操作,并不能满足人们管理规划复杂日程的需求。同时,日程管理软件多追求通用性,未能针对特定人群的需求进行优化。以学生群体为例,普通日程管理软件尚未能将课程信息与一般日程有机整合,而主流课程表软件(如超级课程表)也未能良好实现这一功能。再者,目前主流日程管理软件的功能多集中在日程预约与任务陈列,在长期任务的规划、时间的灵活调配和数据的视觉表现方面有待提升。
基于自然语言处理的学生日程规划管理系统以在校学生为目标人群,能够通过语音快速方便地添加日程,并利用B/S结构的跨平台性,实现多终端的日程规划和数据展示。
1 技术路线
1.1 面向多终端的RESTful架构
分析项目实际需求,整个项目包括多个终端(App,网页等),因此考虑使用RESTful架构。具体而言,使用同一套后端系统,前端通过特定的URI和HTTP协议约定的动词访问后端系统,后端系统返回一个约定好的数据格式(采用JSON格式),前端根据返回的数据处理结果实现与用户的交互。
RESTful架构主要指面向资源,这里的资源泛指一切项目架构中可能会使用到的数据。典型的包括用户信息、日程信息等。传统的MVC架构将页面渲染的功能交给后端完成,用户收到HTML页面数据,这种做法能够保证各个用户所看到的页面基本一致,但是加大了服务器的负担。随着计算机和浏览器性能不断提升,降低了在用户端渲染页面的难度。相对于传统架构,RESTful架构返回的不再是渲染好的HTML页面,而是JSON格式的数据。
1.2 后台框架
考虑到项目实际需要以及项目组成员的普遍水平,项目预计使用Java语言完成后端设计。具体来说使用 Spring 系列组件,包括 Spring MVC,Spring,MyBa⁃tis,Shiro等,其中MyBatis主要完成数据访问层底层封装,Spring MVC提供基础的RESTful架构和控制器,Shiro提供基本的用户访问控制。
1.3 数据库
综合考虑成本和效率等因素,项目选择MySQL数据库作为主要数据库;但是涉及到不同的资源,同样考虑选择合适的替代方案。例如,项目核心的模型之一——日程,相对来说日程较为多样化,难以用一个统一的抽象模型表示,传统上日程的详细信息基本是文本格式,往往不能很好地针对各个日程的特点进行提醒;但是关系型数据库受到范式约束,难以表述这样的逻辑。项目组考虑使用MongoDB这种文档型数据库来存储日程信息,使存储更加灵活。除此之外,针对需要短期缓存的信息,使用Redis来存储,在以往项目的实践中,这种做法可以大大提高数据访问速度,降低主数据库的访问压力。
1.4 Android端
(1)界面设计
对比市面上Axure、墨刀等界面规范化设计的工具,项目组将采用墨刀作为原型设计工具。墨刀是一款在线移动应用原型工具,团队可以快速制作出可直接手机运行的演示App交互的原型,快速构建移动应用产品设计,除了墨刀,还会使用Mark Man等工具辅助原型的设计。
(2)JSON解析能力
移动端与服务器通信的数据格式一般使用JSON格式,Android系统原生提供了解析的API,但速度非常慢,而且没有提供简洁方便的接口来提高开发者的效率和降低出错的可能,因此选择阿里巴巴公司开发的Fastjson,采用“假定有序快速匹配”的算法,接口简单易用适合多场景使用。
2 系统分析与设计
2.1 系统需求分析
在传统日程管理系统的基础上增加自然语言识别功能,将信息录入方式从打字输入变为语音输入。针对在校学生,实现添加课程信息。
(1)信息管理模块:对于各种不同类型的日程的分类管理,对于长期日程进行可进行分段安排;将每个用户的日程自动在云端数据库中同步,实现跨平台使用。
(2)日程展示模块:当用户需要概览一天或更长时间的日程安排时,可以通过日程视图获得直观了解;日程视图分为日视图、周视图、月视图(时间单位依次为一天、一周、一个月);支持在同一时间段内出现多个任务,符合实际情况;App端和Web端使用视觉展示,同时对用户日程数据进行分析并增强视觉表现。
(3)日程录入:语音添加,通过自然语言描述日程信息,系统分析出时间、事项、地点等;具体信息并添加进日程安排中或修改日程安排;使用传统方式手动输入各项具体信息添加日程安排;针对学生人群添加课程表信息。
2.2 系统设计
(1)前端视图切换
本日程规划管理系统支持三种日程视图类型,如日视图、周视图、月视图,如图1。
图1 前端日程视图切换流程图
(2)自然语言处理
自然语言处理流程图如图2。
2.3 数据库设计
MySQL关系型数据库,分析系统需求,可以抽取出相关实体,包含用户信息表(userinfo)、日程规划表(task)和用户日程表(user_task)三张数据表。
用户信息表以user_id为主键存放用户个人信息,日程规划表以任务的task_id为主键存放日程规划的详细信息,用户日程表user_id和task_id联合主键主要用来查询日程的提醒时间。
图2 自然语言处理流程图
该系统数据库ER图如图3所示。以查看、修改或删除该日程。每周日程分时间和天展示日程安排,实现的效果展示在下方,当然,如果日程持续一天或更久,则会在“all day”一行显示持续的天数便于查看。每月日程像日历一样展示日程安排,会显示该月一天的安排,但不显示时间段的图表,而是以文字叙述代替。
图4 添加日程规划界面图
图3 数据库ER图
3 系统实现
3.1 添加日程规划界面实现
该添加日程规划界面可以添加日程规划,这里在Web端实现时,只能手动输入日程的信息,如标题、开始时间、结束时间、是否需要邮件提醒等,而在Android端实现时,通过调用集成的腾讯云智能语音服务(AAI,Artificial Audio Intelligence)进行语音识别并自建业务服务器接收回调信息,最终将获取的语音文本分词后添加到日程界面中,此时用户仍然可以自己校对、修改日程规划内容。
添加日程规划界面如图4。
3.2 周日程规划界面实现
该日程规划系统可以查看每日日程、每周日程和每月日程。每日日程分时间展示一天的安排,如果安排有重叠,则表现为两个或多个方框叠加在一起,在方框中,可以查看到日程的时间和日程的标题,点击后可
每周日程规划界面如图5。
图5 周日程规划界面图
3.3 语音识别
该系统使用腾讯云AAI中的语音识别提供的API实现语音的文本转换。在使用语音识别功能前,需要开发者申请该服务,取得appId、secretId和secretKey,并自建业务服务器接收回调数据。
这里不涉及腾讯云AAI RESTful API中的语音识别服务的调用方式,只说明自建服务的接口实现[3]。
业务服务器接口表如下:
表1 业务服务器接口表
4 结语
本系统主要使用Python和Java语言开发,通过数据库设计、Web前端设计、服务端设计,已基本完成基于自然语言的日程规划管理功能,用户可以通过语音输入或手动添加日程内容,同时可以添加在校学生的课程信息,不仅便于用户的日常日程规划管理,也方便查看课程表。根据对现国内外日程管理应用的现状、水平和发展趋势的分析,该系统具有一定的实用性、可操作性。该系统在设计上采用较新颖的技术,顺应目前行业发展潮流,可扩展性强。