基於知識圖譜的職位推薦系統
攜手創作,共同成長!這是我參與「掘金日新計劃 · 8 月更文挑戰」的第6天,點選檢視活動詳情
需求分析
為解決當今畢業生求職的問題,基於Neo4j圖資料庫的職位推薦系統把知識圖譜的概念應用到畢業生尋找適合自己職位的過程中,令畢業生在大量的職位資訊中快速準確的找到適合自己的職位,本專案推薦流程如圖所示。
圖5-1 推薦流程
本專案的服務物件是高校畢業生,即求職者,主要的業務是登入系統,然後填寫自己的簡歷資訊然後得到適合自己的崗位推薦。本系統主要的功能需求如下:
(1)登入、註冊系統
使用者可以以“遊客”身份訪問系統,但是當用戶檢視使用者頁面時,會檢測使用者是否登入,如果未登入,將自動跳轉至登入頁面,若是未註冊可以點選註冊按鈕進行註冊,註冊成功後會跳轉至登入頁面,再完成登入即可檢視使用者頁面。
(2)瀏覽熱門職位
系統首頁應該展示被使用者評價次數最多的職位,使用者可以進行瀏覽參考。
(3)檢視推薦職位
同樣系統首頁需要展示為使用者推薦的職位,根據使用者的個人細膩、簡歷資訊以及求職意向計算產生匹配的職位列表反饋給使用者。
(4)搜尋相關職位
系統需要為使用者提供搜尋功能,使用者可以根據自己的興趣去搜索相關的職位進行檢視。
(5)檢視職位具體資訊
使用者通過以上職位列表點選自己感興趣的職位,可以跳轉到這個職位詳情頁面,可以檢視到該職位的工作地點、薪資、工作職責以及職位要求等詳細的資訊。
(6)檢視職位評論列表
每一個職位都對應有自己的評論列表,可以檢視其他使用者對於該職位的評價,通過其他使用者對該職位的評價也可以更加客觀全面的去了解這個職位。
(6)檢視、修改個人簡歷資訊
該頁面展示使用者個人基本資訊、院校資訊、求職意向以及使用者自我介紹四個部分,基本資訊包括真實名稱、性別、年齡;院校資訊包括學校名稱、畢業時間以及主修專業;求職意向包括工作地點、工作崗位、期望薪資。
開發環境
本系統開發環境如下:
作業系統
Windows 10(專業版)
CPU
i5-8265U 1.80 GHz
記憶體
8.00GB
Python
3.9.0
Neo4j
3.5.20
MySQL
5.7.17
Django
4.0.3
VUE
2.0
系統架構設計
本系統系統的基本架構如圖5-2所示,主要基於Django的MVC模式進行業務開發,即 Model(模型)+ View(檢視)+ Controller(控制器),MVC模式主要包括表示表示層、邏輯層和資料層。
圖5-2 系統基本架構
表示層主要是用來與使用者進行互動,進行頁面展示。本系統前端是基於 Vue構建的專案,同時使用 Vant-UI 框架中的元件來搭建整體頁面, Vant-UI是一套輕量、可靠的移動端元件庫。
邏輯層主要實現業務邏輯操作以及核心的推薦演算法流程。本系統的後端使用Django框架進行搭建,Django是一個由python編寫的Web應用框架,具有強化的資料管理功能以及後臺管理功能。業務邏輯操作主要處理前端傳送的請求,例如查詢熱門推薦、職位的具體資訊、職位的評論資訊以及使用者登入等。
資料層是整個推薦系統的根基,採用Neo4j這一圖資料庫進行職位知識圖譜的儲存,而使用者的基本資訊、職位的詳細資訊、評論資訊都儲存在MySQL資料庫中,同時將計算所得的推薦列表暫存在Redis中,本專案中註冊時驗證碼的功能也同樣使用了Redis,將隨機生成的驗證碼存入Redis資料庫中並且設定刪除時間。
資料庫設計
本文在第三章知識圖譜的構建已經詳細的闡述和完成了Neo4j資料庫的設計,並將其作為推薦系統的主要資訊來源,所以這裡主要介紹關係資料庫MySQL的設計。
關係資料庫設計
本職位推薦系統資料庫的實體關係用E-R圖表示如圖5-3所示:
圖5-3 E-R圖
系統實現
本系統包括系統首頁、熱門職位頁面、推薦職位頁面、職位搜尋頁面、職位詳情介面、個人頁面、簡歷資訊頁面、登入頁面以及註冊頁面。圖5-4是系統首頁,由輪播圖、熱門推薦列表以及推薦列表組成。
圖5-4 系統首頁
圖5-5是職位詳情頁面,使用者通過點選職位可以跳轉到職位詳情頁面,該頁面顯示職位公司圖示、職位地點、職位評分、工作職責以及職位要求等資訊。
圖5-5 職位詳情頁面
圖5-7是職位搜尋介面,使用者通過搜尋框輸入自己想查詢的職位資訊,可以進行分頁進行檢視所有相關的職位資訊。
圖5-6 職位搜尋頁面
圖5-7是個人介面,包括個人資訊展示、個人資訊的修改以及退出登入。圖5-8是使用者個人資訊的修改介面,使用者當用戶未登陸時,直接會跳轉至登陸介面如圖5-9,未註冊使用者可以跳轉至註冊頁面圖5-10,註冊介面實現了驗證碼傳送,採取直接顯示在頁面上方的方式展示驗證碼的方式。
圖5-7 個人頁面