基于用戶興趣度和地理位置的活動推薦方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種將社會活動推薦給用戶的方法,屬于信息網(wǎng)絡(luò)技術(shù)領(lǐng)域。
【背景技術(shù)】
[0002] 2004年,F(xiàn)acebook在美國誕生,隨之社交網(wǎng)站熱潮席卷全球,而國內(nèi)以新浪微 博、騰訊微博、人人網(wǎng)等為代表的SNS網(wǎng)站也如雨后春筍般迅速崛起。目前在網(wǎng)上每天都 有新的社交網(wǎng)站產(chǎn)生和消失,同時也有大量針對各種興趣愛好為主題的社交網(wǎng)站,隨著 Facebook的群組的不斷成長,以及互聯(lián)網(wǎng)的高效性,人們開始意思到建立在興趣愛好之上 的社交產(chǎn)品還有不小的市場潛力可以挖掘。因此一種能夠有效地將在線活動和互動轉(zhuǎn)變?yōu)?線下積極的交流、社交及服務(wù)網(wǎng)站孕育而生。這種不同于傳統(tǒng)的社交網(wǎng)站,基于活動的社交 網(wǎng)站(像Meetup、Plancast、Douban Event等),用戶不僅可以組織和參加活動,也可以評 價和分享活動。為了讓用戶更好地享受這些網(wǎng)站帶來的樂趣,活動推薦算法近年來成為了 人們研宄的熱點話題。
[0003] Meetup社交網(wǎng)站以全新的方式與他人建立聯(lián)系,近十年來一直都在促進(jìn)著有共同 興趣的人們在當(dāng)?shù)匕l(fā)起見面活動。通過其全球每月25萬次見面活動的舉辦,它使超過700 萬成員通過共同的興趣建立起了聯(lián)系。在Meetup網(wǎng)站中,每一個用戶都可以是活動的參與 者,又可以是組織者,大量的成員蘊含著海量的活動信息。此外同一群組里的用戶有可能是 不相識的,基于這種情況,大量的活動信息無法進(jìn)行分享;而且每天都會有用戶進(jìn)行注冊, 對于這些新用戶僅僅根據(jù)注冊時填寫的interests,無法將更多有價值的活動信息推薦給 用戶,這不僅造成資源的浪費,也使用戶失去了一些潛在朋友。
[0004] 一些研宄擴展了基本的概率隱語義分析(PLSA)模型,基于群組內(nèi)容信息生成用 戶和群組之間的社會關(guān)系信息。還有一些研宄在群組推薦時采用張量分解建立用戶、群組 和標(biāo)簽的三元關(guān)系。這些研宄雖然考慮到了異構(gòu)的社會化關(guān)系和活動的地理位置對用戶的 影響,但基于Meetup網(wǎng)站是group-event結(jié)構(gòu),用戶參與一個活動,必須先要加入該群組。 這種特性使得當(dāng)前的研宄不完全適用Meetup網(wǎng)站。
【發(fā)明內(nèi)容】
[0005] 為了解決上述問題,本發(fā)明提供了一種基于用戶興趣度和地理位置的活動推薦方 法,本方法抽取所有的活動信息,基于用戶對活動內(nèi)容的興趣,及結(jié)合活動的地理位置對用 戶的影響,從海量的活動數(shù)據(jù)中高效地向用戶推薦合適的活動。本發(fā)明具體包括下述步 驟:
[0006] 將用戶所屬群組進(jìn)行分類,利用Meetup網(wǎng)站開放平臺提供的群組、用戶、活動接 口,通過這些接口抽取相應(yīng)群組里的群組信息數(shù)據(jù)、成員數(shù)據(jù),以及該群組里的活動信息數(shù) 據(jù),并將其存儲在數(shù)據(jù)庫中,對這些數(shù)據(jù)進(jìn)行語料模式匹配預(yù)處理操作;
[0007] 針對這些數(shù)據(jù),首先利用矩陣分解模型初步得到用戶對于活動的興趣度,篩選出 用戶感興趣的活動數(shù)據(jù)集;
[0008] 其次考慮到用戶的社會化關(guān)系和用戶的活躍度,利用用戶間的相似相關(guān)性,得到 用戶對于活動的興趣度,進(jìn)一步篩選出用戶感興趣的活動數(shù)據(jù)集;
[0009] 考慮到活動發(fā)生的地理位置對用戶是否參與一個活動的影響,對活動發(fā)生的地理 位置劃分區(qū)域,考慮用戶在該區(qū)域內(nèi)的活躍度,使用優(yōu)化方法,確定用戶最終感興趣且參與 的活動數(shù)據(jù)集。
[0010] 進(jìn)一步,對活動數(shù)據(jù)集進(jìn)行預(yù)處理的過程具體為:
[0011] 步驟I. 1)獲取成員數(shù)據(jù)集信息;
[0012] 步驟1. 2)初始化所有用戶感興趣的活動向量,設(shè)為V ;
[0013] 步驟1. 3)獲取第一條成員數(shù)據(jù)信息;
[0014] 步驟1. 4)得到該成員用戶的標(biāo)簽信息;
[0015] 步驟1. 5)初始化該用戶的感興趣的活動向量V ;
[0016] 步驟1. 6)獲取活動數(shù)據(jù)集信息;
[0017] 步驟1. 7)初始化所有活動興趣標(biāo)志為0 ;
[0018] 步驟1. 8)獲取第一條活動數(shù)據(jù)信息;
[0019] 步驟1. 9)將該活動標(biāo)簽與用戶的興趣標(biāo)簽進(jìn)行匹配,如果匹配,轉(zhuǎn)步驟1. 10),否 貝IJ,轉(zhuǎn)步驟1. 11);
[0020] 步驟1. 10)計算匹配次數(shù),并更新為該活動的興趣標(biāo)志;
[0021] 步驟1. 11)獲取下一條活動數(shù)據(jù)信息;
[0022] 步驟1. 12)判斷是否到達(dá)活動數(shù)據(jù)集末端,若到達(dá),轉(zhuǎn)步驟1. 13),否則,轉(zhuǎn)步驟 1.9);
[0023] 步驟1. 13)刪除活動興趣標(biāo)志為0的活動數(shù)據(jù);
[0024] 步驟1. 14)更新該用戶的感興趣的活動向量V ;
[0025] 步驟1. 15)獲取下一條成員數(shù)據(jù)信息;
[0026] 步驟1. 16)判斷該用戶數(shù)據(jù)信息是否到達(dá)數(shù)據(jù)集末端,若到達(dá),轉(zhuǎn)步驟1. 17),否 貝IJ,轉(zhuǎn)步驟1.4);
[0027] 步驟1. 17)更新所有用戶感興趣的活動向量集V。
[0028] 進(jìn)一步,利用矩陣分解模型初步得到用戶對于活動的興趣度的過程具體為:
[0029] 步驟2. 1)獲取成員的所有數(shù)據(jù)集信息;
[0030] 步驟2. 2)獲取成員-活動數(shù)據(jù)集信息;
[0031] 步驟2. 3)根據(jù)這些數(shù)據(jù)集得到成員的各個標(biāo)簽的權(quán)值比重;
[0032] 步驟2. 4)將其存入用戶向量U中;
[0033] 步驟2. 5)利用向量分解模型,計算用戶對活動的興趣度。
[0034] 進(jìn)一步,根據(jù)成員用戶的社會化關(guān)系,計算用戶間的相似度的過程為:
[0035] 步驟3. 1)獲取所有成員數(shù)據(jù)信息;
[0036] 步驟3. 2)獲取成員i的第一條數(shù)據(jù)信息;
[0037] 步驟3. 3)計算該成員參與的群組數(shù);
[0038] 步驟3. 4)計算出該成員參與的所有活動數(shù);
[0039] 步驟3. 5)計算出該成員平均每個群組參與的活動數(shù);
[0040] 步驟3. 6)獲取該成員共同參與某一活動的用戶集;
[0041] 步驟3. 7)從用戶集中獲取用戶j的第一條數(shù)據(jù)信息;
[0042] 步驟3. 8)計算該用戶參與的群組數(shù);
[0043] 步驟3. 9)計算出該用戶參與的所有活動數(shù);
[0044] 步驟3. 10)計算出該用戶平均每個群組參與的活動數(shù);
[0045] 步驟3. 11)獲取用戶i和用戶j共同參與的群組集;
[0046] 步驟3. 12)分別計算用戶i和用戶j在相同群組中的活躍度;
[0047] 步驟3. 13)利用皮爾森相關(guān)系數(shù),計算用戶i和用戶j之間的相似性;
[0048] 步驟3. 14)從用戶集中獲取用戶j的下一條數(shù)據(jù)信息;
[0049] 步驟3. 15)判斷該用戶數(shù)據(jù)信息是否到達(dá)用戶數(shù)據(jù)集末端,若是,轉(zhuǎn)步驟3. 16), 否則,轉(zhuǎn)步驟3.8);
[0050] 步驟3. 16)得到兩用戶之間前k個最大的相似度,存入表中;
[0051] 步驟3. 17)獲取成員i的下一條數(shù)據(jù)信息;
[0052] 步驟3. 18)判斷是否到達(dá)用戶數(shù)據(jù)集末端,若是,轉(zhuǎn)步驟3. 19),否則,轉(zhuǎn)步驟 3.3);
[0053] 步驟3. 19)更新Top表。
[0054] 進(jìn)一步,利用相似相關(guān)性,計算用戶對活動的興趣度的過程為:
[0055] 步驟4. 1)獲取用戶的感興趣的活動向量集V ;
[0056] 步驟4. 2)利用相似相關(guān)性,計算用戶對活動的興趣度;
[0057] 步驟4. 3)更新用戶感興趣的活動向量集V。
[0058] 進(jìn)一步,基于地理位置的活動數(shù)據(jù)集優(yōu)化的過程為:
[0059] 步驟5. 1)獲取活動向量集V ;
[0060] 步驟5. 2)根據(jù)活動的地理位置將其劃分區(qū)域;
[0061] 步驟5. 3)獲取所有成員數(shù)據(jù)集信息;
[0062] 步驟5. 4)計算用戶在某一區(qū)域的活躍度;
[0063] 步驟5. 5)計算活動屬于某一區(qū)域的概率;
[0064] 步驟5. 6)計算用戶對活動的興趣度;
[0065] 步驟5. 7)更新用戶感興趣的活動向量集V ;
[0066] 步驟5. 8)完成用戶感興趣的活動推薦。
[0067] 本發(fā)明考慮了當(dāng)用戶和活動在同一群組,對于該活動的推薦,用戶的興趣度比對 不在同一群組的活動的興趣度要大,因此需要將用戶所在的群組進(jìn)行分類;又根據(jù)用戶 的interests,及活動的description挖掘出用戶感興趣的活動的概率分布;結(jié)合用戶的 interests和參與的活動,計算用戶之間的相似相關(guān)性,從而進(jìn)行個性化的推薦;最后,對 于活動的位置對用戶的影響,先根據(jù)活動的位置進(jìn)行劃分區(qū)域,根據(jù)用戶對該區(qū)域的興趣 度,間接算出用戶對該活動的興趣度。本發(fā)明利用開放接口,不僅抽取了群組信息、活動信 息、成員信息,而且還考慮到了三者之間的關(guān)系及影響;充分考慮到了用戶的活躍度問題, 將活動所在的地理位置劃分區(qū)域,考慮到了地理位置對于用戶的影響;結(jié)合皮爾森相關(guān)系 數(shù)的特點,考慮到了用戶間的相似相關(guān)性。通過采用上述技術(shù)方案,能夠有效地給用戶推薦 其感興趣的活動,不僅利用了用戶自己標(biāo)注的興趣標(biāo)簽,也結(jié)合了活動哈希提出了用戶的 社會化關(guān)系,更加考慮到用戶關(guān)注的活動的地理位置、交通便利情況,提出向量分解模型, 有效地解決了數(shù)據(jù)的稀疏性和不對稱性問題。
【附圖說明】
[0068] 圖1是本發(fā)明的整體流程示意圖。
[0069] 圖2是群組數(shù)據(jù)和活動數(shù)據(jù)抽取過程示意圖。
[0070] 圖3是基于群組的成員數(shù)據(jù)抽取過程示意圖。
[0071] 圖4是成員參與的所有活動數(shù)據(jù)抽取過程示意圖。
[0072] 圖5是對活動數(shù)據(jù)集進(jìn)行預(yù)處理的過程圖。
[0073] 圖6是利用興趣標(biāo)簽得到用戶社會化關(guān)系的流程圖。
[0074] 圖7是根據(jù)活動地理位置劃分區(qū)域流程圖。
【具體實施方式】
[0075] 下面結(jié)合附圖和實施例對本發(fā)明作進(jìn)一步詳細(xì)說明。
[0076] 本發(fā)明的總流程如圖1所示,本發(fā)明從用戶本身的興趣標(biāo)簽出發(fā),結(jié)合用戶的社 會化關(guān)系,以及活動發(fā)生的地理位置,給用戶推薦其感興趣的活動,通過在Meetup網(wǎng)站獲 取授權(quán)信息,利用其開放的服務(wù)接口抽取群組數(shù)據(jù)信息、活動數(shù)據(jù)信息以及成員數(shù)據(jù)信息。 對抽取的數(shù)據(jù)集,通過預(yù)處理和一系列的過濾技術(shù)抽取出用戶感興趣的活動信息,其較佳 實施例的實現(xiàn)步驟為:
[0077] 步驟1)將用戶所在的群組分成35個大的類別,根據(jù)這35個類別抽取群組的數(shù)據(jù) 集?目息:
[0078] 步驟I. 1)申請人在Meetup網(wǎng)站注冊一個賬號;
[0079] 步驟1. 2)在Meetup開放平臺創(chuàng)建一個新的Consumer,根據(jù)要求,輸入OAuth Consumer應(yīng)用申請的相關(guān)信息;
[0080] 步驟1. 3)獲取OAuth Consumer的應(yīng)用授權(quán)信息;
[0081] 步驟 1. 4)申請人從 Client Libraries 下載 Meetup 的 python-api-client 庫;
[0082] 步驟1. 5)根據(jù)下載的庫搭建所需的軟件抽取環(huán)境;
[0083] 步驟1. 6)獲取群組的種類category_id信息;
[0084] 步驟1. 7)根據(jù)群組的categ〇ry_id,利用群主的動態(tài)信息接口,抽取相應(yīng)的所有 的群組數(shù)據(jù)信息,以及該群組內(nèi)的話題信息;
[0085] 步驟1. 8)在mysql中根據(jù)抽取的群組數(shù)據(jù)的格式建立表groups,將其存入數(shù)據(jù)庫 groups 表中;
[0086] 步驟2)如圖2所示,根據(jù)群組的id信息抽取活動信息:
[0087] 步驟2. 1)獲取群組的數(shù)據(jù)信息;
[0088] 步驟2. 2