移动农业信息推荐系统设计

2016-09-27 07:34狄查美玲张富彬
大连民族大学学报 2016年5期
关键词:后台资讯页面

姜 楠,赵 杏,狄查美玲,张富彬

(大连民族大学 计算机科学与工程学院,辽宁 大连 116605)



移动农业信息推荐系统设计

姜楠,赵杏,狄查美玲,张富彬

(大连民族大学 计算机科学与工程学院,辽宁 大连 116605)

设计了一个农业信息移动服务系统,该系统包括三个模块:农业信息展示模块、推荐系统模块和后台管理端模块,分别能够实现对农业信息的展示,农作物种子信息的推荐以及对整个系统信息的管理与维护。系统的移动端基于iOS系统采用Object-C语言进行开发;后台接口采用MVC架构模式,通过Java语言结合SpringMVC、Mybatis架构封装;推荐系统采用较前沿的协同过滤和Spark MLlib推荐系统技术,并且实现了推荐算法的参数调优。

农业信息系统;协同过滤;Spark推荐系统;移动技术

1 研究背景

“互联网+”为许多传统行业的升级提供了良好的契机和条件,“互联网+现代农业”正是这一新趋势的产物[1]。当今互联网技术迅猛发展,网上拥有海量信息资源,而农民接收这些信息则存在“延迟”的问题。随着推荐系统在实际应用中受到了广泛关注和迅速发展,改变了以往信息推送的方式,且能够实现个性化推荐。通过移动互联网和智能推荐技术相结合,可以为农民进行农业相关资讯和信息的推荐。

本文设计了一个基于iOS的移动农业信息服务系统,通过该系统可以方便农民用户及时了解农业资讯、最新农业品种以及市场需求和天气状况等信息,提高农民接受信息的效率,进而促进农业生产的发展。

2 需求分析

根据当前农民获取农业相关信息的现状,为了改变其中的不足,给农民带来更多便利,本研究针对这一问题进行了系统需求分析。具体设置为:系统后台管理端由系统管理员登录,负责对用户信息的管理、农业资讯的管理、种子信息的管理、市场需求信息的管理,同时还能够对特定产品加入对应农民用户的评分,以此来提供推荐系统的数据集。后台管理端能够通过管理员的操作来维护手机客户端的信息展示和正确运行。移动端能够将农业资讯信息、种子信息、由推荐系统推荐的种子信息、市场需求信息等展示给用户,农户可以就相关技术问题或者农业生产过程中遇到的问题进行网上咨询。能够方便农民用户关注农业新闻,查看农业新品种的种子信息,并且系统还会对农民用户可能感兴趣的种子产品做出推荐。市场需求模块可方便农民用户及时了解市场动态,把握农业经营方向,在农业生产中遇到的问题及时获得解决,同时加入天气预报功能,使农民能够实时了解天气情况,更好地管理农作物。

3 系统设计

3.1总体架构

农业信息服务系统的系统架构图如图1。客户端通过基于iOS平台的Object-C语言设计,服务器采用MVC三层结构,分别为表示层(View)、业务逻辑层(Controller)和模型层(Model)。Web端通过jsp技术实现,以Json和Model的形式与后台进行交互,通过SpringMVC进行参数解析和视图解析,然后调用Service层的业务逻辑处理,最后通过Dao层访问数据库完成数据操作[2]。iOS客户端通过请求服务器间接与数据库交互,从服务器通过参数解析、数据处理最终以Json的形式向客户端返回数据,其后台的调用过程与Web后台数据处理相同。天气预报的数据通过调用第三方API接口将数据进行返回,通过客户端进行展示。

图1 系统架构图

3.2数据库设计

针对于各个模块的需求,为提供系统数据存储的支撑,农业信息服务系统的应用需求抽象为信息世界的结构,从而能够准确的用数据库管理系统实现这些需求。表示概念模型的方式有很多,通常采用实体-联系方法(Entity-Relationship Approach),本系统的E-R图(E-R Diagram)如图2。

图2 E-R图

3.3推荐系统设计

