一、項目介紹:
本推薦系統(tǒng)采用的是分層模型設(shè)計思想,第一層為前端頁面模型設(shè)計,注重為實現(xiàn)頁面的展示效果,主用的編程語言為JavaScript,和前端主流框架bootstrap。
第二層為后端模型設(shè)計,編程語言選了簡單易懂的python,用Django作為后端框架進行開發(fā),此框架是python web系統(tǒng)開發(fā)的首選框架,簡單易用。
第三層為算法的設(shè)計與實現(xiàn)的邏輯,用協(xié)同過濾算法來實現(xiàn),第四層為數(shù)據(jù)庫表的設(shè)計,用SQLite數(shù)據(jù)庫。
本系統(tǒng)web端的功能模塊,主要實現(xiàn)影片顯示、影片分類顯示、熱門影片排序顯示、收藏影片排序顯示、時間排序顯示、評分排序顯示、算法推薦、影片搜索、影片信息管理等功能,并進行數(shù)據(jù)庫的詳細設(shè)計,完成設(shè)計階段的各項功能,并對此系統(tǒng)進行功能測試,最后,系統(tǒng)進行相關(guān)的實際應(yīng)用操作,通過系統(tǒng)的使用,用戶進入電影推薦系統(tǒng),此系統(tǒng)可以根據(jù)用戶對電影所打的標簽行為,給用戶推薦用戶所感興趣的電影,準確率在百分之75左右,用戶可以查看信息,觀看影片,給影片評分等操作,本系統(tǒng)基本上完成了預(yù)期的基本功能。
二、技術(shù)介紹:
前端: bootstrap3 + js+ jquery
后端: django 2.2.1 + ?django--rest-framework ?(MVC框架)
數(shù)據(jù)庫:?MySQL/sqlite3
算法:協(xié)同過濾推薦算法
豆瓣數(shù)據(jù)集
通過爬蟲去抓取豆瓣電影網(wǎng)站的電影信息,帶有圖片
id,title ,image-link ,country ,years ,director-description,leader,star ,
description,alltags,imdb,language,time-length
電影數(shù)量: 3000
三、功能介紹:
電影展示,標簽分類,詳情介紹,電影搜索
用戶的登錄,注冊,修改信息
用戶對電影的打分,收藏,評論
基于user和Item的協(xié)同過濾推薦算法
后臺管理系統(tǒng)
四、算法簡介
1、冷啟動問題解決
推薦值: 相似度*評分 根據(jù)用戶點贊過得商品來尋找相似度推薦。計算每個點贊過的物品和所有未點贊物品之間的得分。得分=相似度*打分值分越高表示越相似。 然后返回結(jié)果。
2、項目文件介紹
media/ 靜態(tài)文件存放處,圖片
movie/ Django的默認app,負責(zé)設(shè)置的配置還有url路由,部署等功能
static/ css文件和js文件的存放處
user/ 主app,程序的所有代碼基本都在這下面 user/migrations為自動生成的數(shù)據(jù)庫遷移文件 user/templates為前端頁面模板文件, user/admins.py 為管理員后臺代碼 user/forms.py為前端表單代碼 user/models.py為數(shù)據(jù)庫orm模型 user/serializers.py為restful文件,不用管。 user/urls為路由注冊文件。 user/views為負責(zé)處理前端請求和與后端數(shù)據(jù)庫交互的模塊,也就是controller模塊。
cache_keys.py為緩存的key值名稱存放文件,不用管。
db.sqlite3數(shù)據(jù)庫文件
douban_crawler.py 豆瓣爬蟲文件
manage.py 運行的主程序,從這里啟動
Populate movies script.py 填充電影數(shù)據(jù)到數(shù)據(jù)庫中
Populate user rate.py 隨機生成用戶評分
recommend_movies.py為推薦算法的部分
model: recommend模型存放的位置
3、后臺管理
通過創(chuàng)建管理員進入后臺,已經(jīng)自帶管理員用戶名和密碼均為admins。
同時可以通過python manage.py createsuperuser 在終端交互輸入用戶名和密碼即可
創(chuàng)建超級管理員, (密碼輸入時終端暫時顯示)
進入后臺: 127.0.0.1:8000/admin
五、各功能代碼位置介紹:
標簽分類: 數(shù)據(jù)庫設(shè)計Movie通過外鍵關(guān)聯(lián)Tags表,
電影搜索: 在views.py search方法中。通過電影名,導(dǎo)演名,介紹去進行關(guān)鍵字搜索。
后臺管理: 通過django自帶的admin后臺加插件 在admins.py中注冊數(shù)據(jù)庫模型
兩種推薦算法: 都在recommend_movies.py文件中。
推薦顯示的代碼:
前端: items.html
后端: views.py中 388行 user_recommend 傳遞數(shù)據(jù)到前端template
算法:recommend_movies.py。
六、依賴包和框架版本
(venv) E:\movie>pip list
Package ????????????Version
aiohttp ????????????3.7.4.
asgiref ????????????3.3.4
async-timeout ??????3.0.1
attrs ??????????????21.2.0
beautifulsoup4 ?????4.9.3
bs4 ????????????????0.0.1
certifi ????????????2020.12.5
chardet ????????????4.0.0
crawler ????????????0.0.2
Django ?????????????2.2.10
django-simpleui ????2.1
djangorestframework 3.9.1
greenlet ???????????1.1.0
idna ???????????????2.10
idna-ssl ???????????1.1.0
importlib-metadata ?4.0.1
lxml ???????????????4.6.3
multidict ??????????5.1.0
七、安裝運行方法
1.解壓項目,解壓的文件夾目錄下有movie,用pycharm打開movie目錄。
2.在pycharm配置python解釋器,3.7及以下都可以。可以通過conda或者其他的虛擬環(huán)境來安裝。
3.打開終端 輸入pip install -r requirements.txt 若提示無pip。去下載get-pip.py 運行python get-pip.py
4.安裝成功后, 使用pip list 查看已經(jīng)安裝好的package,和requirements.txt中的進行對比,確認安裝無誤。
有兩種運行方法:
1.通過命令行/cmd運行: python manage.py runserver
2.通過Pycharm專業(yè)版配置運行,右上角選中movie,一鍵運行,第一次運行時間可能比較長,因為需要將item_recommend的相似矩陣計算出來。將模型保存到本地。