两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種職位推薦方法

文檔序號:10535091閱讀:943來源:國知局
一種職位推薦方法
【專利摘要】本發(fā)明公開了一種職位推薦方法,屬于推薦系統(tǒng)技術領域,在職位推薦過程中可以避免馬太效應,也可以避免冷啟動問題,同時能夠很好地利用群體實現(xiàn)個性化推薦。該職位推薦方法,包括:獲取用戶數(shù)據(jù)和職位數(shù)據(jù);建立用戶偏好向量空間模型、職位向量空間模型;根據(jù)用戶偏好模型和職位模型進行基于內容的多域評分值計算獲得職位的第一評分值,并排序獲得職位集;若一職位有投遞記錄且屬于職位集,則根據(jù)用戶偏好模型和職位數(shù)據(jù)進行該職位基于用戶背景信息相似度的評分值計算獲得職位的第二評分值;根據(jù)職位的第一評分值和第二評分值獲得該職位的混合評分值,并進行排序獲得推薦列表。
【專利說明】
一種職位推薦方法
技術領域
[0001] 本發(fā)明涉及推薦系統(tǒng)技術領域,具體的說,涉及一種職位推薦方法。
【背景技術】
[0002] 互聯(lián)網的發(fā)展使人們逐漸從信息匱乏時代進入了信息過載時代,信息及其傳播形 式變得多樣化,用戶對信息的需求變得越來越多元化和個性化。而推薦系統(tǒng)就是聯(lián)系用戶 和信息的工具,一方面幫助用戶找到有價值的信息,另一方面也讓信息及時地展現(xiàn)在對它 感興趣的用戶面前。推薦系統(tǒng)從大體上可分為個性化推薦和非個性化推薦。
[0003] 個性化推薦系統(tǒng),顧名思義,就是給用戶提供個性化信息的推薦系統(tǒng),它的最大特 點就是個性化,即根據(jù)用戶的自身需求、興趣、行為等,將用戶感興趣的東西推薦給用戶,從 而為不同對象提供不同服務或內容。目前,使用的比較廣泛的個性化推薦技術主要是協(xié)同 過濾推薦和基于內容的推薦。在一些系統(tǒng)中也將不同的推薦算法混合使用,來產生更好的 推薦。
[0004] 作為個性化推薦系統(tǒng)的應用,職位推薦是通過網絡平臺獲取的大量的個人簡歷和 職位信息,然后根據(jù)這些信息向求職者推薦職位信息,向用人單位推薦個人簡歷,以此將求 職者和用人單位聯(lián)系起來,幫助求職者快速地找到適合的工作,幫助用人單位快速找到符 合工作要求的員工。
[0005] 傳統(tǒng)的職位推薦系統(tǒng)無法在利用群體實現(xiàn)個性化推薦的同時兼顧解決馬太效應 或數(shù)據(jù)稀疏問題。

【發(fā)明內容】