本系统数据集通过实际调查、回访获取数据,然后由管理员从后台录入系统数据库,生成用户偏好数据,供推荐系统分析、计算。目标用户登录手机客户端,系统会获取用户登录id编号,当用户点击种子推荐页面时,系统会根据用户行为判断,如果用户没有通过按钮点击种子详细信息,则通过基于用户的推荐算法推荐,此时,通过分析不同用户可能具有相同的兴趣爱好而向用户推荐其他具有相同兴趣的用户也感兴趣的物品;如果用户发生了点击种子详细信息的动作,则通过基于物品的推荐算法为用户提供推荐[3]。如果用户点击了某个种子信息,则表明用户对这个种子感兴趣,因此通过分析与此种子相似度较高的种子信息为用户推荐,最后生成推荐列表显示在手机客户端。

4 系统实现

根据移动开发设计准则,本系统采用了简洁易操作的设计风格,其布局和页面清晰明了,拥有较好的用户体验。

4.1移动客户端实现

以农业资讯页面为例,通过从服务器获取农业资讯相关数据,用列表的形式进行展现,包括新闻图片、新闻标题、新闻预览等内容,点击每一条新闻进入详情页面,显示新闻标题、发布时间、新闻图片以及新闻正文。

此模块涉及NewsViewController类、NewsDetailViewController类以及NewsTableViewCell类。其中,前两个类分别负责展示农业资讯列表和资讯详情, NewsTableViewCell类负责显示资讯列表中每条资讯的UI。NewsTableViewCell类同时创建了同名的xib文件,通过xib的方式创建相应的控件,根据设计图分别拖选UIImageView、UILabel等控件,对于不同机型的适配,采用添加约束的方式,通过把cell加载到NewsViewController类中的UITableView上来实现列表的展示。为防止出现手机因加载图片过多、内存飙升而导致crash的情况,UITableView的cell利用了复用机制。

进入该模块或下拉列表时,调用getNewsArray方法利用ServerCommunicator类从服务器请求农业资讯的最新json信息,数据获取成功或失败会通过代理的方式回调到NewsViewController,在成功的回调方法handleRequestCompletion中,通过NSJSONSerialization类对json数据进行解析来获得标题、内容等信息,显示到对应的label上;对于新闻图片,服务器返回图片的地址,利用SDWebImage第三方库将图片从网络异步下载之后,加载到页面上,图片缓存到本地,下次进入模块或下拉刷新时,相同图片不必再次请求网络。

点击每一个新闻,在UITableViewCell的代理方法didSelectRowAtIndexPath中init一个NewsDetailViewControllew类的对象来显示新闻详情页面,该页面所需控件为UILabel、UIImage以及UITextView,通过请求服务器获取详情的json信息,解析之后把结果存储到NewsInfo实体类中,再把数据显示到对应的控件上,该模块采用mvc的设计模式。

4.2后台管理系统实现

本系统后台管理端模块实现的功能包括所有功能模块信息的录入以及信息的维护,主要包括农业资讯信息、种子产品信息、市场需求信息的管理、农业咨询留言的管理以及对用户信息的维护。

后台管理端采用浏览器/服务器(B/S)架构,开发工具使用intelliJ IDEA,服务器采用jetty服务器,通过maven代码管理工具构建项目,技术上采用主流的三层架构,分别为表示层、业务逻辑层和数据持久层。表示层采用Html、Css、JavaScript和bootstrap等技术设计网页,通过SpringMVC解析前台传过来的参数,通过Controller对应前端页面;业务逻辑层通过Service作出相应的处理,供Controller调用,从而实现代码的通用性,有效避免代码复用,使程序逻辑更加清新;数据持久层采用Mybatis进行对数据库的添加、修改、查询和删除等操作。后台服务端管理界面如图3。

图3 后台管理系统界面

服务器与客户端之间的数据交互主要通过JSON获取对象的形式,然后采用Ajax以GET或者POST方式发出请求,并且以JSON的形式将所请求的数据返回。前台通过EL表达式和jstl标签将数据或者通过jQuery动态加载在页面上。因为系统采用Spring框架,所以controller文件需要@Controller注解,Service文件需要@Service注解,系统在启动时,会通过注解加载这些文件。

