李柯諭,何明昌,吳 丹,高利新,王陳培
(溫州大學數(shù)理學院,浙江 溫州 325035)
目前大學生社團規(guī)模激增,加大了社團管理的難度,為此,有部分高校開發(fā)了高校社團系統(tǒng)。高校社團系統(tǒng)的開發(fā)并不簡單,設計語義分析、算法[1]以及系統(tǒng)軟硬件環(huán)境的搭建。目前許多已有系統(tǒng)基本上是網頁版,在移動設備上使用往往十分不便。
本文基于協(xié)同過濾算法,開發(fā)了移動版高校社團系統(tǒng),來提升社團工作效率。
PHP 語言是目前最流行的編程語言,并且具有開源性、數(shù)據(jù)庫連接的廣泛性等優(yōu)點,上手容易,在補丁漏洞升級過程中,核心部分植入簡單易行,且速度快[2],與Java、Python 等語言進行對比之后,我們選擇采用PHP進行后臺開發(fā)。
為實現(xiàn)高校社團組織工作交流、文件上傳下載等功能,系統(tǒng)采用Okhttp 框架,同時為增加功能多樣化,系統(tǒng)預留了功能擴增接口;考慮到安全性和便捷性,APP 采用Ubuntu GNU/Linux 操作系統(tǒng),在登錄時采用JWT Token 進行身份驗證,并對重要的數(shù)據(jù)進行MD5 加密存儲;考慮到高校社團數(shù)量及使用人員較多,采用CDN,以保障服務器流暢。
Android 系統(tǒng)基于Linux 系統(tǒng),其具有代碼開源的特點,兼容性也比較好,是目前在移動應用使用最多的系統(tǒng)。通過Android系統(tǒng),前端采用MVP三層架構體系,使Controller 和View 做到完全解耦,避免View具有過于復雜的業(yè)務邏輯,減少Activity或Fragment的代碼數(shù)量,這樣做可以通過創(chuàng)建接口的方式增加系統(tǒng)靈活性,降低開發(fā)和維護的成本[3]。
LAMP 架構有著開源、大量的額外組件和擴展功能模塊、代碼簡潔易于開發(fā)、方便易用和安全穩(wěn)定等優(yōu)點,LAMP框架的后端采用MySQL數(shù)據(jù)庫服務,可以存儲各種賬號信息、產品信息、客戶資料、業(yè)務數(shù)據(jù)等,其他程序可以通過SQL 語句進行查詢、更改,同時還采用PHP 語言解釋動態(tài)網頁文件,提供Web 應用程序開發(fā)和運行環(huán)境[4],所以我們后臺采用LAMP 架構,考慮到讀寫效率和線程安全,數(shù)據(jù)存儲方面采用Redis非關系型數(shù)據(jù)庫,這樣就可以很好彌補存儲數(shù)據(jù)讀取數(shù)據(jù)慢的不足,另外我們系統(tǒng)還引入華為云開放云存儲服務,以保證大量的上傳和下載視頻等文件。
在系統(tǒng)后臺數(shù)據(jù)處理方面,主要涉及的數(shù)據(jù)表有用戶個人信息表、社團信息表、用戶與社團關系表。
⑴用戶個人信息表主要記錄用戶姓名、ID、賬號密碼等字段,如表1所示。
表1 用戶個人信息表(organization_user)
⑵ 社團信息表主要記錄社團名稱,類型等,如表2所示。
表2 社團信息表(organization_organization)
⑶用戶與社團關系表主要記錄用戶是否加入社團、加入的社團id等,如表3所示。
在除上述的三個主要的數(shù)據(jù)表之外,系統(tǒng)還設計了用戶好友表、社團聯(lián)結表等相關表格。
從使用者角度考慮,系統(tǒng)將用戶群體分為四類,普通用戶,注冊用戶,社團管理員,系統(tǒng)管理員。普通用戶可以注冊,瀏覽公眾信息,可以注冊成為注冊用戶;注冊用戶可以登錄,參加、瀏覽相關社團活動,加入、創(chuàng)建社團,與其他用戶進行社交行為等;社團管理員可以發(fā)布、管理社團活動,審批和管理管理社員;系統(tǒng)管理員可以對申請的社團進行政治、法律審查,對所有注冊的用戶、社團進行管理與維護。
系統(tǒng)平臺主要分為社團、首頁、個人(我的)三個模塊。
⑴社團
主要這社團的一些信息。普通用戶可以瀏覽相關信息,系統(tǒng)會根據(jù)用戶的瀏覽記錄,通過協(xié)同過濾算法推薦相關的社團,并指導其注冊加入相關社團;
⑵首頁
有加入社團的活動推薦、搜索框,搜索社團、活動及聯(lián)系人等功能。用戶找到自己心儀的社團的時候,可以點進該社團界面進行申請加入社團。加入社團后:會顯示社團內的活動,有社團歷史活動,正在進行的社團活動,以及未進行的社團活動,同時顯示社團內成員及成員狀態(tài)。用戶加入某個社團后,可與參與該社團的相關活動、打卡、發(fā)表與社團相關的消息等。
⑶我的
主要是個人信息??梢圆榭磦€人及修改信息、社交列表、查看好友聯(lián)系人基礎信息及狀態(tài);加入社團的活動推薦,同時有搜索框,點進搜索框搜索相關社團、活動及聯(lián)系人。另外有便捷系統(tǒng)設置及退出賬號,具體展示如圖1所示。
圖1 APP界面功能
⑴JSON數(shù)據(jù)交換格式
目前流行的數(shù)據(jù)交換格式有XML,JSON,YAML等格式,JSON 格式易于閱讀和編寫,同時也易于機器解析和生成,是一種輕量級的數(shù)據(jù)交換格式,與XML 或HTML 片段相比,JSON 提供了更好的簡單性和靈活性,因此本系統(tǒng)采用JSON 格式進行前臺與后臺數(shù)據(jù)交換。
⑵注冊及實名認證
在注冊填寫信息時,姓名、性別、學校學院、學號、班級、電話號碼等是必填字段,郵箱、住址等是選填信息;在核對用戶注冊信息格式無誤后,通過與已經注冊的用戶數(shù)據(jù)進行對比,若關鍵字無重復則可進行下一步驗證,否則顯示相關信息重復,注冊失敗。
token 認證是在請求中發(fā)送token 而不是發(fā)送cookie,這樣能夠防止CSRF(跨站請求偽造),就算是在APP 客戶端使用cookie 存儲token,cookie 也僅僅是一個存儲機制而不是用于認證,這樣就不會將信息存儲在Session 中,減少了對session 的操作,token 是有時效的,一段時間之后用戶需要重新驗證[5]。基于token 這樣的特點,系統(tǒng)在實名認證方面,采取基于token 的認證方式,即用戶不小心退出時,短時間內再次登錄不需要再次輸入賬號密碼,這樣保障了用戶的便利性和體驗感,同時提高了安全性和擴展性。
⑶基于協(xié)同過濾的用戶推薦
用戶注冊時,可以綁定QQ 號或者微信號來進行獲取數(shù)據(jù),這樣就可以減少一些信息錄入,減輕用戶的工作量,同時通過用戶在QQ 號或微信號的一些標簽推測出用戶的喜好,利用用戶選擇的標簽來推薦其喜歡的社團。
為了提高推薦的準確性,采取基于用戶的協(xié)同過濾算法(User-CF)和基于物品的協(xié)同過濾算法(Item-CF)。User-CF 算法是基于假設“用戶會喜歡與他興趣相投的其他用戶喜歡的項目”,從與用戶(U)有較高相似度的用戶集合(C)喜歡的社團與活動中,選取用戶(U)未采取任何行動的社團與活動,推薦給用戶(U)。
而Item-CF 算法基于假設“用戶會喜歡與他過往喜歡的項目相似的項目”,從與用戶(U)過往喜歡的社團與活動有較高相似度的社團與活動集合(W)中,選取用戶(U)未采取任何行動的社團與活動,推薦給用戶(U);兩者的基礎思想是相似的,這里只對如何實現(xiàn)基于物品的協(xié)同過濾算法(Item-CF)進行較為詳細的解釋。
創(chuàng)建社團與活動時采取的是標簽,借用共同標簽占總體標簽的比例來計算相似度,這里采取Jaccard公式,公式為:
主要思想是去重的jaccard系數(shù),算法如下。
①先定義A∩B函數(shù):
② 對兩組數(shù)據(jù)進行逐一比較,在相同時進行數(shù)量增加:
③返回相同的個數(shù):
④再定義A∪B函數(shù):
⑤對兩組數(shù)據(jù)進行逐一比較,在取得不重復的時候進行數(shù)量增加:
⑥返回不重復的個數(shù):
⑦計算|A∩B|/|A∪B|函數(shù):
⑧判斷數(shù)組是否為0,輸入數(shù)組的值:
⑨最后返回值:
為降低熱門活動和熱門社團對于推薦的準確率的影響,在計算用戶相似度時,系統(tǒng)采取加入懲罰因子的解決方案,將項目出現(xiàn)次數(shù)的對數(shù)取倒數(shù)作為懲罰因子,其中,N(i)表示項目i 出現(xiàn)的次數(shù);i 表示用戶u 和v 共同感興趣的活動;分母則表示用戶u 和用戶v有所行動的社團和活動的集合長度,公式如下:
本文基于協(xié)同過濾算法開發(fā)了移動版高校社團系統(tǒng)。師生通過手機登錄該系統(tǒng)進行各種日常、學習活動??梢噪S時隨地辦公,發(fā)布及參加相關活動,進行社團規(guī)劃和活動策劃。系統(tǒng)還為大學生參加各類社團提供了學習、交流、鍛煉的機會,以滿足學生個性化發(fā)展的需要。