摘 要: 通过手机管理日常事务,已成为快节奏生活状态下人们的首选。与传统的手动添加日程不同,为了提高日程管理效率,依据GTD时间管理理念,设计和实现基于短信内容解析的日程助手软件。通过短信监听,采用分词算法对短信文本进行解析,提取出事务日程信息,自动加入到Android手机自带谷歌日历的待办事项,为用户提供了短信日程自动记录、提醒等功能。方便了用户收集日程任务,提高了时间管理效率。
关键词: GTD;Android;短信监听;文本解析;日程助手
0 引言
信息时代,手机已影响到人们日常生活的方方面面。《2014年中美移动互联网调查报告》[1]显示,70%以上的移动互联网用户对智能手机有依赖性,用户通过手机进行通讯、浏览信息、收发邮件、社交等活动。Android系统是Google公司推出的以移动互联网业务为核心的智能终端开源平台[2]。目前在中国市场上,Android系统的智能手机占有83.6%的移动互联网终端市场[3]。
短信息社交是一项传达准确、接收及时、回馈迅速的高效社交方式。通过短信息发送活动通知已成为很多组织活动很重要的一项工作。特别是一些服务商推出的短信群发的社交软件,比如飞信、超信等,这些软件为组织机构提供了方便快捷的事务通知等功能。
Allan提出的GTD(Getting Things Done)[4]理念,是近年来很多公司和个人较为推崇的一种时间管理理念,其主要通过收集、整理、组织、执行、回顾5个步骤来管理个人时间。
市场上也出现了一系列的时间管理软件来管理日程计划[5],这些软件的着眼点是定时提醒,一般都需要安装应用程序(APP),尚未发现从接收短信中提取出日程安排信息,自动添加进日历待办事项中Android移动日程应用。
为了使用户更好地安排好自己的日常学习和生活,设计和实现了基于GTD时间管理理念,基于短信内容解析的大学生日程助手软件。采用短信监听技术,通过短信接收日程安排,解析短信文本,提取待办事项内容,并自动添加进Android手机自带的谷歌日历待办事项中,到时提醒。
1 模块设计
该日程助手软件主要分三个模块,如图1所示。短信监听模块实现对手机接收短信的监听和记录。日历提醒模块包括信息提取、闹钟提醒和自定义设置,信息提取模块包括提取原文和提取属性,提取的原文通过解析抽取后,形成日程的基本属性信息,提取的属性包括短信息的发送时间、发送人等。经过提取解析后的事务相关内容加载到日历待办事项当中,另外,用户还可以根据自己的需求,对闹钟提醒进行再管理设置。自定义设置为用户提供了一些定制的自定义功能,如很多单位和机构以“周”作为时间单位,自定义可以设置第一周的时间点。模板回复模块包括快速回复和模板管理,快速回复为用户提供采用已有的模板进行快速回复功能,模板管理模块为用户提供自行增加、删除和修改的管理功能。
2 核心流程
根据GTD的5个步骤(收集、整理、组织、执行、回顾),设计、分析手机日程助手软件的流程。日程助手软件先通过监听短信,获取新收短信息;遵照用户意愿,确定是否加入日历提醒,对于需要进行日程安排的短信,解析短信内容及属性,使用分词技术进行匹配,提取出事务关键信息,包括时间、地点、备注等;然后加入到Android手机自带Google日历中,到时提醒。系统的核心流程如图2所示。
3 关键技术
3.1 短信监听
在Android系统中,电话的接收和短信的接收都会产生一个广播,通过监听这些广播可以对电话、短信做出程序逻辑的处理。通过接收Android系统的短信广播方式监听短信,操作方便,适合简单的短信处理。
短信广播是一种有序广播,它会先发送给优先级最高的那个Receiver,设置代码中SmsReceiver的优先级为800:
另外,接收短信需要权限,需要在AndroidManifest.xml中配置:
3.2 短信内容解析
解析短信内容,即运用工具从短信文本中选取与待办事项有关的时间、地点等信息。先要根据需求,建立日程信息词典,再运用匹配技术,在短信文本中搜寻符合词典中词条的文本。
根据信息处理需求,按照特定规范,要对全部短信内容进行切分,即分词。采用好的分词算法可以得到准确的时间相关词以及事项关键词。目前分词算法主要分为三大类:基于字符串匹配的分词方法、基于词频度统计的分词方法和基于知识理解的分词方法[6]。第一类方法基于词典词条,若在词典中找到某个字符串,则匹配成功。这类方法实现简单,分词效率较高。第二类基于统计的分词方法则基于字和词的统计信息,由于这些信息是通过调查真实语料而取得的,因而具有较好的实用性。第三类基于知识理解的分词方法是让计算机模拟人类的思想语言逻辑对句子理解划分,达到分词效果。
对于日常事务通知,短信内容一般不会很长,多数主题明确,地点也多有重复,日程信息词典词条数量不大,因此设计使用基于字符串匹配的分词技术,将词典中的所有词按由长到短的顺序在短信中逐词遍历搜索,进行匹配,直至文本结束。再配合对时间格式的匹配,短信的重要信息就可以被轻松获取。
短信息发送方不统一,文本编排风格各异,日常通知短信息中,待办事项文本结构复杂。因此,采用正则表达式设计查找时间复杂字符串的规则。正则表达式对复杂规则的字符串的查找效率高,用法灵活,语句简单[7]。
设计提取时间内容的正则表达式为:((本|下)?(周|(星期))*(一|二|三|四|五|六|日)|[今明后]天)|((1?[0-9])|(十*[(一|二|三|四|五|六|七|八|九)]))月(([1-3]?[0-9])|([二三]十*[(一|二|三|四|五|六|七|八|九)]))(日|号)。
例如:“后天中午十二点在一号楼111开会”,分词后得到“后天”、“中午”、“十二点”、“一号楼”、“111”、“开会”这些词语。按照正则表达式取出时间关键词,计算出时间,然后取出剩下的地点信息。
3.3 传值方法
基于以上技术实现整体软件,其中重要的一点就是对数值的传递和使用。
采取Bundle方法在不同Activity之间传递短信内容,然后再对数据进行处理。它的数据不是持久化状态。在对用户设置的属性进行保存时使用sharePreferences方法,它简单地存储持久化的设置,就像用户每次打开应用程序时的主页,它只是通过一些简单的键值对来操作。它将数据保存在一个XML文件中。通过系统的shared框架,用key-value进行值的增删改查。在对短信和快捷回复的保存中使用SQlite。
4 实现
系统主要实现了短信息的监听、事务内容提取及加入日历提醒等功能。在系统启动后会自动进入监听模式,对于新短信息则会自动弹出提示窗口,提示用户是否要将此信息内容加入到日历中,同时为用户提供快速回复和模板回复功能,监听界面如图3。
如果用户选择“加入日历”,则对短信息内容进行解析和提取,提取出事务信息和整个短信内容,进入“确认加入”界面,如图4。用户可以对信息进行进一步编辑,同时可以选择是否有铃声提示及闹钟提示间隔时间等。确认加入后,系统调用Android系统提供的日历接口,将日程待办事项信息加入到手机日历中,如图5。
5 结论
针对日常繁琐的事务,整合了当前领先的GTD时间管理理念于软件设计中,通过监听事务短信,使用基于字符串匹配的分词算法及正则表达式提取新短信息中的事务相关信息,能够较准确地提取出事务信息,加入到手机自带日历中,实现到时提醒。基于短信内容解析的手机日程管理软件可以帮助用户快速建立日程计划,降低人工操作的错误率,降低手机负载,大大缩短时间,提高办事效率。
参考文献
[1] 于俊杰.2014年中美移动互联网调查报告[EB/OL].(2014-11-20)[2015-2-10].http://tech.sina.com.cn/i/2014-11-20/14339810372.shtml.
[2] Android project official. Android project [EB/OL].(2008-9-1)[2015-2-10] http://www.android.com/2008.
[3] Sui Linda. China Smartphone Vendor and OS Marketshare [EB/OL].(2014-11-3)[2015-2-10] http://www.strategyanalytics.com/default.aspx?mod=reportabstractviewer&a0=10248.
[4] ALLEN D. Getting Things Done: the art of stress-free productivity[M]. Penguin Books, 2002.
[5] 林鸿.基于Android的班级智能日程安排系统的设计与开发[J].福建电脑,2014,30(1):151-153.
[6] 黎佳.浅谈中文切词算法[J].软件,2013,34(7):75-76.
[7] 刘杨,陈晖,陈远江.中文文本信息过滤技术研究[J].船电技术,2010,30(7):58-61.