以农业资讯为例,农业资讯列表页通过访问路径Http://localhost:8080/rest/web/news/list,根据配置找到controller文件@RequestMapping注解,找到指定的方法,controller方法依次调用Service,再通过Service调用Dao,返回农业资讯String类型页面文件名,并将获取的News类型的List存入Model中,然后在页面通过EL表达式的方式显示。如果修改农业资讯,首先需要页面发起请求,通过Ajax访问路径Http://localhost:8080/rest/web/news/update?id=1,根据@RequestMapping注解找到对应的方法,调用Service和Dao返回需要修改的记录,以JSON的形式返回,然后通过jQuery动态填入修改信息的表单中用以显示,修改需要改动的数据后提交表单,访问Controller中updateDo方法将数据封装成对象传入Service和Dao进行修改,并返回“操作成功”提示。

4.3推荐系统的实现

由于Spark提供了丰富的接口,包括Java、Python、Scala语言的API和内建的程序库。Spark可以与其他大数据工具配合使用,运行在Hadoop集群上[4]。由于本系统后台开发语言采用的是Java语言,所以首先需要在程序中引入Java的Spark相关jar包,基于Spark MLlib协同过滤推荐系统的数据集要以用户信息、农作物种子产品信息和用户-产品评分为依托,创建一个JavaSparkContext(Spark容器),然后将用户评分表中的数据转化为一个String类型的JavaRDD,通过对JavaRDD进行转化操作用Rating的格式包装,此时JavaRDD变成Rating类型,调用ALS(最小交替二乘)的训练函数。ALS的训练函数train包含rdd,rank,iterations,lambda四个参数:(1)rdd为数据集。(2)rank表示ALS模型中因子个数,也就是将稀疏矩阵转变为两个低阶矩阵隐含特征个数。因子个数影响训练效果和系统开销,二者为反比,合理取值为10~200,需要在实践中调节参数,选择合理的一个。(3)iterations表示运行时迭代次数,ALS每次迭代降低评级矩阵的重建误差,一般少数次迭代就可以收敛为一个合理的模型。(4)Lambda用于控制模型的正则化过程,从而控制过拟合情况,该参数要根据实际数据的特征、大小和稀疏程度来确定。在本项目中我们将rank、iterations、lambda参数的值依次确定为100,15,0.01。通过训练模型得到一个MatrixFactoriaztionModel(用户对所有物品的评分)。MatrixFactoriaztionModel中有很多方法,可以预估特定用户对特定物品的评分,也可以将用户对物品的评分以倒序形式输出,从而得到推荐列表。

5 结 语

本文采用Spark技术实现了农业信息移动服务系统的推荐子系统,可以有效提高系统的计算速度,进行物品推荐,能够帮助农户在众多可选项中发现新物品,做出更好的选择,进而对农业发展起到积极的作用。

[1] 国务院.国务院关于积极推进“互联网+”行动的指导意见[R]. 中华人民共和国国务院公报, 2015(20):20-22.

[2] 徐雯,高建华.基于Spring MVC及MyBatis的Web应用框架研究[J]. 微型电脑应用, 2012, 28(7):1-4.

[3] 杨志伟. 基于Spark平台推荐系统研究[D]. 北京:中国科学技术大学,2015.

[4] 黄洁,夏俊鸾,刘旭晖,等.Spark大数据处理技术[M].北京:电子工业出版社,2015.

(责任编辑邹永红)

The Design of Mobile Agricultural Information Recommendation System

JIANG Nan, ZHAO Xing, DI Cha-meiling, ZHANG Fu-bin

(College of Computer Science and Engineering,Dalian Nationalities University,Dalian Liaoning 116605,China)

Design a agricultural information mobile service system, consists of three modules of the system, including agricultural information display module, recommend system module and background management module, respectively to achieve the display of agricultural information, the recommendation of crop seeds and the management and maintenance of system information. Front-end of the system using Object-C language development; backend interface using MVC architecture pattern, through the Java language combined with SpringMVC and Mybatis to develop; recommendation system using collaborative filtering and spark MLlib Advance technology, and realize the recommendation algorithm parameter tuning.

Agricultural information system; collaborative filtering; Spark recommendation system; mobile technology

2096-1383(2016)05-0505-04

2016-07-01;最后

2016-08-15

全国工程专业学位研究生教育自选课题(2014-JY-106 );国家民委科研项目(14DLZ012)。

姜楠(1964-),女,山东龙口人,教授,主要从事信息安全研究。

TP39

A

猜你喜欢
后台资讯页面
刷新生活的页面
答案
资讯Information①
Wu Fenghua:Yueju Opera Artist
后台暗恋
后台朋友
后台的风景
Web安全问答(3)
资讯
资讯