[0006] 本發(fā)明的目的在于提供一種職位推薦方法,在職位推薦過程中可以避免馬太效 應,也可以避免冷啟動問題,同時能夠很好地利用群體實現(xiàn)個性化推薦。
[0007] 本發(fā)明提供一種職位推薦方法,該方法包括:
[0008] 獲取用戶數(shù)據(jù)和職位數(shù)據(jù);
[0009] 根據(jù)用戶數(shù)據(jù)建立用戶偏好向量空間模型,根據(jù)職位數(shù)據(jù)建立職位向量空間模 型,用戶偏好模型中的用戶興趣與職位模型中的相關職位屬性相對應;
[0010] 根據(jù)用戶偏好模型和職位模型進行基于內容的多域評分值計算獲得職位的第一 評分值,并根據(jù)第一評分值對職位進行排序獲得職位集;
[0011] 若一職位有投遞記錄且屬于職位集,則根據(jù)用戶偏好模型和用戶數(shù)據(jù)進行該職位 基于用戶背景信息相似度的評分值計算獲得職位的第二評分值;
[0012] 根據(jù)職位的第一評分值和第二評分值獲得該職位的混合評分值,并根據(jù)混合評分 值對職位進行排序獲得推薦列表。
[0013] 所述建立的用戶偏好向量空間模型User_Profile為:
[0014] User-Prof ile = {(ki,wi),(k2,W2)... (kn,wn)};
[0015] 其中kn為用戶的興趣項,wn為興趣項的權重。
[0016] 所述建立的職位向量空間模型Recruit_Modle為:
[0017] Recruit_Modle = {(li,vi),(h,V2) ? ? ? (ln,Vn)};
[0018] 其中,ln為職位屬性,Vn為職位屬性的權值。
[0019] 在建立用戶偏好模型與職位模型的步驟中包括:
[0020] 將用戶偏好向量空間模型分為n個不同的域,每一個域對應一個興趣項,將職位向 量空間模型分為n個不同的域,每一個域對應一個職位屬性;
[0021 ]在所述獲得職位集的步驟中包括:
[0022]通過下述表達式計算獲得第一評分值Scores:
[0024] 其中Wi是用戶偏好模型的第i個域的權重,Vi是職位模型第i個域的權重,Sim(li, 為用戶偏好模型與職位模型第i個域的相似度;
[0025] 根據(jù)所述第一評分值對職位進行排序,提取排名的前N個職位組成職位集。
[0026] 通過下述表達式計算獲得用戶偏好模型與職位模型第i個域的相似度:
[0028] 其中wP'是用戶偏好模型中第i個域的第p個詞的權值,Vp'是職位模型中第i個域的 第P個詞的權值,若沒有某個詞,那么這個詞的權值為〇。
[0029] 所述建立的用戶偏好向量空間模型為無嵌套的文檔,在所述獲得職位的第二評分 值的步驟中包括:
[0030] 基于職位數(shù)據(jù)選取有投遞記錄的目標職位;
[0031 ]判斷目標職位是否屬于職位集;
[0032]若屬于,則根據(jù)下述表達式計算第二評分值Scoreub:
[0034]其中,Ua表示職位已有的投遞記錄中的所有用戶集合,u。表示用戶User,仏"表示職 位的所有投遞用戶總數(shù),sim(u,u。)為職位的投遞用戶u與用戶User的相似度值。
[0035] 通過下述表達式計算獲得職位的投遞用戶u與用戶User的相似度:
[0037] 其中^#是用戶User的第q個詞項的權值,wuq是投遞記錄中的用戶u的第q個詞項 的權值。
[0038] 在所述獲得職位的混合評分值的步驟中包括:
[0039] 根據(jù)下述表達式獲取職位的熱度因子y:
[0041]其中為職位的投遞用戶總數(shù),N代表當前最熱門職位的投遞用戶數(shù);
[0042]根據(jù)下述表達式獲取時間因子e :
[0043] e = e^DP-D^n〇i
[0044]其中DP為職位的發(fā)布日期,Di為用戶的登錄日期;
[0045] 根據(jù)下述表達式計算混合評分值Scoreh:
[0046] Scoreh=Scorecb*Scoreub*ye;
[0047] 其中Scorecb為第一評分值,Scoreub為第二評分值。
[0048] 所述建立的用戶偏好向量空間模型User_Profile為:
[0049] User_Profile = {(ki,wi),(k2,W2),(k3,W3),(k4,W4),(k5,W5)};
[0050] 其中ki為用戶的興趣項"期望領域",W1為它的權重,k2為用戶的興趣項"期望地 ±或",w 2為它的權重,k3為用戶的"家鄉(xiāng)",W3為它的權重,k4為用戶所學的"專業(yè)",W4為"學歷或 學位"。
[0051 ] 所述建立的職位向量空間模型Recruit_Modle為:
[0052] Recruit_Modle = {(li,vi),(h,V2),(h,V3),(l4,V4)};
[0053] 其中1:為職位屬性"職位類別",12為職位屬性"工作地",13為職位屬性"職位名 稱",14為職位屬性"學歷要求"。
[0054] 本發(fā)明實施例提供的職位推薦方法,由基于內容的多域查詢評分算法和基于用戶 背景信息相似度的評分算法組成,針對多域查詢評分算法和基于用戶背景信息相似度的評 分算法在單獨應用時的局限性,將二者加以混合,可以達到互補的效果,在職位推薦過程中 可以避免馬太效應,也可以避免冷啟動問題,同時能夠很好地利用群體實現(xiàn)個性化推薦。并 且,在職位推薦算法中引入熱度因子和時間因子,進一步優(yōu)化推薦結果。同時,本發(fā)明還提 供了對應職位推薦方法的【具體實施方式】,即提出一種面向用戶的混合推薦系統(tǒng)架構,從工 程角度對職位推薦進行了優(yōu)化,通過將Lucene用于職位推薦系統(tǒng)中,來優(yōu)化推薦結果。并且 針對Lucene的幾點不足提出了的相應的改進。
[0055] 本發(fā)明的其它特征和優(yōu)點將在隨后的說明書中闡述,并且,部分的從說明書中變 得顯而易見,或者通過實施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點可通過在說明書、權利 要求書以及附圖中所特別指出的結構來實現(xiàn)和獲得。
【附圖說明】
[0056] 為了更清楚的說明本發(fā)明實施例中的技術方案,下面將對實施例描述中所需要的 附圖做簡單的介紹:
[0057] 圖1是本發(fā)明實施例提供的職位推薦方法的流程示意圖;
[0058] 圖2是本發(fā)明實施例提供的職位推薦方法的應用流程示意圖;
[0059] 圖3是本發(fā)明實施例提供的時間因子與職位發(fā)布日期關系曲線圖;
[0060] 圖4是本發(fā)明實施例提供的時間因子與職位發(fā)布日期改進關系曲線圖;
[0061] 圖5是本發(fā)明實施例提供的基于信息檢索的混合推薦總體架構示意圖。
【具體實施方式】
[0062] 以下將結合附圖及實施例來詳細說明本發(fā)明的實施方式,借此對本發(fā)明如何應用 技術手段來解決技術問題,并達成技術效果的實現(xiàn)過程能充分理解并據(jù)以實施。需要說明 的是,只要不構成沖突,本發(fā)明中的各個實施例以及各實施例中的各個特征可以相互結合, 所形成的技術方案均在本發(fā)明的保護范圍之內。
[0063] 本發(fā)明實施例提供一種職位推薦方法,該方法采用基于內容的推薦和協(xié)同過濾推 薦的混合推薦算法,以彌補單一推薦方法的不足?;旌贤扑]算法有三種基本設計思路:整體 式、并行式和流水線式。本發(fā)明提供的職位推薦算法采用流水線式的混合設計,是一種基于 內容與協(xié)同的混合推薦方法,下面將詳細地介紹算法的基本思想及流程。
[0064] 如圖1和圖2所示,本發(fā)明提供的職位推薦方法包括:步驟101至步驟104。其中在步 驟101中,獲取用戶數(shù)據(jù)和職位數(shù)據(jù)。本發(fā)明實施例中,用戶數(shù)據(jù)主要包括有兩種:歷史行為 數(shù)據(jù)和特征描述數(shù)據(jù)。歷史行為數(shù)據(jù)是用戶在訪問系統(tǒng)的過程中與相關項目頁面進行交互 所留下的行為數(shù)據(jù),例如用戶在求職網站瀏覽某個職位、投遞某個職位的行為屬于用戶歷 史行為數(shù)據(jù)。特征描述數(shù)據(jù)包括人口特征數(shù)據(jù)和用戶興趣,人口特征數(shù)據(jù)主要包括性別、年 齡、所在地等,用戶興趣利用關鍵詞以及用戶對關鍵詞的偏愛程度來描述,其中偏愛程度的 值可以由用戶指定,也可以由用戶的歷史行為數(shù)據(jù)推測。而職位數(shù)據(jù)則包括職位的特征信 息,例如學歷要求、工作地點以及職位類別等等,還包括職位的投遞記錄。
[0065] 在步驟102中,根據(jù)用戶數(shù)據(jù)建立用戶偏好向量空間模型,根據(jù)職位數(shù)據(jù)建立職位 向量空間模型。用戶偏好模型中的用戶興趣與職位模型中的相關職位屬性相對應。
[0066] 向量空間模型,也叫做線性空間,通過利用向量空間的數(shù)據(jù)表示和幾何運算解決 檢索中的數(shù)據(jù)表示和相似度度量等問題。是目前最為成熟和應用最為廣泛的文本表示模型 之一。該模型及其相關技術,包括項的選擇、加權策略,以及采用相關反饋進行查詢優(yōu)化等 技術,在文本分類、自動索引、信息檢索等許多領域得到了廣泛的應用。通常,文檔用向量表 示,向量的每一個屬性代表一個特定的詞,而每個屬性的值代表在文檔中的相對重要性。一 系列文檔在同一向量空間中的表示被稱為向量空間模型。
[0067]在本發(fā)明實施例構建的向量空間模型中,采用TF-IDF轉換形式來描述每個屬性的 權值。TF-IDF是信息檢索領域的成熟技術,代表詞頻(term frequency,TF)和倒排文檔頻率 (inverse document frequency,IDF)。文本文檔可以通過TF-IDF轉換成多維歐幾里得空間 中的向量。在文檔中每一個詞都被定義為該文檔的一個維度,給定文檔在每維的坐標(即每 個詞的值)由兩個子量的乘積得出:詞頻和倒排文檔頻率,即TF*IDF。詞頻(TF)描述某個詞 在一篇文章中出現(xiàn)的頻繁程度:
[0070]倒排文檔頻率(IDF)是組合了詞頻后的第二個衡量值,旨在降低所有文檔中幾乎 都會出現(xiàn)的關鍵詞的權重:
[0072] 詞t的組合TF-IDF權值就是上述兩個子量的乘積:
[0073] TF_IDF(t,d)=TF(t,d)*IDF(t)
[0074] 本發(fā)明實施例中,用戶偏好向量空間模型根據(jù)步驟101中獲取的用戶數(shù)據(jù)建立。職 位推薦常用的用戶屬性有:性別、民族、政治面貌、期望領域、期望地域、家鄉(xiāng)所在地、專業(yè)以 及學歷或學位等,在本發(fā)明的一種實施方式中從職位推薦的特性和推薦效率角度考慮,只 從中選擇部分屬性進行建模,其中有一些描述的是基本信息(例如專業(yè)),有一些描述的是 用戶興趣(例如期望領域),但是基本信息與用戶興趣的關聯(lián)程度很大,所以在建模的時候 不加以區(qū)分,統(tǒng)一作為用戶偏好模型中的興趣項。這些屬性有結構化的(如學歷)也有非結 構化的(如專業(yè)),雖然大多數(shù)網站會設定一個"專業(yè)"列表,但數(shù)量太多,而且有些專業(yè)不同 名但是相似的,所以應當作為非結構化屬性來對待。為了統(tǒng)一用戶偏好模型,在建模時,設 每一個用戶都是一個文檔,考慮到用戶每一個興趣項都是具有不同的權重的,所以采用向 量空間模型表示用戶偏好。對于每一個用戶User,其用戶偏好模型為其興趣向量模型表示 為:
[0075] User_Profile = {(ki,wi),(k2,W2) ? ? ? (kn,wn)}
[0076] 其中kn為用戶的興趣項,wn為興趣項的權重。
[0077] 在本發(fā)明的【具體實施方式】中,本步驟所建立的用戶偏好模型分為兩種。一種為分 域后的用戶偏好模型,即設對于每一個用戶User,可以把它看成一個含有嵌套的文檔,對于 每一個用戶User,創(chuàng)建用戶模型的過程中將用戶偏好向量空間模型分為n個不同的域,每一 個域對應一個興趣項,用以在之后的步驟103中進行基于內容的多域評分值計算。
[0078] 另一種為不進行分域的用戶偏好模型,即建立的用戶偏好向量空間模型為無嵌套 的文檔,用以在之后的步驟104中進行基于用戶背景信息相似度的評分值計算。
[0079] 在本發(fā)明的一種實施方式中,用戶偏好模型包括5個興趣項:
[0080] User_Profile = {(ki,wi),(k2,W2),(k3,W3),(k4,W4),(k5,W5)}
[0081] 其中kHf表用戶User的第一個興趣項"期望領域",奶代表它的權重;1?代表用戶 User的第二個興趣項"期望地域",《 2代表它的權重;k3代表用戶User的"家鄉(xiāng)",W3是它的權 重;以此類推,k 4代表用戶所學的"專業(yè)",W4表示"學歷或學位"。
[0082] 而對于每一個興趣項h,又可以根據(jù)分詞規(guī)則分為若干詞,每個詞的權重w'使用 TF-IDF方法來表示。設ki也是一個文檔,其向量空間模型為:
[0083] ki = {(ti,w,i),(t2,w,2) ? ? ? (tj,w,j)}
[0084]其中第j個詞的權值由下式表示:
[0085] w,j = TFj(t,ki) log (Nu/DF(t)+0.01)
[0086] 上式中,w'j表示第j個詞t的權重,TF(t,ki)表示詞t在文檔ki中出現(xiàn)的頻率,仏表 示總的文檔數(shù)(用戶數(shù)),DF(t)表示包含t的文檔數(shù)。
[0087] 進一步的,職位向量空間模型與用戶偏好向量空間模型有一定的對應關系,比如 大部分求職者所青睞的職位總是與他們的專業(yè)、所在地和學歷有一定的關系,但是,要想從 各字段之間尋找交叉關聯(lián)卻是比較困難的,比如我們很難得到某一專業(yè)的人會更加喜歡某 個特定城市的工作,因此,職位模型基本與用戶偏好模型對應建立,以便進行分析,用戶模 型與職位模型各項對應關系如下表1所示。
[0089] 表1
[0090] 根據(jù)獲取的用戶數(shù)據(jù),對于每個職位,在職位向量空間模型中也被看成一個含有 嵌套的文檔。相應的,與分域的用戶偏好模型相同,職位模型也被分為n個域,每一個域對應 一個職位屬性,職位模型Recruit_Modle表示為:
[0091 ] Recruit_Modle = {(li,vi),(h,V2) ? ? ? (ln,Vn)}
[0092] 其中,ln為職位屬性,Vn為職位屬性的權值。
[0093] 職位模型各部分解釋與用戶偏好模型類似,在本發(fā)明的一種實施方式中,職位模 型為Recruit_Modle = {(li,vi),(h,V2),(l3,V3),(l4,V4)},n = 4, li代表"職位類別",h代 表"工作地",13代表"職位名稱",14代表"學歷要求",職位模型與用戶偏好模型分成不同的 域的原因是在于分域可以很直觀地進行推薦解釋,而且便于算法根據(jù)需要人為更改不同興 趣項的權重。
[0094]設ll = {(Sl,V'l),(S2,V'2) ? ? ? (Sj,V'j)}表示職位的第i個屬性,此屬性中第j個詞 的權值用下式表示:
[0095] v'j = TFj(s, li) log(NR/DF(s)+0.01)
[0096] 式中,v'j表示第j個詞s的權重,TFj(s,li)表示詞s在文檔li中出現(xiàn)的頻率,Nr表示 總的文檔數(shù)(職位數(shù)),DF(s)表示包含s的文檔數(shù)。
[0097] 在步驟103中,根據(jù)用戶偏好模型和職位模型進行基于內容的多域評分值計算獲 得職位的第一評分值,并根據(jù)第一評分值對職位進行排序獲得職位集。本步驟中執(zhí)行的是 本發(fā)明提供的混合推薦算法中的基于內容的推薦算法。由于當項目描述信息可以很容易地 提取到的時候,基于內容的推薦算法就是最好的選擇,因為它可以非常直觀的找到可推薦 項目,并且不需要巨大的用戶群體或評分記錄,也就是說,只有一個用戶也可以產生推薦列 表。職位推薦系統(tǒng)最顯著的特點是項目描述信息很全面,用戶與項目的數(shù)據(jù)模型之間匹配 度比較高,在這樣的數(shù)據(jù)條件下,完全可以通過基于內容的推薦來產生一個較為直觀的推 薦列表。本發(fā)明針對職位推薦的特點將使用基于內容的推薦作為評分算法,是一種基于內 容的多域評分算法,用來在產生職位推薦列表前計算職位評分。
[0098] 進一步的,在本步驟計算職位評分的過程中,選用Cosine相似度公式計算相似度。 Cosine相似度(Cosine Similarity)被廣泛應用于計算文檔向量的相似度,通過計算兩個 向量x和y的夾角余弦值來測算相似度T(x,y),Cosine相似度不但體現(xiàn)了向量之間的相似關 系,而且包含了向量內部元素的變化狀況。Cosine相似度從方向上區(qū)分差異,而對絕對的數(shù) 值不敏感,適用于使用用戶對項目評分來區(qū)分用戶興趣的相似度和差異,同時還可以修正 了用戶間可能存在的度量標準不統(tǒng)一的問題,其公式如下:
[0100] 對于每一個用戶User,創(chuàng)建用戶模型的過程中用戶偏好信息被分為n個不同的域, 每一個域對應一個興趣項,其用戶偏好模型為User_Prof ile = {(ki,wi),(k2,W2). . . (kn, wn)}。相應的,職位模型也被分為n個域,職位模型為Recruit_Modle = {(li,vi),(l2,V2)... (ln,Vn)}。分成不同的域的原因是在于分域可以很直觀地進行推薦解釋,而且便于算法根據(jù) 需要人為更改不同興趣項的權重。
[0101] 本步驟具體為通過下述公式計算職位的第一評分值,即職位相對于用戶的基于內 容的多域評分Scored):
[0103]其中wi是用戶的第i個域(即第i個興趣項ki)的權重,ki = {(ti,w'i),(t2,w'2)... (tj,W'j)} di 是職位第i 個域(SP第i個屬性 li)的權重,ll = { (Sl,V'l),(S2,V'2) ? ? ? (Sj,V 、)} 為用戶與職位第i個域的相似度,使用Cosine相似度公式計算,也就是計算 兩個向量W=[w'l,w'2. . .W'j,]和V=[V'1,V'2. . .V'j,]夾角的余弦值,用公式表示如下:
[0105] 其中wP'是用戶偏好模型中第i個域的第P個詞的權值,vP'是職位模型中第i個域的 第P個詞的權值,若沒有某個詞,那么這個詞的權值就為0。
[0106] 在獲得各個職位的第一評分值Scores后對各個職位進行排序,然后提取其中排名 的前N個職位組成職位集。
[0107] 本步驟基于內容的多域評分算法是在基于內容的算法基礎上,對用戶與職位進行 分域求相似度,然后匯總得到職位評分。系統(tǒng)根據(jù)評分大小對職位排序后可以達到推薦職 位的目的。其優(yōu)勢如下:
[0108] 可以避免冷啟動問題和數(shù)據(jù)稀疏問題。因為基于內容的算法的數(shù)據(jù)輸入只需要用 戶偏好模型和職位模型,它可以在沒有任何用戶歷史行為的情況下實現(xiàn)一定程度上的個性 化推薦,達到較好的推薦效果,避免了新用戶及新職位帶來的冷啟動問題,同時在數(shù)據(jù)稀疏 情況下仍然能夠進行個性化推薦。
[0109] 可以避免馬太效應。馬太效應即熱的越熱,在馬太效應下,新的職位很難被推薦。 基于內容的多域評分算法將所有職位一致對待,可以有效避免馬太效應的發(fā)生。
[0110] 可以便于推薦解釋。分域的過程是根據(jù)不同的興趣項的意義進行區(qū)分的,所以系 統(tǒng)可以根據(jù)推薦結果很直觀地進行推薦解釋。
[0111] 可以便于修改不同屬性的權重。因為相似度計算是不同的域分開計算又匯總到一 起的,每個域都有各自的權重,這些權重決定了每個興趣項的重要程度,所以修改權重的過 程也是優(yōu)化推薦效果的過程。
[0112] 即便基于內容的多域評分算法有以上幾方面優(yōu)勢,但是它也存在局限,比如它雖 然在某種程度上實現(xiàn)了個性化推薦,但是這種個性化是表面上的,畢竟用戶偏好模型中的 興趣項是固定的,而且有一些屬性只是用戶的基本信息,用戶的偏好有可能會隨著時間等 其他因素而改變,那時此算法的推薦精度就會下降。未解決上述問題,本發(fā)明通過下述步驟 中介紹的基于用戶背景信息相似度的評分算法就可以很好的改善這一問題。
[0113] 在步驟104中,若一職位屬于職位集,則根據(jù)用戶偏好模型合用戶數(shù)據(jù)進行該職位 基于用戶背景信息相似度的評分值計算獲得職位的第二評分值。本步驟中執(zhí)行的是本發(fā)明 提供的混合推薦算法中的協(xié)同過濾推薦算法。
[0114] 雖然職位模型與用戶模型是一一對應的,但是具體到每一個用戶,用戶屬性與職 位屬性卻不應被認為是一一對應的,例如并不是所有的求職者都會找專業(yè)對口或者所在地 的工作,而且目前的就業(yè)壓力越來越大,甚至有博士生選擇學歷要求為??频穆毼粊硗哆f。 與此同時也存在這樣的情況,具有相同背景的用戶投遞相似職位的可能性要遠遠大于背景 完全不同的用戶。所以,對于已有投遞記錄的職位,我們提出了基于用戶背景信息相似度的 評分算法,這個評分算法建立在這樣的假設上:相似的用戶投遞相似職位的可能性要大于 完全不同的用戶投遞的可能性。
[0115] 在本步驟中,首先,從職位數(shù)據(jù)中根據(jù)職位的投遞記錄選取有投遞記錄的目標職 位Q,然后判斷目標職位Q是否屬于步驟103中獲得的職位集,若不屬于則舍棄該職位Q,若屬 于,則執(zhí)行下述計算步驟計算職位的投遞記錄中所有用戶分別與用戶User的偏好相似度, 根據(jù)相似度的均值計算職位的第二評分值。
[0116]設職位已有的投遞記錄中的所有用戶集合為Ua,集合中所有用戶的偏好模型依然 是User_Profile= {(ki,wi),(k2,W2). . . (kn,wn)},但與基于內容的多域評分算法不同的是, 由于用戶數(shù)據(jù)的一致性,可以不需要對用戶模型分域,而是直接看成一個無任何嵌套的文 檔。職位相對于用戶User的基于用戶背景相似度的評分為第二評分值Score ub,則Scoreub其 計算方法采用下述表達式表示:
[0118]其中,Ua表示某職位已有的投遞記錄中的所有用戶集合,u。表示用戶User,#%表示 該職位的所有投遞用戶總數(shù)d., #〇的情況下算法才成立,Sim(u,u。)為職位的投遞用戶u 與用戶User的相似度值,此相似度也是根據(jù)Cosine相似度公式計算得出,計算公式如下:
[0120] 其中1"%?.是用戶User的第q個詞項的權值,wUq是投遞記錄中的用戶u的第q個詞項 的權值。
[0121] 本步驟中基于用戶背景信息相似度的評分算法中滲透著協(xié)同過濾算法的思想,即 與當前用戶相似的用戶喜歡的東西也可能是當前用戶所喜歡的。在職位推薦背景下的思想 就是與當前用戶相似的用戶投遞的職位有可能是當前用戶傾向于投遞的職位。當然,在這 樣的協(xié)同過濾的思想下,算法也同樣存在與協(xié)同過濾一樣的問題,那就是新用戶的冷啟動 問題以及數(shù)據(jù)稀疏問題。
[0122] 在步驟105中,根據(jù)職位的第一評分值和第二評分值獲得該職位的混合評分值,并 根據(jù)混合評分值對職位進行排序獲得推薦列表。在本步驟中,首先計算熱度因子y和時間因 子e,然后結合第一評分值和第二評分值計算得到混合評分值。
[0123] 本發(fā)明提供的職位推薦方法考慮到職位的熱度以及用戶所處的上下文,在步驟 105中引入熱度因子和時間因子參與最終的職位評分值計算。職位的熱度指的是職位的投 遞記錄的多少,投遞的用戶多,則職位就比較熱門。用戶所處的上下文包括用戶訪問推薦系 統(tǒng)的時間、地點、心情等,這些上下文信息對于提高推薦系統(tǒng)的推薦精度是非常重要的。對 于職位推薦來說,用戶所處的地點、當時的心情等對推薦結果影響不大,能夠起到優(yōu)化作用 的上下文信息為時間戳。
[0124] 引入職位熱度的目的是對已經很熱門的職位的懲罰,我們通過一個因子來引入職 位熱度,稱為熱度因子。設y為職位的熱度因子,是它的投遞用戶總數(shù),則熱度因子y可由 下式計算得出:
[0126] 其中N代表當前最熱門職位的投遞用戶數(shù),可以看出,在本發(fā)明實施例中熱度因子 與職位的投遞用戶總數(shù)呈負增長關系,起到了懲罰熱門職位的作用。由于職位的投遞用戶 數(shù)有可能等于N,為了防止熱度因子為0的情況出現(xiàn),公式中分子分母同時加一個很小的數(shù) 避免這種情況出現(xiàn),這里選擇的很小的數(shù)為〇. 〇1。
[0127] 職位是有時效性的,所以推薦的時候要把職位發(fā)布日期因素考慮到評分過程中。 用戶的時間上下文信息包括用戶注冊的時間、登錄的時間、停留的時間、瀏覽時間、以及投 遞職位的時間戳等等,本文需要用到的時間上下文為登錄的時間,需要用到的職位的時間 上下文為職位的發(fā)布時間,這兩個時間戳結合,就可以得到職位的時間因子£,它的計算方 式由下述公式表示:
[0128] £ '=
[0129] 其中Dp-Di是職位發(fā)布日期與當前日期的時間差,DP代表職位的發(fā)布日期,Di代表 用戶的登錄日期(默認為當前日期),顯然,對于同一用戶,發(fā)布日期越接近當前日期越有可 能被推薦,在用戶登錄當天發(fā)布的職位則會被優(yōu)先推薦。時間因子應與職位發(fā)布日期呈指 數(shù)關系,這樣既可以削弱舊職位的權重,也可以給較新的職位更大權值。
[0130] 基于上述方法計算職位時間因子,如圖3所示,職位發(fā)布日期的變化對最近發(fā)布的 職位評分的影響要遠遠大于很早之前發(fā)布的職位。從圖上看出前一天發(fā)布的職位的時間因 子僅僅為0.3679,前兩天的職位時間因子一下降到了 0.1353,一方面是整體分值較低,另一 方面下降幅度較大,夸大了時間因子的作用,削弱了基于內容的評分效果。所以在本發(fā)明的 一種實施方式中,時間因子通過下述改進公式表示:
[0131] g -
[0132] 改進后時間因子的變化如圖4所示,可以看到,前一天發(fā)布的職位的時間因子為 0.9048,前六天之內發(fā)布的職位的時間因子都在0.5以上。
[0133] 基于內容的多域查詢評分算法與基于用戶背景信息相似度的評分算法的評分值 都可以進行歸一化,通過歸一化后評分的取值范圍為0-1?;旌纤惴ǖ脑u分值Scoreh的計算 公式為:
[0134] Scoreh=Scorecb 氺 Scoreub 氺 ye
[0135] 上式中,y和e是混合算法的附加權重,取值范圍也在0到1之間,Scoreh的取值范圍 為0到1之間。
[0136] 本發(fā)明實施例還提供一種上述職位推薦方法的基于信息檢索的具體實施系統(tǒng),即 如圖5所示的基于信息檢索的混合推薦總體架構。在該系統(tǒng)的【具體實施方式】中將Lucene用 于職位推薦系統(tǒng)中,來優(yōu)化推薦結果,并且針對Lucene的幾點不足提出了的相應的改進。
[0137] 典型的個性化職位推薦系統(tǒng)的基本功能流程可以簡單地概括為:首先收集求職信 息,包括求職者的基本信息、工作履歷信息和求職期望信息,然后進行用戶建模;推薦系統(tǒng) 根據(jù)用戶信息和職位庫,并結合相應的推薦策略產生結果集,借助信息推薦平臺技術最終 為求職者提供滿意的就業(yè)職位列表,或者為新上線的職位提供潛在的投遞者列表。也就是 說用戶與職位之間的推薦過程可以看成是一個單向過程,但是推薦結果卻是雙向的,算法 的目的是一方面要為用戶找到他們喜歡的工作,另一方面也要為職位找到潛在的用戶。本 發(fā)明提供的基于信息檢索的混合推薦總體架構就是面向用戶的混合推薦,但推薦結果是實 現(xiàn)雙向推薦。
[0138] 在該系統(tǒng)中,用戶注冊信息與用戶偏好模型不盡相同,注冊信息包括但不限于:用 戶基本信息(學校、出生日期、家鄉(xiāng)以及聯(lián)系方式等),工作能力信息(教育背景等),求職意 向(期望領域、期望地域等)。
[0139] 該系統(tǒng)包括:數(shù)據(jù)庫4、離線模塊3、預篩選模塊1、核心算法模塊2和客戶端5。預篩 選模塊利用Lucene工具庫實現(xiàn)基于內容的多域評分算法。Lucene是全文檢索的一個工具 庫,其作為一個純java實現(xiàn)的成熟、自由、開源的軟件項目,Lucene是一個高性能、可擴展的 信息檢索工具庫,可以把它融入到應用中以增加索引和搜索功能。
[0140]預篩選模塊包括構建索引和創(chuàng)建查詢兩個部分,核心算法模塊是在預篩選模塊的 推薦結果基礎上進行優(yōu)化,實現(xiàn)基于用戶背景信息相似度的評分算法,并引入熱度因子和 時間因子,得到最終推薦列表。離線模塊定時更新有投遞記錄的職位集合與用戶集合,更新 數(shù)據(jù)庫。預篩選模塊的輸入分為兩部分,均來自數(shù)據(jù)庫,一部分為用戶User信息,另一部分 為所有職位信息。預篩選模塊的輸出為與用戶User相匹配的職位集。數(shù)據(jù)庫向核心算法模 塊提供職位和用戶信息、有投遞記錄的職位集合、以及這些職位對應的投遞用戶集合??蛻?端接收核心算法模塊提供的推薦結果反饋給用戶,同時接收系統(tǒng)加入的新用戶和新職位信 息導入數(shù)據(jù)庫。
[0141]預篩選模塊集成了搜索引擎技術中常用的Lucene程序庫,把搜索功能加入到推薦 引擎中,從龐大的職位數(shù)據(jù)中篩掉了那些與用戶User極不相關的職位,大大減少了后續(xù)計 算的數(shù)據(jù)量,提高了推薦效率,同時可避免馬太效應,以及數(shù)據(jù)稀疏和冷啟動問題。
[0142]在構建預篩選模塊過程中,向Lucene中添加中文同義詞分詞器。在預篩選模塊中 分詞器是Lucene在構建索引和創(chuàng)建查詢過程中都必不可少的組件,它可以把文檔分為最小 的分詞單元,同時能過濾掉停用詞。但是L u c e n e自帶的中文分詞器都只是簡單的一元分詞 和二元分詞,有較大的局限。不過,因為Lucene是開源的代碼工具庫,本發(fā)明通過自定義它 的分詞器,達到更好的推薦效果。
[0143]在職位推薦中,用戶信息與職位信息中有很多同義詞,比如用戶模型中的"專業(yè)" 是"經濟學"的用戶,一定會考慮"職位名稱"是"會計"的職位。在這里同義詞的概念并不等 同于語言學中和日常生活中的同義詞,并不考慮感情色彩和語氣,它主要是指在信息檢索 中能夠相互替換、表達相同或相近概念的詞。同義詞應該作為同一個詞來進行比較,但在分 詞器的詞典中并沒有保存同義詞,所以本發(fā)明通過自定義分詞器加入同義詞詞庫。
[0144] 在本發(fā)明的一種實施方式中,米用jcseg分詞器,jcseg分詞器是可以動態(tài)添加詞 庫的中文分詞器,是使用Java開發(fā)的,使用流行的mmseg算法實現(xiàn)。jcseg分詞器相對于其他 的分詞器對地名的分詞更準確,更加適合職位推薦應用的分詞工作。
[0145] 在本發(fā)明的一種實施方式中,本系統(tǒng)集成的Lucene版本為Lucene-4.2。jcseg分詞 器目前最高版本是jcseg 1.9.3,兼容最高版本1^1〇6]16-4.1,
[0146] 向詞庫中添加同義詞具體過程為如下。jcseg詞庫的加載以及很多功能的開啟和 關閉都可以在jcseg ? properties中配置,調用Lucene的Analyzer,首先讓jcseg找到 jcseg ? properties配置文件,其次讓jcseg找到詞庫,最后在進行其他配置,在這里需要開 啟同義詞追加。jcseg分詞器在Lucene中的用法:
[0147] //導入jcseg-core_{version} ? jar和jcseg-analyzer_{version} ? jar
[0148] 1 ? JcsegTaskConf ig ? C0MPLEX_M0DE 為復雜模式:
[0149] 特點:四種過濾算法。*/
[0150] /**
[0151] 2 ? JcsegTaskConf ig ? S 頂PLE_M0DE 為簡易模式
[0152] 特點:只使用了最大化過濾算法,其他的同復雜模式。
[0153] */
[0154] Analyzer analyzer=newJcsegAnalyzer4X(JcsegTaskConfig.C0MPLEX_M ODE);
[0155] //非必須(用于修改默認配置):獲取分詞任務配置實例
[0156] JcsegAnalyzer4X jcseg=(JcsegAnalyzer4X)analyzer;JcsegTaskConf ig config = jcseg.getTaskConfigO ;
[0157] //追加同義詞到分詞結果中,需要在jcseg .properties中配置jcseg ? loadsyn = lconfig.setAppendCJKSyn(true);
[0158] //追加拼音到分詞結果中,需要在jcseg .properties中配置jcseg ? loadpinyin = lconfig.setAppendCJKPinyin();
[0159] 通過對現(xiàn)有數(shù)據(jù)以及職位推薦系統(tǒng)的分析,需要加入的同義詞分為四類:
[0160] 需要廣泛添加的詞,比如所有地名都要添加"全國"、"其他"為同義詞,因為期望地 域無論是哪里,"全國"都有此職位;
[0161] 同一地域的地名,比如"廣西省"與"廣西壯族",這兩個詞都已經是最小的分詞單 元;
[0162] 專業(yè)與對口的職位,比如"會計學"與"會計";
[0163] 不同名稱的同一類專業(yè),比如"金融"與"金融學",jcseg分詞器會把"金融學"看做 一個分詞單元,不再進行分解,所以需要添加同義詞;
[0164]需要格外注意的是,同義詞添加完畢(jcseg.properties配置文件有所更改)之后 一定要重新創(chuàng)建索引,只有那樣索引中的分詞單元才能與配置文件中的同步更新。
[0165] 進一步的,構建職位索引
[0166] 若要構建合理的索引,首先要對搜索內容進行建模。必須分析用戶的各個屬性與 職位的屬性之間有什么的關系,哪些屬性可以作為職位推薦系統(tǒng)的特征項?;趦热莸亩?域評分算法中用到的用戶模型和職位模型的各興趣項就可以作為其特征項。
[0167] 在Lucene中文檔是Lucene索引和搜索的原子單位。文檔為包含一個或多個域的容 器,而域則依次包含"真正的"被搜索內容。每個域都有一個標識名稱,該名稱為一個文本值 或二進制值。當將文檔加入到索引中時,首先得將數(shù)據(jù)轉換成Lucene所能識別的文檔和域。 在隨后的搜索過程中,被搜索對象則為域值。Lucene可以針對域進行以下操作:域值可以被 索引(或者不被索引),域值可以被單獨存儲。
[0168] 在構建職位索引時。首先需要分析用戶偏好和職位信息之間有什么樣的對應關 系,這里可以參考表1中的用戶模型和職位模型的對應關系,基本一致,只需要再加一個代 表"發(fā)布日期"的域。本發(fā)明定義職位索引各域的命名、意義以及存儲情況如下表2。沒有被 存儲的域只存在于索引文件中,只能被搜索,而存儲的域值可以進行提取調用。
[0170] 表2
[0171] 域值一般可以直接提取數(shù)據(jù)庫中的職位信息進行賦值,唯獨學歷學位不能直接賦 值,因為學歷高的用戶也可能投遞學歷要求低于他學歷的職位,所以職位索引的域值要包 含本身以及高于它的學歷學位值。也就是說職位"學歷學位要求"如果為"本科",那么它的 索引中域值為"博士碩士本科",這樣一來即便用戶查詢語句為"博士",職位索引中degree 域對應的值也可以是"博士、碩士、本科",即系統(tǒng)有可能向博士生推薦學歷要求為"本科"的 職位。
[0172] 職位的學歷要求越低,則degree域文檔越長,根據(jù)Luc ene的評分公式, lengthNorm:同等的搜索條件下,文檔長度較長者得分較低。如學歷要求為"博士"的職位更 接近博士生用戶的求職要求,而學歷要求為"碩士"的職位的評分要低于學歷要求為"博士" 的職位的評分。
[0173] 為了對應多個域的索引結構,搜索也要分多個域進行。Lucene中Boo lean query類 可以實現(xiàn)多個域的布爾查詢。
[0174]在本發(fā)明中定義布爾查詢中各域的名稱、意義以及查詢條件如下表3所示。MUST代 表"一定包含","SHOULD"代表"不一定要包含","MUST_N0T"代表一定不包含。

[0176] 表3
[0177] 期望地域、期望領域的布爾查詢應為MUST,即只查找符合此期望的職位。如果沒有 填寫期望地域和期望領域,則默認為期望地域為學校所在地,期望領域為專業(yè)類別所對應 的職位類別,只不過布爾查詢不再是MUST,而是設置為SHOULD,也即不只是查找符合此期望 的職位,默認在某種程度上,用戶可以接受家鄉(xiāng)的工作,或者與自己專業(yè)不相符的工作。
[0178] 日期范圍限定了一個職位發(fā)布時間的范圍,推薦的職位必須在此范圍內,布爾查 詢條件設為MUST。職位是有時效性的,當它發(fā)布一段時間后就失效了,而且職位推薦系統(tǒng)每 天會有大批的新職位發(fā)布,即便沒有失效,太早發(fā)布的職位對求職者的吸引力也會降低。
[0179] Lucene是通過內部提供的評分公式計算文檔得分的,具體公式如下: Scored = coord (q, t/) * query 'Norm (q)
[0180] *[ ((/"{/ in d')*idf(t)2 ^t.getBoostQ*nonn(t,d))
[in q
[0181] 上述評分公式中各因子在職位推薦中的貢獻不同,為了能夠了解評分公式能夠如 何去影響我們的職位評分和排序,進而更好地改善模塊性能和推薦效率,下面介紹在本發(fā) 明實施例中,各個因子在本發(fā)明實施例中代表的意義:
[0182] C〇〇rd(q,d):-個職位屬性中匹配用戶偏好的屬性越多,它的協(xié)調因子就越大,說 明職位的屬性越接近用戶偏好。
[0183] queryNorm(q):此項是用來同時提高或降低所有職位評分的因子。
[0184] tf(t in d):詞頻描述的是同樣長度的職位與用戶信息的相同的詞出現(xiàn)次數(shù)越 多,則評分越大。
[0185] idf:倒排文檔頻率的意義在于,削弱了熱門地區(qū)的權重,相對的平衡了專業(yè)與所 在地的評分。
[0186] t.getBoostO:這一項可以改變某個詞的權重,進而增大或減小出現(xiàn)這個詞的職 位的評分。
[0187] n〇rm(t,d):這一項是用來削弱長文檔的權重的,它的意義主要體現(xiàn)在"學歷學位" 的域評分,因為職位索引的"學歷學位要求"域值要包含本身以及高于它的學歷學位值,那 么對于同一個用戶,職位的學歷要求越接近他的學歷,職位評分越高。
[0188] 進一步的,核心算法模塊主要實現(xiàn)了在預篩選模炔基礎上的基于用戶背景信息相 似度的評分算法,并且引入職位熱度與時間上下文,實現(xiàn)最終推薦結果的呈現(xiàn)。
[0189] 本發(fā)明在核心算法模塊中引入自定義的中文同義詞分詞器。在預篩選模塊中用到 的中文分詞器jeseg分詞器不僅可以應用于Lucene中的分詞,在自己的程序中也可以構建 分詞實例實現(xiàn)jeseg的二次開發(fā)。本發(fā)明核心算法模塊中的基于用戶背景信息相似度的評 分算法的核心部分就是計算用戶之間的相似度,因為用戶模型是向量空間模型,每個詞項 的權值根據(jù)TF-IDF計算得出,這之前分詞是一個必要的步驟,所以這里同樣引入自定義的 jcseg同義詞分詞器,以得到更加準確的相似度評分值。
[0190] jcseg分詞器的二次開發(fā)不同于在Lucene中的分詞,jcseg分詞器的開發(fā)者已經針 對Lucene封裝好了一個Analyzer,可以直接拿來調用的,只需要修改詞庫就可以達到自定 義分詞的目的。如果想要在自己的程序中添加jcseg分詞器還需要創(chuàng)建一個 JcsegTaskConf ig配置實例,一個ADictionary詞庫實例和一個ASegment分詞實例來完成分 詞工作。三個實例的創(chuàng)建方法如下:
[0191 ]建 JcsegTaskConf ig 分詞配置實例:
[0192] JcsegTaskConfig 構造方法:
[0193] JcsegTaskConf ig()
[0194] JcsegTaskConfig(java.lang.String proFile)
[0195] (1)創(chuàng)建從默認的 jcseg ? properties 中初始化的 JcsegTaskConf ig 對象:
[0196] //該方法會自動查找jcseg ? properties配置文件
[0197] //然后依據(jù) jcseg ? properties 中的選項初始化 JcsegTaskConfig ?
[0198] JcsegTaskConf ig config = new JcsegTaskConf ig();
[0199] //或者使用如下方式(指定自定義配置文件路徑為null).
[0200] JcsegTaskConf ig config = new JcsegTaskConf ig(null);
[0201 ] (2)創(chuàng)建從指定的 jcseg .properties 中初始化的 JcsegTaskConfig 對象:
[0202] //依據(jù)proFi le指定的配置文件創(chuàng)建JcsegTaskConf ig ?
[0203] JcsegTaskConf ig conf ig =
[0204] new JcsegTaskConfigC^/java/jcseg/jcseg.properties^);
[0205] (3)從給定的 jcseg ? properties 配置文件中重置 JcsegTaskConf ig:
[0206] //從指定的jcseg ? properties配置文件中重置JcsegTaskConf ig選項
[0207] config.resetFromPropertyFileC^/java/jcseg/jcseg.properties^);
[0208] 2、建ADictionary分詞詞庫實例:
[0209] 使用org. lionsoul ? jcseg. core .DictionaryFactory創(chuàng)建ADictionary實例:
[0210] 構造方法如下:
[0211] Adictionary(JcsegTaskConfig conf ig,java.lang.Boolean sync)
[0212] 參數(shù)說明:
[0213] Conf ig:詞配置對象,里面有詞庫加載所需要的信息;
[0214] Sync:否創(chuàng)建同步詞庫.true表示創(chuàng)建同步詞庫,false表示創(chuàng)建非同步詞庫。
[0215] (1)依據(jù)給定的 JcsegTaskConf ig 創(chuàng)建 ADictionary:
[0216] //conf ig 為上面創(chuàng)建的 JcsegTaskConf ig 對象?
[0217] / /如果給定的J c s e g T a s k C o n f i g里面的詞庫路徑信息正確(是從 jcseg .properties中初始化的就對了),
[0218] //Adictionary會依據(jù)JcsegTaskConfig里面的詞庫信息加載全部有效的詞庫.
[0219] //并且該方法會依據(jù)config. isAutoloadO來決定詞庫的同步性還是非同步性.
[0220] //config. isAutoloadO為true就創(chuàng)建同步詞庫,反之就創(chuàng)建非同步詞庫.
[0221 ] //config. isAuto load 〇 對應 jcseg .properties 中的 lexicon .auto load
[0222] ADictionary dic=DictionaryFactory.createDefaultDictionary(config);
[0223] (2)依據(jù)給定的<1〇8681&81^〇11:[18和8711(3創(chuàng)建八0;[(^;[0紐^:
[0224] //創(chuàng)建一個非同步的ADictioanry.ADictionary dic = DictionaryFactory
[0225] .createDefaultDictionary(config,false);
[0226] //創(chuàng)建一個同步的六0;[(^;[0&11^.
[0227] ADictionary die = DietionaryFactory.createDefaultDictionary(config, true);
[0228] //依據(jù) conf ig ? isAutoload()來決定同步性
[0229] ADictionary die=Dictionary Factory.create Default Dictio nary(con fig,config.isAutol oad());
[0230] (3) ADict ionary 詞庫加載 API:
[0231] //指定ADict ionary加載給定目錄下的所有詞庫文件的詞條.
[0232] //config.getLexiconPath為詞庫文件存放有效目錄.
[0233] die.loadFromLexiconDirectory(conf ig.getLexiconPath());
[0234] //指定ADict ionary加載給定詞庫的詞條.
[0235] //conf ig 為上面創(chuàng)建的 JcsegTaskConf ig 實例.
[0236] die.loadFromLexiconFile(config/V java/lex-main.lex^);
[0237] 3、建 ASegment 或者 ISegment 分詞實例:
[0238] Jcseg的主分詞類程序在org. lionsoul. jeseg. ASegment抽象類中得到具體實現(xiàn), 該類實現(xiàn)了 Jcseg主API接口 org ? 1 ionsoul ? jeseg ? core ? ISegment ? ComplexSeg繼承 ASegment實現(xiàn)了復雜模式分詞,SimpleSeg繼承了 ASegment實現(xiàn)了簡易模式分詞。
[0239] Asegment 構造方法:
[0240] Asegment(JcsegTaskConfig conf ig,Adictionary die)
[0241] Asegment(Reader input,JcsegTaskConf ig conf ig,Adictionary die)
[0242] 參數(shù)說明:
[0243] Conf ig:詞配置實例,參考上面的創(chuàng)建JcsegTaskConf ig;
[0244] Die:庫實例,參考上面的創(chuàng)建ADictionary 〇
[0245] 創(chuàng)建ISegment或者ASegment實例的方法:
[0246] //創(chuàng)建JcsegTaskConf ig分詞任務實例
[0247] //即從jcseg. properties配置文件中初始化的配置
[0248] JcsegTaskConf ig conf ig = new JcsegTaskConf ig();
[0249] //創(chuàng)建默認詞庫(即:com. webssky. jcseg .Dietionary對象)
[0250] //并且依據(jù)給定的JcsegTaskConf ig配置實例自主完成詞庫的加載
[0251] ADictionary dic=DietionaryFactory.createDefaultDictionary(config);
[0252] //依據(jù)給定的 ADictionary 和 JcsegTaskConf ig 來創(chuàng)建 ISegment
[0253] //通常使用 SegmentFactory#create Jcseg來創(chuàng)建 I Segment對象
[0254] //將 conf ig 和 die 組成一個 0b ject 數(shù)組給 SegmentFactory ? createjcseg 方法
[0255] //JcsegTaskConf ig. C0MPLEX_M0DE 表不;創(chuàng)建 ComplexSeg 復雜 I Segment 分詞對象
[0256] //JcsegTaskConf ig ? SIMPLE_M0DE 表不;創(chuàng)建 SimpleSeg 簡易 Isegmengt 分詞對象.
[0257] ASegmentseg = SegmentFactory.createjcseg(JcsegTaskConf ig.C0MPLEX_M0DE,
[0258] new 0bject[]{config,dic});
[0259] //設置要分詞的內容
[0260] String str = 〃研究生命起源。
[0261] seg.reset(new StringReader(str));
[0262] //獲取分詞結果
[0263] Ifford word = null;
[0264] while( (word = seg.next())! = null) {
[0265] System.out.printIn(word.getValue());
[0266] }
[0267] 可以反復利用創(chuàng)建的I Segment對象,通過I Segment .reset (java, io .Reader)來重 置分詞內容。
[0268] 進一步的,由于熱度因子不僅與職位本身的投遞用戶數(shù)相關,還與當前最熱門的 職位的投遞用戶數(shù)相關。職位的投遞用戶數(shù)是實時變化的,但數(shù)據(jù)庫中用于推薦的職位信 息不是跟隨數(shù)據(jù)的變化事時變化,而是周期性的定時更新,這樣做是為了避免過多的消耗 計算資源,提高系統(tǒng)的資源利用率。
[0269] 為了保證職位熱度因子的取值在0-1之間,職位的投遞記錄必須是系統(tǒng)同一時刻 提取到的數(shù)據(jù)。由于核心算法模塊的職位數(shù)據(jù)來自預篩選模塊的輸出數(shù)據(jù),經過預篩選模 塊的一番篩選,數(shù)據(jù)量大大減少,提高了計算效率。
[0270] 計算時間因子的過程中,系統(tǒng)用到的時間上下文信息為用戶的登錄日期(當前日 期)和職位的發(fā)布日期。因為用戶登錄之后系統(tǒng)會給出職位推薦結果,所以用戶登錄日期也 就是當前日期,職位發(fā)布日期在預篩選模塊中Lucene的索引里有存儲,可以通過建立對職 位的查詢操作,提取發(fā)布日期,相比數(shù)據(jù)庫查詢有著更高的效率。
[0271] 本發(fā)明實施例提供的職位推薦方法,由基于內容的多域查詢評分算法和基于用戶 背景信息相似度的評分算法組成,針對多域查詢評分算法和基于用戶背景信息相似度的評 分算法在單獨應用時的局限性,將二者加以混合,可以達到互補的效果,在職位推薦過程中 可以避免馬太效應,也可以避免冷啟動問題,同時能夠很好地利用群體實現(xiàn)個性化推薦。并 且,在職位推薦算法中引入熱度因子和時間因子,進一步優(yōu)化推薦結果。同時,本發(fā)明還提 供了對應職位推薦方法的【具體實施方式】,即提出一種面向用戶的混合推薦系統(tǒng)架構,從工 程角度對職位推薦進行了優(yōu)化,通過將Lucene用于職位推薦系統(tǒng)中,來優(yōu)化推薦結果。并且 針對Lucene的幾點不足提出了相應的改進。
[0272] 雖然本發(fā)明所公開的實施方式如上,但所述的內容只是為了便于理解本發(fā)明而采 用的實施方式,并非用以限定本發(fā)明。任何本發(fā)明所屬技術領域內的技術人員,在不脫離本 發(fā)明所公開的精神和范圍的前提下,可以在實施的形式上及細節(jié)上作任何的修改與變化, 但本發(fā)明的專利保護范圍,仍須以所附的權利要求書所界定的范圍為準。
【主權項】
1. 一種職位推薦方法,其特征在于,包括: 獲取用戶數(shù)據(jù)和職位數(shù)據(jù); 根據(jù)用戶數(shù)據(jù)建立用戶偏好向量空間模型,根據(jù)職位數(shù)據(jù)建立職位向量空間模型,用 戶偏好模型中的用戶興趣與職位模型中的相關職位屬性相對應; 根據(jù)用戶偏好模型和職位模型進行基于內容的多域評分值計算獲得職位的第一評分 值,并根據(jù)第一評分值對職位進行排序獲得職位集; 若一職位有投遞記錄且屬于職位集,則根據(jù)用戶偏好模型和用戶數(shù)據(jù)進行該職位基于 用戶背景信息相似度的評分值計算獲得職位的第二評分值; 根據(jù)職位的第一評分值和第二評分值獲得該職位的混合評分值,并根據(jù)混合評分值對 職位進行排序獲得推薦列表。2. 根據(jù)權利要求1所述的職位推薦方法,其特征在于,所述建立的用戶偏好向量空間模 型 User_Prof ile 為: User_Profile= {(ki,wi),(k2,W2) · · · (kn,wn)}; 其中kn為用戶的興趣項,Wn為興趣項的權重。3. 根據(jù)權利要求2所述的職位推薦方法,其特征在于,所述建立的職位向量空間模型 Recruit_Modle 為: Recruit_Modle= {(li,vi),(h,V2) · · · (ln,vn)}; 其中,In為職位屬性,Vn為職位屬性的權值。4. 根據(jù)權利要求3所述的職位推薦方法,其特征在于,在建立用戶偏好模型與職位模型 的步驟中包括: 將用戶偏好向量空間模型分為η個不同的域,每一個域對應一個興趣項,將職位向量空 間模型分為η個不同的域,每一個域對應一個職位屬性; 在所述獲得職位集的步驟中包括: 通過下述表達式計算獲得第一評分值Scores:其中W1是用戶偏好模型的第i個域的權重,V1是職位模型第i個域的權重,SimQ1,lu)為 用戶偏好模型與職位模型第i個域的相似度; 根據(jù)所述第一評分值對職位進行排序,提取排名的前N個職位組成職位集。5. 根據(jù)權利要求4所述的職位推薦方法,其特征在于,通過下述表達式計算獲得用戶偏 好模型與職位模型第i個域的相似度:其中wP'是用戶偏好模型中第i個域的第p個詞的權值,vP'是職位模型中第i個域的第p 個詞的權值,若沒有某個詞,那么這個詞的權值為〇。6. 根據(jù)權利要求2所述的職位推薦方法,其特征在于,所述建立的用戶偏好向量空間模 型為無嵌套的文檔,在所述獲得職位的第二評分值的步驟中包括: 基于職位數(shù)據(jù)選取有投遞記錄的目標職位; 判斷目標職位是否屬于職位集; 若屬于,則根據(jù)下述表達式計算第二評分值Scoreub:其中,Ua表示職位已有的投遞記錄中的所有用戶集合,u。表示用戶Use^iV^表示職位的 所有投遞用戶總數(shù),sim(u,u。)為職位的投遞用戶u與用戶User的相似度值。7. 根據(jù)權利要求6所述的職位推薦方法,其特征在于,通過下述表達式計算獲得職位的 投遞用戶u與用戶User的相似度:其中W?Df是用戶User的第q個詞項的權值,wuq是投遞記錄中的用戶u的第q個詞項的權 值。8. 根據(jù)權利要求1所述的職位推薦方法,其特征在于,在所述獲得職位的混合評分值的 步驟中包括: 根據(jù)下述表達式獲取職位的執(zhí)庶Rl子其中乂 為職位的投遞用戶總數(shù),N代表當前最熱門職位的投遞用戶數(shù); 根據(jù)下述表達式獲取時間因子ε:其中Dp為職位的發(fā)布日期,D1為用戶的登錄日期; 根據(jù)下述表達式計算混合評分值Scoreh: Scoreh = Scorecb氺Scoreub氺με ; 其中Scores為第一評分值,Scoreub為第二評分值。9. 根據(jù)權利要求2所述的職位推薦方法,其特征在于,所述建立的用戶偏好向量空間模 型 User_Prof ile 為: User_Profile= {(ki,wi),(k2,W2),(k3,W3),(k4,W4),(k5,W5)}; 其中Iu為用戶的興趣項"期望領域",W1為它的權重,k2為用戶的興趣項"期望地域",《 2為 它的權重,k3為用戶的"家鄉(xiāng)",W3為它的權重,k4為用戶所學的"專業(yè)",W 4為"學歷或學位"。10. 根據(jù)權利要求3所述的職位推薦方法,其特征在于,所述建立的職位向量空間模型 Recruit_Modle 為: Recruit_Modle = {(li,vi),(h,V2),(h,V3),(l4,V4)}; 其中1:為職位屬性"職位類別",I2為職位屬性"工作地",I3為職位屬性"職位名稱",I 4為 職位屬性"學歷要求"。
【文檔編號】G06F17/30GK105893641SQ201610511648
【公開日】2016年8月24日
【申請日】2016年7月1日
【發(fā)明人】李晨, 楊成, 茹靜婷
【申請人】中國傳媒大學
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
建瓯市| 大化| 宝丰县| 孝感市| 大新县| 循化| 河津市| 海宁市| 前郭尔| 尼勒克县| 车致| 江北区| 龙陵县| 临沭县| 武强县| 兴文县| 贺兰县| 定远县| 容城县| 清新县| 五大连池市| 南丰县| SHOW| 突泉县| 平凉市| 金门县| 罗城| 安多县| 长治市| 朝阳县| 永修县| 夏河县| 大兴区| 宜州市| 房山区| 贺州市| 吴堡县| 哈巴河县| 华蓥市| 哈尔滨市| 五莲县|