姜 楠,趙 杏,狄查美玲,張富彬
(大連民族大學 計算機科學與工程學院,遼寧 大連 116605)
?
移動農業(yè)信息推薦系統(tǒng)設計
姜楠,趙杏,狄查美玲,張富彬
(大連民族大學 計算機科學與工程學院,遼寧 大連 116605)
設計了一個農業(yè)信息移動服務系統(tǒng),該系統(tǒng)包括三個模塊:農業(yè)信息展示模塊、推薦系統(tǒng)模塊和后臺管理端模塊,分別能夠實現(xiàn)對農業(yè)信息的展示,農作物種子信息的推薦以及對整個系統(tǒng)信息的管理與維護。系統(tǒng)的移動端基于iOS系統(tǒng)采用Object-C語言進行開發(fā);后臺接口采用MVC架構模式,通過Java語言結合SpringMVC、Mybatis架構封裝;推薦系統(tǒng)采用較前沿的協(xié)同過濾和Spark MLlib推薦系統(tǒng)技術,并且實現(xiàn)了推薦算法的參數(shù)調優(yōu)。
農業(yè)信息系統(tǒng);協(xié)同過濾;Spark推薦系統(tǒng);移動技術
“互聯(lián)網+”為許多傳統(tǒng)行業(yè)的升級提供了良好的契機和條件,“互聯(lián)網+現(xiàn)代農業(yè)”正是這一新趨勢的產物[1]。當今互聯(lián)網技術迅猛發(fā)展,網上擁有海量信息資源,而農民接收這些信息則存在“延遲”的問題。隨著推薦系統(tǒng)在實際應用中受到了廣泛關注和迅速發(fā)展,改變了以往信息推送的方式,且能夠實現(xiàn)個性化推薦。通過移動互聯(lián)網和智能推薦技術相結合,可以為農民進行農業(yè)相關資訊和信息的推薦。
本文設計了一個基于iOS的移動農業(yè)信息服務系統(tǒng),通過該系統(tǒng)可以方便農民用戶及時了解農業(yè)資訊、最新農業(yè)品種以及市場需求和天氣狀況等信息,提高農民接受信息的效率,進而促進農業(yè)生產的發(fā)展。
根據(jù)當前農民獲取農業(yè)相關信息的現(xiàn)狀,為了改變其中的不足,給農民帶來更多便利,本研究針對這一問題進行了系統(tǒng)需求分析。具體設置為:系統(tǒng)后臺管理端由系統(tǒng)管理員登錄,負責對用戶信息的管理、農業(yè)資訊的管理、種子信息的管理、市場需求信息的管理,同時還能夠對特定產品加入對應農民用戶的評分,以此來提供推薦系統(tǒng)的數(shù)據(jù)集。后臺管理端能夠通過管理員的操作來維護手機客戶端的信息展示和正確運行。移動端能夠將農業(yè)資訊信息、種子信息、由推薦系統(tǒng)推薦的種子信息、市場需求信息等展示給用戶,農戶可以就相關技術問題或者農業(yè)生產過程中遇到的問題進行網上咨詢。能夠方便農民用戶關注農業(yè)新聞,查看農業(yè)新品種的種子信息,并且系統(tǒng)還會對農民用戶可能感興趣的種子產品做出推薦。市場需求模塊可方便農民用戶及時了解市場動態(tài),把握農業(yè)經營方向,在農業(yè)生產中遇到的問題及時獲得解決,同時加入天氣預報功能,使農民能夠實時了解天氣情況,更好地管理農作物。
3.1總體架構
農業(yè)信息服務系統(tǒng)的系統(tǒng)架構圖如圖1。客戶端通過基于iOS平臺的Object-C語言設計,服務器采用MVC三層結構,分別為表示層(View)、業(yè)務邏輯層(Controller)和模型層(Model)。Web端通過jsp技術實現(xiàn),以Json和Model的形式與后臺進行交互,通過SpringMVC進行參數(shù)解析和視圖解析,然后調用Service層的業(yè)務邏輯處理,最后通過Dao層訪問數(shù)據(jù)庫完成數(shù)據(jù)操作[2]。iOS客戶端通過請求服務器間接與數(shù)據(jù)庫交互,從服務器通過參數(shù)解析、數(shù)據(jù)處理最終以Json的形式向客戶端返回數(shù)據(jù),其后臺的調用過程與Web后臺數(shù)據(jù)處理相同。天氣預報的數(shù)據(jù)通過調用第三方API接口將數(shù)據(jù)進行返回,通過客戶端進行展示。

圖1 系統(tǒng)架構圖
3.2數(shù)據(jù)庫設計
針對于各個模塊的需求,為提供系統(tǒng)數(shù)據(jù)存儲的支撐,農業(yè)信息服務系統(tǒng)的應用需求抽象為信息世界的結構,從而能夠準確的用數(shù)據(jù)庫管理系統(tǒng)實現(xiàn)這些需求。表示概念模型的方式有很多,通常采用實體-聯(lián)系方法(Entity-Relationship Approach),本系統(tǒng)的E-R圖(E-R Diagram)如圖2。

