田猛 高淑贤 李祝君 李雨 王显龙
摘要:随着社会的不断发展,人们经济水平的不断提高,人们对生活品质的要求也在不断增高,在饮食方面,越来越多的人更愿意且享受自己动手做饭的现状,为解决这一问题,文章设计了一种便携式智能菜谱推荐系统。该系统主要包括智能推荐模块、智能语音模块以及用户管理模块。智能推荐系统会通过用户的浏览记录及其口味偏好,向用户推荐菜谱。极大程度上便利了用户动手制作的过程,在提高用户的生活质量上具有很强的应用价值。
关键词:智能菜谱;Android平台;推荐系统
中圖分类号:TP311 文献标识码:A
文章编号:1009-3044(2022)11-0055-03
1 引言
随着社会的发展,快节奏的生活席卷全国,在大中城市的人们加班开始增多,时间紧张,并且大多数人厨艺粗浅甚至完全不会,他们会选择在外就餐、订外卖或是购买速冻食品[1]。长此以往,便会存在一些问题,一方面有些餐厅或外卖餐食会使用大量的调味品,长期食用会对身体健康造成一定的负担,另一方面也不能体会到经过自己辛勤劳动后得到美食的这种成就感[2]。针对上述问题,本文利用Java语言和大数据等相关知识及技术,设计实现了基于Android平台的智能菜谱推荐系统。该系统不但具有较强的可实用性,而且具有良好的应用价值和广阔的发展前景,可以方便用户的日常生活,给用户更好的生活体验。
2 系统设计
2.1 系统需求
该系统主要为厨艺不精而长期点外卖或外出就餐的用户进行智能菜谱推荐,可以根据用户的口味和偏好向用户推荐其喜爱的菜谱做法。推荐功能需求分析如下:首先,系统会存储用户的注册登录信息及喜好品味信息、不同菜式信息、菜式属性以及评价信息到数据库系统中。然后系统根据数据库中用户对各种菜谱的评分以及使用过的历史菜谱进行分析,得到用户的口味偏好。最后,系统会采用协同过滤、矩阵相乘等算法来获取与用户喜好相似度高的菜谱,并把结果反映给用户,并出现在用户的推荐列表中,而且用户还可以对使用过的菜谱进行评分,评分次数越多,系统推荐的菜谱准确率会越高。
2.2 系统架构
本系统架构包括表示层(UI) 、业务逻辑层(BLL) 、数据访问层(DAL) 。系统总体架构图如图1所示,表示层主要包括Web浏览器和Android系统;业务逻辑层的菜谱推荐是系统对用户进行智能推荐的具体操作;业务逻辑层的智能语音系统是指用户通过语音交流了解并学习菜谱。数据访问层是数据库的主要操控系统,数据库中的系统数据是实时更新的菜谱数据,通过表示层的菜谱管理提交菜谱信息到业务逻辑层的菜谱管理,菜谱管理会根据提交的需求进行相应的处理,同时会调用数据访问层中的数据库,来实现数据的增加、删除、修改、查询等操作,并把操作结果反馈到业务逻辑层[3]。
2.3 智能语音系统模块
本文设计的便携式智能菜谱使用了智能语音技术[4]。智能语音系统先通过语音识别(ASR)形成文档,然后对其进行自然语音理解(NLU)形成Meannicontext,再利用对话管理(DM)产生Action,最后经过语音生成NLG将Action转化文字,并利用TTS技术与用户进行交流,其工作过程如图2所示。
2.4 菜谱推荐系统模块
智能菜谱推荐系统模块使用了协同过滤推荐算法,此算法通过对用户搜索历史和学习菜谱的数据进行挖掘,并分析用户的口味,然后根据不同的偏好对用户进行群组划分并推荐其爱好的菜谱。该算法的原理如图3所示。该推荐算法分为基于用户的协同过滤和基于标记物的协同过滤,先计算出用户对物的喜爱度,然后生成个性化推荐[5]。
2.4.1 基于用户的协同过滤
基于用户的协同过滤的核心思想是将与该用户最相似的用户喜欢的标记物推荐给该用户。用户u对标记物s的喜好度sim(u,s)采用公式(1)计算。其中,u是与该用户最相似的用户集合,score(ui,s)是用户ui 对标记物s的喜好度,sim(u,ui)是用户ui与用户u的相似度。
sim(u,s)=ui,Usim(u,ui)×score(ui,s) (1)[4]
2.4.2 基于标记物的协同过滤
基于标记物的协同过滤的核心是计算出每个标记物最相似的标记物列表,然后根据这个列表向用户推荐与其喜爱的标记物相似的标记物。用户u对标记物s的喜好度sim(u,s)采用公式(2)计算。其中,s是所有用户操作过的标记物的列表,score(u,si)是用户u对标记物si的喜好度,sim(si,s)是标记物si与s的相似度。
Sim(u,s)=[si,Sscore(u,si)×sim(si,s)] (2)[4]
2.4.3 利用矩阵相乘向用户推荐菜谱
在用户行为矩阵中,第i行第j列的元素代表了用户i对标记物j的偏好,将该矩阵记为,其中n是用户数,m是标记物数;将标记物之间的相似度矩阵记为,和都是稀疏矩阵,最后通过计算这两个矩阵的乘积,为用户推荐喜爱的菜谱,如公式(3)所示。
Rn×m=An×m*Sm×n (3) [4]
3 功能实现
本文设计的智能菜谱推荐系统App主要功能包括启动功能、搜索功能、最近浏览功能、收藏功能以及分类查询功能。
3.1 启动功能
运行智能菜谱时,在欢迎界面中设置一个线程Handler,并在该线程中放入一张关于美食主题的图片,图片的显示时间为3秒,可以选择跳过或者等待3秒,然后会直接跳转到智能菜谱推荐系统的主要应用界面中,可以看到今日推荐的菜谱,进入主界面后需要在应用程序的清单列表中进行注册,作为第一个执行的活动窗口,接下来将会调用数据库中的菜谱分类表进行数据的获取,再进行数据分析,并将当前分类表中的图片名称、分类名称进行解析,最后通过主界面以图片和文字的形式显示。
3.2 搜索功能
通过对数据库的分析得到全部菜谱信息之后,可以在本菜谱系统主界面最上方的搜索框中进行菜谱搜索的功能性操作,在本系统的搜索框中输入想要搜索的菜谱名称,点击搜索图片(放大镜)调用数据库里面的数据,若查询到数据库中存在该菜谱的数据信息,便会将该菜谱显示在当前界面,若在数据库中没有查询到关于此菜谱的信息,系统将直接给出没有当前菜谱的提示。
3.3 最近浏览功能
用户在查看各种菜谱详情信息时,每查看一种菜谱时都会将所看到的菜谱信息保存到Cookie中,Cookie是一个用来存储客户端浏览信息数据的数据字段,Cookie是由服务器端生成的,所有的浏览过的菜谱信息将会自动保存到Cookie中,用户点击最近浏览菜谱界面时本系统会读取Cookie里面保存的数据,并将数据通过listview的形式进行显示,所以当用户想寻找以前浏览过的菜谱但是忘记收藏时,可以在该用户的个人主页界面找到最近浏览一栏,查看以前浏览过的菜谱信息。
3.4 收藏功能
用户在查看当前菜谱信息时可以将该菜谱进行收藏的功能性操作。点击收藏按钮就可以将喜欢的菜谱进行收藏,已收藏的菜谱也可以取消收藏,已收藏的菜谱可以在收藏菜谱功能模块中查看,系统会通过mkdir命令将当前收藏的菜谱数据信息保存到数据库中,取消收藏是在数据库里面通过执行drop命令将当前的菜谱信息数据在数据库中进行删除的操作,因此,收藏功能中涉及mkdir(创建)命令、drop (删除)语句,系统是通过对菜谱信息的创建和删除来完成菜谱收藏功能的实现。收藏菜谱功能是通过从数据库中查询是否存在该菜谱数据信息,再将库中存在的数据以listview的形式显示在当前界面中,当数据库里面显示该菜谱信息数据为空时,收藏菜谱界面中也会显示为空,系统将会直接给出没有当前信息的提示。
3.5 查看详情功能
菜谱查看详情功能是需要联网之后通过从聚合数据接口中进行数据获取来实现的,启动图在进行跳转之前需要对系统是否连接互联网进行检测,如果正常连接网络就可以直接获取所有菜谱的数据信息,并将所有菜谱信息通过listview列表的形式进行显示。点击某一个菜品类别后可以查看全部菜谱信息,菜品信息详情里面包括菜谱的图片,菜谱的名称,菜谱的简介,菜谱可能需要用到的食材,菜谱的历史来源以及该菜谱的制作步骤等信息,菜谱详情界面中显示的图片都需要使用PDF转换器压缩法进行图片压缩处理,并以PNG格式保存,目的是保证图片的正常加载和真实性。在菜谱详情中还可以进行收藏菜谱和分享菜谱的功能性操作,在制作菜品的时候就可以根据菜谱中显示的所需食材和制作步骤等信息来制作该菜品。
4 系统测试
4.1 系统测试环境及运行环境
本系统测试客户端所使用的硬件设备为Redmi 10 pro,其基本配置信息为8G内存、MIUI12.5操作系统,服务端使用的硬件设备为笔记本电脑,其基本配置信息为8G内存、I7-8565U CPU、Windows10(64位)操作系统。本文设计的系统在Android平台上运行。
4.2 测试流程
软件安装与使用前必须要进行联动调试,需要进行基本的检查操作,查看运行过程中的各项指标是否处于正常范围。针对手机端进行多种软件的使用测试,用于检测手机软件的使用是否出现报错的情况,目的是测试本文设计系统的可用性,如图4所示。
4.2.1 App安装测试
App安装测试由三部分组成:在应用商城中下载本软件,使用安全软件检测软件的安全性,进行App的安装和运行,并测试其是否可以进行用户注册、用户登录、修改密码、搜索菜谱等功能。
4.2.2 App升级测试
升级测试的主要内容包括在线升级、安装及使用。为证明App的所有权,验证签名是否一致。测试跨版本升级是否正常,能否跨多个版本更新。在应用软件中升级App,即在一个新系统内升级本软件,需要检查App的可用性。
4.2.3 App功能测试
功能测试主要是功能逻辑测试:测试App在点开并使用浏览、搜索等功能时,会不会出现逻辑错误(如打开其他的网页模块等) ;在进行功能点测试(单元测试) 时会不会出现搜索无法查询等问题。
4.2.4 手机流量、电量、内存测试
使用测试监控软件来观察本文设计的App在不同时间内通过使用相同功能,来对比分析使用所耗的流量、电量以及App内存占用情况,实时测试的数据如表1所示。
5 结束语
综上所述,便携式智能菜谱系统基本实现了传统菜谱App的主要功能,并向用戶展示了比较良好的功能界面。而且该系统利用大数据统计提供给用户不同地区、不同时节、不同年龄人群所喜爱的菜谱,并且会通过用户的数据为用户智能地推荐菜谱。此外该系统拥有语音功能,通过语音交流方便用户了解菜谱,简易方便,可操作性强,是一款安全实用的智能菜谱系统。
参考文献:
[1] 戴静,马奇奇,王帅,等.基于Android的智能顺风订餐系统的设计与实现[J].科技风,2019(34):27.
[2] 陈雅雪.基于家庭美食健康服务理念的智能调料机设计[J].科技与创新,2020(6):132-133.
[3] 汪丽娟,钱育蓉.基于Android的菜谱个性化推荐系统的设计与开发[J].电脑知识与技术,2017,13(20):81-82,100.
[4] 潘锋.智能语音控制系统设计与研究[J].电子设计工程,2019,27(22):6-9,14.
[5] 刘靖凯.基于深度随机游走的协同过滤推荐算法[J].科学技术创新,2021(6):93-94.
收稿日期:2022-02-25
基金项目:安徽省大学生创新创业训练计划项目(项目编号:S202011305034)
作者简介:田猛(2001—) ,男,安徽淮北人,本科在读,研究方向为大数据技术;高淑贤(2000—) ,女,安徽宿州人,本科在读,研究方向为大数据技术;李祝君(2001—) ,女,安徽安庆人,本科在读,研究方向为大数据技术;李雨(1998—) ,男,安徽宿州人,本科在读,研究方向为大数据技术;王显龙(1991—) ,男,安徽亳州人,通信作者,硕士,研究方向为计算机视觉、大数据。