2022年的《政府工作报告》指出:“积极应对人口老龄化,优化城乡养老服务供给,推动老龄事业和产业高质量发展”。由此看到,解决养老问题已上升为国家战略,是当前的重中之重。
1.2.数字化养老研究现状
目前,市场上已存在很多数字化健康养老方面的产品,总的来说,可以分为以下这几大类:1、可穿戴智能监测设备;2、陪护机器人;3、养老APP。可穿戴智能监测设备[2][3][4]一般佩戴在老人身上,实时监测用户的心率、血压、血糖、跌倒状态等等,子女持有监测终端,可以看到老人身体指标是否异常,这一类的产品对于老人的身体状态监测比较到位,安全性也很高。陪护机器人是一种专注于陪护的AI机器人[5][6][7][8],它们可以智能地与用户进行日常交流,完成一些简单的指令,如提醒吃药、打扫卫生等等,可以全方位地陪护独居老人。最后是养老APP,市面上的这类APP数量不在少数[9][10][11][12],因为价格便宜,使用简单,只需要一部智能手机就可以实现一些简单的养老功能,所以也很受一些年轻赡养人的欢迎。
数字化养老产品发展得如火如荼,同时,也暴露出一些产品的不足。比如可穿戴智能监测设备的服务质量很大程度上取决于自身传感器和检测算法,再加上老人不会操作监测终端,只能被动地发送数据给子女,就会造成老人用户对于自己的各项指标了解不足。再如陪护机器人,使用成本与智能化成正比关系,价格昂贵就是它最大的缺点。最后是养老APP,他们大部分的功能并不完善,比较单一,并且智能化程度也不够,所以并不能切实解决老人的日常陪护需求。
因此,对于现有问题,本文设计了一种基于推荐算法的健康养老APP,该APP可以针对不同老人群体推送差异化的服务内容,精准解决数字养老服务的痛点,同时,集成了主流蓝牙健康监测设备的可视化终端,在使用成本上也不高。另外,本APP设计的使用场景主要是在各大品牌的智能音箱上,配合音箱自有的语音交互系统,体验也可以更好。
2.健康养老APP需求分析
2.1.APP客户端用户需求
该APP主要为用户提供以下功能:
1)智能桌面:用户进入APP主界面后,可以看到针对目标用户推荐的服务模块,并展现在桌面上。
2)健康讲堂:利用大数据划定用户类型,推荐不同的养生节目供用户观看。
4)健康监测:接入市面上主流品牌的健康监测设备,提供设备连接能力和数据上传,根据用户平时的健康数据生成报表,直观反应各项指标的变化趋势。
2.2.APP客户端性能需求
因为本APP的使用场景是智能音箱,CPU等配置模块可能不及手机,所以性能要求也显得格外重要。主要是保证以下性能:
1)流畅性:保证运行于主流的Android系统终端设备上不卡顿、低延时、页面帧率不低于30HZ。
3)低耗损:保障APP运行时不会出现耗电异常、流量异常、网络异常等情况。
4)低内存:客户端APK体积要小,运行时避免出现不必要的内存占用。
3.健康养老APP客户端设计
3.1.APP总体架构设计
Figure1.OverallarchitectureofAPP
3.2.内容推荐系统设计
目前,常用的推荐算法主要分为协同过滤和基于内容的推荐算法两大类,因为本APP的推荐系统更加专注于内容的属性,而不注重不同用户之间的交互,所以推荐系统采用了一种基于内容的推荐算法[13]。
3.2.1.内容推荐系统模型
推荐系统的运行步骤如下:
1)系统预先构建不同服务或者节目内容的物品画像。
2)APP使用AndroidGradle插件的ASM插桩预埋无侵入式埋点。
3)通过老人前期的点击目标收集埋点数据提取特征值并建立用户画像。
5)根据不同用户的兴趣偏好推送不同的养老服务内容。
Figure2.Flowchartofcontent-basedrecommendationsystem
目标用户,同时,后续流程中用户也会对推荐的内容做出反馈,这些反馈一样可以进行特征学习,不断调整、优化用户画像的准确性。
3.2.2.内容推荐系统实现
整个系统中比较关键的是用户画像和物品画像的构建,下面是这两部分的具体实现。
物品画像构建从本质上来说是给物品贴标签,在本APP的内容推荐系统里就是给养老服务和养生节目贴标签。以下是构建步骤:
1)把每个养老服务或者养生节目的标签作为候选关键词。
2)利用TF-IDF算法计算每个词的权重。
3)选取权重top-n的标签作为节目画像。
上面提到的TF-IDF是自然语言处理领域中计算文档中词或短语的常用加权方法,权重由词频(TermFrequency,TF)和逆转文档频率(InverseDocumentFrequency,IDF)的相乘得到。TF表示关键字在文本中出现的频率,一个关键字的IDF是由总文件数目除以包含该词语的文件的数目得到商值,再将得到的值取对数计算得到的。
下面是部分伪代码:
#1.获取数据,处理数据集
program_dataset=get_program_dataset(tag_path,program_path)
#2.对数据集进行迭代
#3.对每个电影的现有标签进行tf-idf计算权重
#4.对标签进行权重排序
program_profile=create_program_profile(program_dataset)
#5.对服务或节目构建画像
inverted_table=create_inverted_table(program_profile)
用户画像构建同样也是对用户贴标签。构建步骤如下所示:
1)根据用户的选择历史,将用户偏好的服务或者节目标签反打到用户身上。
2)对用户的标签进行迭代。
3)按权重排序所有标签。
4)选取前N个标签作为用户标签。
部分伪代码如下所示:
#1.根据用户的选择历史,将用户评分好的电影标签作为初始标签反打到用户身上
record_dataset=get_record_dataset(tag_path,record_path)
#2.对用户的标签进行累计→排序→选取前N个作为用户标签
user_profile=create_user_profile(record_dataset,program_profile)
#3对用户推荐服务或节目内容
user_recommand_top_N(user_profile,inverted_table)
这种基于内容的推荐算法可以针对性的对不同老人群体提供差异化的服务,使健康养老服务质量在一定程度上有了保证。
3.3.APP客户端模块设计
Figure3.Modulestructurediagram
3.3.1.智能桌面模块设计
Figure4.Flowchartofdesktopgeneration
Figure5.SomescreenshotsoftheAPPdesktop
3.3.2.健康讲堂模块设计
用户点击桌面上的健康讲堂图标即可进入健康讲堂模块,此模块主要是向老人用户提供一些健康养生方面的知识,通过视频来直观的展现内容,同时,也能丰富老人的精神需求。该模块同样基于推荐算法,每次进入都会推送用户感兴趣的养生内容,用户点击相应的视频后,播放器组件开始工作,拉取视频流,同时,提供暂停、选集、快进、快退功能。
Figure6.Structurediagramofplayercomponents
1)libmedia_jni.so负责使用jni连接java层和native层,然后调用MediaPlayer类提供的接口。
2)libmedia.so对上层提供了MediaPlayer类负责客户端与MediaPlayerService的IPC通讯。
3)libmediaplayerservice.so负责统筹调度具体的编码器和解码器,它内部也实现了libmedia.so的IMediaPlayer类用于接收客户端通过IPC机制发送的指令。
Figure7.Screenshotofhealthlecture
3.3.3.健康监测模块设计
健康监测模块主要提供了两个功能,分别为健康设备管控和健康数据分析。
设备管控页面提供了健康蓝牙设备的扫描、连接、数据上传能力,用户进入页面后可以看到市面上主流品牌的蓝牙设备列表,点击其中任意设备图标进入设备扫描页,此时蓝牙组件开始工作,发现设备后选择连接设备,成功建立蓝牙notify通道后,用户可以开始测量,测量结束后上传健康数据,至此设备管控流程结束。
Figure8.Screenshotofhealthmonitoringpage
3.3.4.健康咨询模块设计
行动不便是老人群体常见的问题,如果能让老人足不出户就享受到医疗服务,那么对于解决养老问题来说,这将是一个很大的帮助。此模块以此为目的,设计了一整套流程,提供了线上看病的便利,方便了广大老人群体。
Figure9.Flowchartofhealthconsultation
Figure10.Screenshotofhealthconsultationpage
3.3.5.紧急呼叫模块设计
Figure11.Screenshotofemergencycallpage
4.总结
本文设计并实现了一款运行于Android系统的健康养老APP。该APP基于推荐算法能够配置生成智能桌面,其中的核心模块健康讲堂可以提供老人用户养生知识,丰富老人的精神世界,健康监测模块可以管控健康蓝牙设备,上传并分析健康数据,然后生成健康趋势图供用户参考,另外,健康咨询模块提供线上的看病就医能力,紧急呼叫模块提供了一定的安全保障。总的来说,相较于现有的老人陪护方案,本文设计的APP功能较为全面,并且使用成本比较低,为独居老人的晚年提供了丰富的业余生活。