)利用群組的id調(diào)用活動(dòng)接口抽取活動(dòng)信息;
[0089] 步驟2. 3)抽取相應(yīng)群組內(nèi)的活動(dòng)信息;
[0090] 步驟2. 4)在mysql中根據(jù)抽取的活動(dòng)數(shù)據(jù)格式建立表events,將其存入數(shù)據(jù)庫 events 表中。
[0091] 步驟3)如圖3所示,根據(jù)群組的id信息抽取成員數(shù)據(jù)信息:
[0092] 步驟3. 1)獲取群組的group_id信息;
[0093] 步驟3. 2)利用群組的group_id調(diào)用成員接口抽取成員數(shù)據(jù)信息。
[0094] 步驟3. 3)在數(shù)據(jù)庫中將成員數(shù)據(jù)集信息存入members表;
[0095] 步驟4)抽取某一成員用戶參與的所有活動(dòng)信息,參見附圖4 :
[0096] 步驟4. 1)獲取群組的urlname和該群組內(nèi)活動(dòng)的id信息;
[0097] 步驟4. 2)根據(jù)urlname和id抽取參與該活動(dòng)的所有成員member_id信息。
[0098] 步驟4. 3)存儲(chǔ)抽取的活動(dòng)-成員數(shù)據(jù)集信息,放入event-members表;
[0099] 步驟4. 4)結(jié)合協(xié)同過濾的算法的思想,得到用戶參與的所有活動(dòng)信息;
[0100] 步驟4. 5)存儲(chǔ)成員用戶參與的所有活動(dòng)數(shù)據(jù)集信息,存入member-events表; [0101] 步驟5)如圖5所示,預(yù)處理活動(dòng)數(shù)據(jù)集信息的過程為:
[0102] 步驟5. 1)從members表獲取成員數(shù)據(jù)信息,初始化所有用戶感興趣的活動(dòng)向量 V;
[0103] 步驟5. 2)獲取第一條成員數(shù)據(jù)信息;
[0104] 步驟5. 3)得到該成員用戶的topics信息,并初始化該用戶的感興趣的活動(dòng)向量 V ;
[0105] 步驟5. 4)從events表中獲取status = upcoming的活動(dòng)數(shù)據(jù)集信息;
[0106] 步驟5. 5)初始化活動(dòng)數(shù)據(jù)集中所有活動(dòng)興趣標(biāo)志為0 ;
[0107] 步驟5. 6)獲取第一條活動(dòng)數(shù)據(jù)信息;
[0108] 步驟5. 7)判斷該活動(dòng)中description是否包含該成員用戶的topics集中的某一 個(gè)topic,如果包含,轉(zhuǎn)步驟5. 8),否則,轉(zhuǎn)步驟5. 9);
[0109] 步驟5. 8)計(jì)算包含該用戶topics的個(gè)數(shù)count,并更新該活動(dòng)數(shù)據(jù)的興趣標(biāo)志為 count ;
[0110] 步驟5. 9)獲取下一條活動(dòng)數(shù)據(jù)信息;
[0111] 步驟5. 10)判斷該活動(dòng)數(shù)據(jù)信息是否達(dá)到活動(dòng)數(shù)據(jù)集的末端,如果到達(dá),轉(zhuǎn)步驟 5. 11),否則,轉(zhuǎn)步驟5. 7);
[0112] 步驟5. 11)將活動(dòng)興趣標(biāo)志不為0的所有活動(dòng)數(shù)據(jù)加入到該用戶活動(dòng)向量中;
[0113] 步驟5. 12)更新該用戶的感興趣的活動(dòng)向量V ;
[0114] 步驟5. 13)獲取下一條成員數(shù)據(jù)信息;
[0115] 步驟5. 14)判斷該用戶數(shù)據(jù)信息是否到達(dá)用戶數(shù)據(jù)集的末端,如果達(dá)到,轉(zhuǎn)步驟 5. 15),否則,轉(zhuǎn)步驟5. 3);
[0116] 步驟5. 15)更新所有用戶的感興趣的活動(dòng)向量集V ;
[0117] 步驟6)向量分解得到用戶感興趣的活動(dòng):
[0118] 步驟6. 1)從members表中獲取成員的所有數(shù)據(jù)集信息;
[0119] 步驟6. 2)獲取第一條成員用戶數(shù)據(jù)信息;
[0120] 步驟6. 3)初始化該用戶的所有topic信息的匹配次數(shù)為0 ;
[0121] 步驟6. 4)根據(jù)用戶的id查詢member-events表,得到該成員用戶參與的所有活 動(dòng)id數(shù)據(jù)集;
[0122] 步驟6. 5)獲取第一條活動(dòng)的id信息;
[0123] 步驟6. 6)根據(jù)活動(dòng)的id查詢?cè)摶顒?dòng)的description信息,并與用戶中所有的 topic進(jìn)行匹配,若包含,則將相應(yīng)的topic信息匹配次數(shù)加 1 ;否則,轉(zhuǎn)步驟6. 7);
[0124] 步驟6. 7)獲取下一條活動(dòng)的id信息,判斷該活動(dòng)數(shù)據(jù)信息是否到達(dá)活動(dòng)數(shù)據(jù)集 的末端,如果到達(dá),轉(zhuǎn)步驟6. 8),否則,轉(zhuǎn)步驟6. 6);
[0125] 步驟6. 8)更新該用戶的所有topic信息匹配次數(shù),并將其存入用戶向量u中;
[0126] 步驟6. 9)獲取下一條成員用戶數(shù)據(jù)信息;
[0127] 步驟6. 10)判斷該用戶數(shù)據(jù)信息是否到達(dá)用戶數(shù)據(jù)集的末端,如果到達(dá),轉(zhuǎn)步驟 6. 11),否則轉(zhuǎn)步驟6. 3);
[0128] 步驟6. 11)更新所有用戶向量U ;
[0129] 步驟6. 12)根據(jù)向量分解模型,利用用戶向量U和活動(dòng)向量V,計(jì)算用戶對(duì)活動(dòng)的 興趣度UV ;
[0130] 步驟7)考慮成員用戶的社會(huì)化關(guān)系,計(jì)算用戶間的相似度(如圖6所示):
[0131] 步驟7. 1)從members表中獲取所有成員數(shù)據(jù)信息;
[0132] 步驟7. 2)獲取第一條成員i數(shù)據(jù)信息;
[0133] 步驟7. 3)計(jì)算該用戶參與的群組數(shù);
[0134] 步驟7. 4)利用member-events表,計(jì)算出該用戶參與的所有活動(dòng)數(shù);
[0135] 步驟7. 5)計(jì)算出該用戶平均每個(gè)群組參與的活動(dòng)數(shù)Ei ;
[0136] 步驟7. 6)利用event-members表,查出與該用戶共同參與某一活動(dòng)的用戶集;
[0137] 步驟7. 7)將用戶集存儲(chǔ)到users表中;
[0138] 步驟7. 8)從users表中獲取第一條用戶j數(shù)據(jù)信息;
[0139] 步驟7. 9)計(jì)算該用戶參與的群組數(shù);
[0140] 步驟7. 10)利用member-events表,計(jì)算出該用戶參與的所有活動(dòng)數(shù);
[0141] 步驟7. 11)計(jì)算出該用戶平均每個(gè)群組參與的活動(dòng)數(shù)寫;
[0142] 步驟7. 12)根據(jù)members表,抽出用戶i和用戶j共同參與的群組集;
[0143] 步驟7. 13)獲取一個(gè)群組g,
[0144] 步驟7. 14)計(jì)算用戶i在群組g中參與的活動(dòng)數(shù)Ei (g);
[0145] 步驟7. 15)計(jì)算用戶j在群組g中參與的活動(dòng)數(shù)Ej (g);
[0146] 步驟7. 16)計(jì)算出
【主權(quán)項(xiàng)】
1. 一種基于用戶興趣度和地理位置的活動(dòng)推薦方法,其特征在于,包括如下步驟: 將用戶所屬群組進(jìn)行分類,抽取群組里的群組信息數(shù)據(jù)、成員數(shù)據(jù),以及該群組里的活 動(dòng)信息數(shù)據(jù),并將其存儲(chǔ)在數(shù)據(jù)庫中,對(duì)這些數(shù)據(jù)進(jìn)行語料模式匹配預(yù)處理操作; 針對(duì)上述數(shù)據(jù),利用矩陣分解模型初步得到用戶對(duì)于活動(dòng)的興趣度,篩選出用戶感興 趣的活動(dòng)數(shù)據(jù)集; 根據(jù)用戶的社會(huì)化關(guān)系和用戶的活躍度,利用用戶間的相似相關(guān)性,得到用戶對(duì)于活 動(dòng)的興趣度,進(jìn)一步篩選出用戶感興趣的活動(dòng)數(shù)據(jù)集; 對(duì)活動(dòng)發(fā)生的地理位置進(jìn)行區(qū)域劃分,根據(jù)用戶在該區(qū)域內(nèi)的活躍度,使用優(yōu)化方法, 確定用戶最終感興趣且參與的活動(dòng)數(shù)據(jù)集。
2. 根據(jù)權(quán)利要求1所述的方法,其特征是,對(duì)活動(dòng)數(shù)據(jù)集進(jìn)行預(yù)處理的過程具體為: 步驟1. 1)獲取成員數(shù)據(jù)集信息; 步驟1. 2)初始化所有用戶感興趣的活動(dòng)向量,設(shè)為V ; 步驟1. 3)獲取第一條成員數(shù)據(jù)信息; 步驟1. 4)得到該成員用戶的標(biāo)簽信息; 步驟1. 5)初始化該用戶的感興趣的活動(dòng)向量V ; 步驟1. 6)獲取活動(dòng)數(shù)據(jù)集信息; 步驟1. 7)初始化所有活動(dòng)興趣標(biāo)志為O ; 步驟1. 8)獲取第一條活動(dòng)數(shù)據(jù)信息; 步驟1. 9)將該活動(dòng)標(biāo)簽與用戶的興趣標(biāo)簽進(jìn)行匹配,如果匹配,轉(zhuǎn)步驟1. 10),否則, 轉(zhuǎn)步驟1. 11); 步驟1. 10)計(jì)算匹配次數(shù),并更新為該活動(dòng)的興趣標(biāo)志; 步驟1. 11)獲取下一條活動(dòng)數(shù)據(jù)信息; 步驟1. 12)判斷是否到達(dá)活動(dòng)數(shù)據(jù)集末端,若到達(dá),轉(zhuǎn)步驟1. 13),否則,轉(zhuǎn)步驟1.9); 步驟1. 13)刪除活動(dòng)興趣標(biāo)志為0的活動(dòng)數(shù)據(jù); 步驟1. 14)更新該用戶的感興趣的活動(dòng)向量V ; 步驟1. 15)獲取下一條成員數(shù)據(jù)信息; 步驟1. 16)判斷該用戶數(shù)據(jù)信息是否到達(dá)數(shù)據(jù)集末端,若到達(dá),轉(zhuǎn)步驟1. 17),否則,轉(zhuǎn) 步驟1. 4); 步驟1. 17)更新所有用戶感興趣的活動(dòng)向量集V。
3. 根據(jù)權(quán)利要求2所述的方法,其特征是,利用矩陣分解模型初步得到用戶對(duì)于活動(dòng) 的興趣度的過程具體為: 步驟2. 1)獲取成員的所有數(shù)據(jù)集信息; 步驟2. 2)獲取成員-活動(dòng)數(shù)據(jù)集信息; 步驟2. 3)根據(jù)這些數(shù)據(jù)集得到成員的各個(gè)標(biāo)簽的權(quán)值比重; 步驟2. 4)將其存入用戶向量U中; 步驟2. 5)利用向量分解模型,計(jì)算用戶對(duì)活動(dòng)的興趣度。
4. 根據(jù)權(quán)利要求3所述的方法,其特征是,根據(jù)成員用戶的社會(huì)化關(guān)系,計(jì)算用戶間的 相似度的過程為: 步驟3. 1)獲取所有成員數(shù)據(jù)信息; 步驟3. 2)獲取成員i的第一條數(shù)據(jù)信息; 步驟3. 3)計(jì)算該成員參與的群組數(shù); 步驟3. 4)計(jì)算出該成員參與的所有活動(dòng)數(shù); 步驟3. 5)計(jì)算出該成員平均每個(gè)群組參與的活動(dòng)數(shù); 步驟3. 6)獲取該成員共同參與某一活動(dòng)的用戶集; 步驟3. 7)從用戶集中獲取用戶j的第一條數(shù)據(jù)信息; 步驟3. 8)計(jì)算該用戶參與的群組數(shù); 步驟3. 9)計(jì)算出該用戶參與的所有活動(dòng)數(shù); 步驟3. 10)計(jì)算出該用戶平均每個(gè)群組參與的活動(dòng)數(shù); 步驟3. 11)獲取用戶i和用戶j共同參與的群組集; 步驟3. 12)分別計(jì)算用戶i和用戶j在相同群組中的活躍度; 步驟3. 13)利用皮爾森相關(guān)系數(shù),計(jì)算用戶i和用戶j之間的相似性; 步驟3. 14)從用戶集中獲取用戶j的下一條數(shù)據(jù)信息; 步驟3. 15)判斷該用戶數(shù)據(jù)信息是否到達(dá)用戶數(shù)據(jù)集末端,若是,轉(zhuǎn)步驟3. 16),否則, 轉(zhuǎn)步驟3. 8); 步驟3. 16)得到兩用戶之間前k個(gè)最大的相似度,存入表中; 步驟3. 17)獲取成員i的下一條數(shù)據(jù)信息; 步驟3. 18)判斷是否到達(dá)用戶數(shù)據(jù)集末端,若是,轉(zhuǎn)步驟3. 19),否則,轉(zhuǎn)步驟3. 3); 步驟3. 19)更新Top表。
5. 根據(jù)權(quán)利要求2或3或4所述的方法,其特征是,利用相似相關(guān)性,計(jì)算用戶對(duì)活動(dòng) 的興趣度的過程為: 步驟4. 1)獲取用戶的感興趣的活動(dòng)向量集V ; 步驟4. 2)利用相似相關(guān)性,計(jì)算用戶對(duì)活動(dòng)的興趣度; 步驟4. 3)更新用戶感興趣的活動(dòng)向量集V。
6. 根據(jù)權(quán)利要求4所述的方法,其特征是,基于地理位置的活動(dòng)數(shù)據(jù)集優(yōu)化的過程為: 步驟5. 1)獲取活動(dòng)向量集V ; 步驟5. 2)根據(jù)活動(dòng)的地理位置將其劃分區(qū)域; 步驟5. 3)獲取所有成員數(shù)據(jù)集信息; 步驟5. 4)計(jì)算用戶在某一區(qū)域的活躍度; 步驟5. 5)計(jì)算活動(dòng)屬于某一區(qū)域的概率; 步驟5. 6)計(jì)算用戶對(duì)活動(dòng)的興趣度; 步驟5. 7)更新用戶感興趣的活動(dòng)向量集V ; 步驟5. 8)完成用戶感興趣的活動(dòng)推薦。
【專利摘要】本發(fā)明公開了一種基于用戶興趣度和地理位置的活動(dòng)推薦方法,首先在Meetup API開放平臺(tái)獲取相應(yīng)的權(quán)限,通過群組接口、活動(dòng)接口和成員接口抽取相應(yīng)的群組數(shù)據(jù)信息、活動(dòng)數(shù)據(jù)信息以及成員數(shù)據(jù)信息;其次,根據(jù)抽取的數(shù)據(jù)集信息,利用向量分解模型初步篩選出用戶感興趣的活動(dòng)數(shù)據(jù)集;然后,結(jié)合用戶的社會(huì)化關(guān)系,使用皮爾森相關(guān)系數(shù),進(jìn)一步篩選出用戶感興趣的活動(dòng)數(shù)據(jù)集;接著,考慮到活動(dòng)發(fā)生的地理位置對(duì)用戶是否參與一個(gè)活動(dòng)的影響,對(duì)活動(dòng)發(fā)生的地理位置劃分區(qū)域,使用優(yōu)化方法,確定用戶最終感興趣且參與的活動(dòng)數(shù)據(jù)集;最后,成地將活動(dòng)信息推薦給相關(guān)的用戶。本發(fā)明方法能夠?qū)崿F(xiàn)從海量的活動(dòng)數(shù)據(jù)中高效地向用戶推薦合適的活動(dòng)。
【IPC分類】G06F17-30
【公開號(hào)】CN104834695
【申請(qǐng)?zhí)枴緾N201510201422
【發(fā)明人】張衛(wèi)豐, 高秋云
【申請(qǐng)人】南京郵電大學(xué)
【公開日】2015年8月12日
【申請(qǐng)日】2015年4月24日