圖2 E-R圖
3.3推薦系統(tǒng)設計
本系統(tǒng)數(shù)據(jù)集通過實際調查、回訪獲取數(shù)據(jù),然后由管理員從后臺錄入系統(tǒng)數(shù)據(jù)庫,生成用戶偏好數(shù)據(jù),供推薦系統(tǒng)分析、計算。目標用戶登錄手機客戶端,系統(tǒng)會獲取用戶登錄id編號,當用戶點擊種子推薦頁面時,系統(tǒng)會根據(jù)用戶行為判斷,如果用戶沒有通過按鈕點擊種子詳細信息,則通過基于用戶的推薦算法推薦,此時,通過分析不同用戶可能具有相同的興趣愛好而向用戶推薦其他具有相同興趣的用戶也感興趣的物品;如果用戶發(fā)生了點擊種子詳細信息的動作,則通過基于物品的推薦算法為用戶提供推薦[3]。如果用戶點擊了某個種子信息,則表明用戶對這個種子感興趣,因此通過分析與此種子相似度較高的種子信息為用戶推薦,最后生成推薦列表顯示在手機客戶端。
根據(jù)移動開發(fā)設計準則,本系統(tǒng)采用了簡潔易操作的設計風格,其布局和頁面清晰明了,擁有較好的用戶體驗。
4.1移動客戶端實現(xiàn)
以農業(yè)資訊頁面為例,通過從服務器獲取農業(yè)資訊相關數(shù)據(jù),用列表的形式進行展現(xiàn),包括新聞圖片、新聞標題、新聞預覽等內容,點擊每一條新聞進入詳情頁面,顯示新聞標題、發(fā)布時間、新聞圖片以及新聞正文。
此模塊涉及NewsViewController類、NewsDetailViewController類以及NewsTableViewCell類。其中,前兩個類分別負責展示農業(yè)資訊列表和資訊詳情, NewsTableViewCell類負責顯示資訊列表中每條資訊的UI。NewsTableViewCell類同時創(chuàng)建了同名的xib文件,通過xib的方式創(chuàng)建相應的控件,根據(jù)設計圖分別拖選UIImageView、UILabel等控件,對于不同機型的適配,采用添加約束的方式,通過把cell加載到NewsViewController類中的UITableView上來實現(xiàn)列表的展示。為防止出現(xiàn)手機因加載圖片過多、內存飆升而導致crash的情況,UITableView的cell利用了復用機制。
進入該模塊或下拉列表時,調用getNewsArray方法利用ServerCommunicator類從服務器請求農業(yè)資訊的最新json信息,數(shù)據(jù)獲取成功或失敗會通過代理的方式回調到NewsViewController,在成功的回調方法handleRequestCompletion中,通過NSJSONSerialization類對json數(shù)據(jù)進行解析來獲得標題、內容等信息,顯示到對應的label上;對于新聞圖片,服務器返回圖片的地址,利用SDWebImage第三方庫將圖片從網絡異步下載之后,加載到頁面上,圖片緩存到本地,下次進入模塊或下拉刷新時,相同圖片不必再次請求網絡。
點擊每一個新聞,在UITableViewCell的代理方法didSelectRowAtIndexPath中init一個NewsDetailViewControllew類的對象來顯示新聞詳情頁面,該頁面所需控件為UILabel、UIImage以及UITextView,通過請求服務器獲取詳情的json信息,解析之后把結果存儲到NewsInfo實體類中,再把數(shù)據(jù)顯示到對應的控件上,該模塊采用mvc的設計模式。
4.2后臺管理系統(tǒng)實現(xiàn)
本系統(tǒng)后臺管理端模塊實現(xiàn)的功能包括所有功能模塊信息的錄入以及信息的維護,主要包括農業(yè)資訊信息、種子產品信息、市場需求信息的管理、農業(yè)咨詢留言的管理以及對用戶信息的維護。
后臺管理端采用瀏覽器/服務器(B/S)架構,開發(fā)工具使用intelliJ IDEA,服務器采用jetty服務器,通過maven代碼管理工具構建項目,技術上采用主流的三層架構,分別為表示層、業(yè)務邏輯層和數(shù)據(jù)持久層。表示層采用Html、Css、JavaScript和bootstrap等技術設計網頁,通過SpringMVC解析前臺傳過來的參數(shù),通過Controller對應前端頁面;業(yè)務邏輯層通過Service作出相應的處理,供Controller調用,從而實現(xiàn)代碼的通用性,有效避免代碼復用,使程序邏輯更加清新;數(shù)據(jù)持久層采用Mybatis進行對數(shù)據(jù)庫的添加、修改、查詢和刪除等操作。后臺服務端管理界面如圖3。

圖3 后臺管理系統(tǒng)界面
服務器與客戶端之間的數(shù)據(jù)交互主要通過JSON獲取對象的形式,然后采用Ajax以GET或者POST方式發(fā)出請求,并且以JSON的形式將所請求的數(shù)據(jù)返回。前臺通過EL表達式和jstl標簽將數(shù)據(jù)或者通過jQuery動態(tài)加載在頁面上。因為系統(tǒng)采用Spring框架,所以controller文件需要@Controller注解,Service文件需要@Service注解,系統(tǒng)在啟動時,會通過注解加載這些文件。
以農業(yè)資訊為例,農業(yè)資訊列表頁通過訪問路徑Http://localhost:8080/rest/web/news/list,根據(jù)配置找到controller文件@RequestMapping注解,找到指定的方法,controller方法依次調用Service,再通過Service調用Dao,返回農業(yè)資訊String類型頁面文件名,并將獲取的News類型的List存入Model中,然后在頁面通過EL表達式的方式顯示。如果修改農業(yè)資訊,首先需要頁面發(fā)起請求,通過Ajax訪問路徑Http://localhost:8080/rest/web/news/update?id=1,根據(jù)@RequestMapping注解找到對應的方法,調用Service和Dao返回需要修改的記錄,以JSON的形式返回,然后通過jQuery動態(tài)填入修改信息的表單中用以顯示,修改需要改動的數(shù)據(jù)后提交表單,訪問Controller中updateDo方法將數(shù)據(jù)封裝成對象傳入Service和Dao進行修改,并返回“操作成功”提示。
4.3推薦系統(tǒng)的實現(xiàn)
由于Spark提供了豐富的接口,包括Java、Python、Scala語言的API和內建的程序庫。Spark可以與其他大數(shù)據(jù)工具配合使用,運行在Hadoop集群上[4]。由于本系統(tǒng)后臺開發(fā)語言采用的是Java語言,所以首先需要在程序中引入Java的Spark相關jar包,基于Spark MLlib協(xié)同過濾推薦系統(tǒng)的數(shù)據(jù)集要以用戶信息、農作物種子產品信息和用戶-產品評分為依托,創(chuàng)建一個JavaSparkContext(Spark容器),然后將用戶評分表中的數(shù)據(jù)轉化為一個String類型的JavaRDD,通過對JavaRDD進行轉化操作用Rating的格式包裝,此時JavaRDD變成Rating類型,調用ALS(最小交替二乘)的訓練函數(shù)。ALS的訓練函數(shù)train包含rdd,rank,iterations,lambda四個參數(shù):(1)rdd為數(shù)據(jù)集。(2)rank表示ALS模型中因子個數(shù),也就是將稀疏矩陣轉變?yōu)閮蓚€低階矩陣隱含特征個數(shù)。因子個數(shù)影響訓練效果和系統(tǒng)開銷,二者為反比,合理取值為10~200,需要在實踐中調節(jié)參數(shù),選擇合理的一個。(3)iterations表示運行時迭代次數(shù),ALS每次迭代降低評級矩陣的重建誤差,一般少數(shù)次迭代就可以收斂為一個合理的模型。(4)Lambda用于控制模型的正則化過程,從而控制過擬合情況,該參數(shù)要根據(jù)實際數(shù)據(jù)的特征、大小和稀疏程度來確定。在本項目中我們將rank、iterations、lambda參數(shù)的值依次確定為100,15,0.01。通過訓練模型得到一個MatrixFactoriaztionModel(用戶對所有物品的評分)。MatrixFactoriaztionModel中有很多方法,可以預估特定用戶對特定物品的評分,也可以將用戶對物品的評分以倒序形式輸出,從而得到推薦列表。
本文采用Spark技術實現(xiàn)了農業(yè)信息移動服務系統(tǒng)的推薦子系統(tǒng),可以有效提高系統(tǒng)的計算速度,進行物品推薦,能夠幫助農戶在眾多可選項中發(fā)現(xiàn)新物品,做出更好的選擇,進而對農業(yè)發(fā)展起到積極的作用。
[1] 國務院.國務院關于積極推進“互聯(lián)網+”行動的指導意見[R]. 中華人民共和國國務院公報, 2015(20):20-22.
[2] 徐雯,高建華.基于Spring MVC及MyBatis的Web應用框架研究[J]. 微型電腦應用, 2012, 28(7):1-4.
[3] 楊志偉. 基于Spark平臺推薦系統(tǒng)研究[D]. 北京:中國科學技術大學,2015.
[4] 黃潔,夏俊鸞,劉旭暉,等.Spark大數(shù)據(jù)處理技術[M].北京:電子工業(yè)出版社,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
全國工程專業(yè)學位研究生教育自選課題(2014-JY-106 );國家民委科研項目(14DLZ012)。
姜楠(1964-),女,山東龍口人,教授,主要從事信息安全研究。
TP39
A