MapReduce平臺(tái)上的虛擬人建立方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其設(shè)及一種MapRe化ce平臺(tái)上的虛擬人建立方 法。
【背景技術(shù)】
[0002] 當(dāng)前,即時(shí)通訊,電子郵件,網(wǎng)絡(luò)游戲,P2P軟件下載,網(wǎng)絡(luò)論壇,網(wǎng)絡(luò)招聘,電子商 務(wù)交易,網(wǎng)絡(luò)預(yù)定機(jī)票酒店等各種網(wǎng)絡(luò)服務(wù)給網(wǎng)絡(luò)用戶的生活帶來極大的便利。各種網(wǎng)絡(luò) 服務(wù)一般會(huì)給每個(gè)用戶分配一個(gè)帳號(hào),該帳號(hào)跟用戶的注冊(cè)信息相關(guān)聯(lián)并用W對(duì)各用戶進(jìn) 行記錄和識(shí)別,比如網(wǎng)絡(luò)用戶的即時(shí)通信號(hào)碼(如QQ賬號(hào))或電子郵件地址,網(wǎng)絡(luò)游戲帳 號(hào),論壇登陸帳號(hào),W及P2P軟件帳號(hào)等等。
[0003] 每個(gè)網(wǎng)絡(luò)用戶都擁有類型多樣的賬號(hào),而大量的網(wǎng)絡(luò)用戶則帶來的巨量的賬號(hào)數(shù) 據(jù),對(duì)相關(guān)部口來說,有效管理網(wǎng)絡(luò)用戶信息已經(jīng)成為艱巨的任務(wù)。為有效管理網(wǎng)絡(luò)用戶信 息,實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)帳號(hào)歸屬關(guān)系的分析,即哪些帳號(hào)屬于同一個(gè)人(虛擬人),現(xiàn)已成為亟需 解決的問題。
[0004] 現(xiàn)有技術(shù)在面對(duì)構(gòu)建虛擬人的問題時(shí),大多歸于屬性匹配方式。屬性匹配的方案 大致如下:
[0005] A)指定網(wǎng)絡(luò)帳號(hào)屬性匹配的規(guī)則,在哪種情況下用哪些屬性進(jìn)行匹配,W及相應(yīng) 的匹配成功判定方法。比如,當(dāng)匹配一個(gè)QQ帳號(hào)和一個(gè)淘寶帳號(hào)時(shí),如果兩帳號(hào)的"姓名" 和"聯(lián)系方式"兩個(gè)字段的編輯距離(editdistance)均小于3,則認(rèn)為該兩個(gè)帳號(hào)匹配成 功。
[0006] B)根據(jù)屬性匹配的情況,構(gòu)建帳號(hào)之間屬于同一個(gè)人的程度(相似度)。并最終 根據(jù)相似度分辨出哪些帳號(hào)屬于同一個(gè)人。比如,上例中,只要匹配成功則認(rèn)為屬于同一個(gè) 人。
[0007]但是,實(shí)際生活中存在如下情況:
[000引1.賬號(hào)數(shù)據(jù)中經(jīng)常出現(xiàn)屬性缺失的情況,例如賬號(hào)注冊(cè)時(shí)只填寫了部分屬性值。
[0009] 2.不同類型的賬號(hào)數(shù)據(jù),共有的屬性少。而且共有的屬性中,不一定都能用于屬性 匹配。
[0010] 3.不同類型的賬號(hào)數(shù)據(jù),對(duì)同一語義的屬性不同,需要對(duì)齊,該進(jìn)一步增加了難 度。比如在A類帳號(hào)中,姓名對(duì)應(yīng)的字段就是"姓名"該一個(gè)字段,但在B類帳號(hào)中,姓名實(shí) 際上是用"姓"和"名"兩個(gè)字段來表示。
[0011] 4.實(shí)際賬號(hào)數(shù)據(jù)中,屬性值的可信度并不是很高。例如,因?yàn)槿狈?shí)名認(rèn)證,可能 存在身份證號(hào)不真實(shí)的情況。
[001引 5.需要進(jìn)行屬性級(jí)別的比較,復(fù)雜度較高。
[0013] 該些情況使得屬性匹配的過程復(fù)雜、計(jì)算量大且實(shí)際結(jié)果不理想,尤其是針對(duì)大 量數(shù)據(jù)處理時(shí),準(zhǔn)確度較低。
[0014] 另一方面,MapRe化ce是谷歌提出的分布式并行計(jì)算框架,用于大規(guī)模數(shù)據(jù)集的并 行運(yùn)算,主要通過"Map(映射)"和"Re化ce(化簡(jiǎn))"該兩個(gè)步驟來并行處理大規(guī)模的數(shù)據(jù) 集。在MapRe化ce平臺(tái)上的計(jì)算過程中,輸入數(shù)據(jù)首先被切分到集群的不同計(jì)算機(jī)上,集 群中其他計(jì)算機(jī)分配為執(zhí)行Map作業(yè)或Re化ce作業(yè);Map作業(yè)從輸入數(shù)據(jù)中抽取出鍵值對(duì) <Key,Value〉,每一個(gè)鍵值對(duì)都作為參數(shù)傳遞給map函數(shù),map函數(shù)產(chǎn)生的中間鍵值對(duì)被緩 存在內(nèi)存中,緩存的中間鍵值對(duì)會(huì)被定期寫入本地磁盤,而且該些中間鍵值對(duì)被分為R個(gè) 區(qū),R的大小是由用戶定義的,將來每個(gè)區(qū)會(huì)對(duì)應(yīng)一個(gè)Re化ce作業(yè);帶有相同Key的鍵值對(duì) 由同一個(gè)Re化ce作業(yè)來處理,Re化ce作業(yè)讀取該些中間鍵值對(duì),對(duì)于每個(gè)唯一的鍵,都將 鍵與關(guān)聯(lián)的值傳遞給re化ce函數(shù),re化ce函數(shù)產(chǎn)生的輸出會(huì)添加到該個(gè)分區(qū)的輸出文件 中。Map/Re化ce作業(yè)和map/re化ce函數(shù)的區(qū)別;Map作業(yè)處理一個(gè)輸入數(shù)據(jù)的分片,可能 需要調(diào)用多次map函數(shù)來處理每個(gè)輸入鍵值對(duì);Re化ce作業(yè)處理一個(gè)分區(qū)的中間鍵值對(duì), 期間要對(duì)每個(gè)不同的鍵調(diào)用一次re化ce函數(shù),Re化ce作業(yè)最終也對(duì)應(yīng)一個(gè)輸出文件。整 個(gè)過程中,輸入數(shù)據(jù)是來自底層分布式文件系統(tǒng)的,中間數(shù)據(jù)是放在本地文件系統(tǒng)的,最終 輸出數(shù)據(jù)是寫入底層分布式文件系統(tǒng)。為了能實(shí)現(xiàn)對(duì)海量數(shù)據(jù)的處理,克服單機(jī)本身資源 有限所帶來的限制,亟需在MapRe化ce平臺(tái)上實(shí)現(xiàn)虛擬人的建立。
【發(fā)明內(nèi)容】
[0015] 因此,本發(fā)明的目的在于提供一種MapRe化ce平臺(tái)上的虛擬人建立方法,解決因 帳號(hào)類型多樣等帶來的虛擬人構(gòu)建復(fù)雜、準(zhǔn)確度低的問題,實(shí)現(xiàn)對(duì)海量數(shù)據(jù)的處理,克服單 機(jī)本身資源有限所帶來的限制。
[0016] 為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種MapRe化ce平臺(tái)上的虛擬人建立方法,包括:
[0017] 步驟1、從行為日志中提取賬號(hào)及與賬號(hào)對(duì)應(yīng)的登陸時(shí)間、登陸終端信息;
[0018] 步驟2、根據(jù)賬號(hào)之間協(xié)同出現(xiàn)的情況計(jì)算賬號(hào)之間的相似度,構(gòu)造W節(jié)點(diǎn)表征賬 號(hào)的連通圖,并W節(jié)點(diǎn)之間的邊的長(zhǎng)度表征賬號(hào)之間的相似度,節(jié)點(diǎn)之間的邊越短,節(jié)點(diǎn)所 表征的賬號(hào)之間相似度越高;
[0019] 步驟3、基于MapRe化ce平臺(tái)對(duì)所述連通圖中的節(jié)點(diǎn)進(jìn)行聚類,根據(jù)聚類結(jié)果建立 虛擬人。
[0020] 其中,步驟3包括;
[0021] 步驟20、W連通圖中的節(jié)點(diǎn)和邊的信息作為輸入數(shù)據(jù),通過Map作業(yè)生成包括節(jié) 點(diǎn)W及鄰邊信息的鍵值對(duì),通過Re化ce作業(yè)生成包括節(jié)點(diǎn)、節(jié)點(diǎn)的本地密度化0W及節(jié)點(diǎn) 所有鄰邊信息的輸出,化0定義為連接本節(jié)點(diǎn)的長(zhǎng)度低于預(yù)定義值化的鄰邊的數(shù)目;
[0022] 步驟30、對(duì)于步驟20中Re化ce作業(yè)的輸出,通過Map作業(yè)生成包括節(jié)點(diǎn)、節(jié)點(diǎn) 化0、鄰居節(jié)點(diǎn)化0W及鄰邊信息的鍵值對(duì),對(duì)每個(gè)節(jié)點(diǎn),通過Re化ce作業(yè)遍歷節(jié)點(diǎn)化0、所 有鄰居節(jié)點(diǎn)化0W及所有鄰邊信息,得出每個(gè)節(jié)點(diǎn)的離散度Delta,Delta定義為本節(jié)點(diǎn)所 有連接更高化0值鄰居節(jié)點(diǎn)的鄰邊中最短邊的邊長(zhǎng),若不存在該樣的鄰居節(jié)點(diǎn),則取本節(jié) 點(diǎn)最長(zhǎng)鄰邊的邊長(zhǎng);再結(jié)合預(yù)定規(guī)則來進(jìn)行類標(biāo)識(shí)
[0023] 步驟40、相同類的各個(gè)節(jié)點(diǎn)一同構(gòu)成一個(gè)虛擬人。
[0024] 其中,所述預(yù)定規(guī)則包括;節(jié)點(diǎn)的化〇和Delta分別高于作為輸入?yún)?shù)的闊值R_ T和闊值D_T,則該節(jié)點(diǎn)為一個(gè)類的中心該節(jié)點(diǎn)的類標(biāo)識(shí)取其自身類標(biāo)識(shí);否則,節(jié)點(diǎn)的類 標(biāo)識(shí)取距離其最近且化0更高的鄰居節(jié)點(diǎn)的類標(biāo)識(shí);
[0025] 孤立節(jié)點(diǎn)的類標(biāo)識(shí)為自身類標(biāo)識(shí)。
[0026] 其中,所述預(yù)定規(guī)則包括:預(yù)先劃分化0值可能取值區(qū)間W及對(duì)應(yīng)的Delta值可能 取值區(qū)間,如果節(jié)點(diǎn)的Rho值屬于Rho值可能取值區(qū)間且節(jié)點(diǎn)的Delta值屬于對(duì)應(yīng)的Delta 值可能取值區(qū)間,則該節(jié)點(diǎn)為一個(gè)類的中屯、,該節(jié)點(diǎn)的類標(biāo)識(shí)取其自身類標(biāo)識(shí);否則,節(jié)點(diǎn) 的類標(biāo)識(shí)取距離其最近且化0更高的鄰居節(jié)點(diǎn)的類標(biāo)識(shí);
[0027] 孤立節(jié)點(diǎn)的類標(biāo)識(shí)為自身類標(biāo)識(shí)。
[002引其中,還引入賬號(hào)之間協(xié)同出現(xiàn)的情況W外的因素計(jì)算所述賬號(hào)之間的相似度。
[0029] 其中,還包括合并所有虛擬人及與虛擬人對(duì)應(yīng)的賬號(hào)成為虛擬人數(shù)據(jù)庫。
[0030] 其中,步驟20中Re化ce作業(yè)的輸出存儲(chǔ)于關(guān)系數(shù)據(jù)庫或鍵值數(shù)據(jù)庫中。
[0031] 其中,步驟30中的Map作業(yè)中,通過對(duì)步驟20中Re化ce作業(yè)的輸出進(jìn)行笛卡爾 積,實(shí)現(xiàn)對(duì)鄰居節(jié)點(diǎn)化0的遍歷。
[00對(duì)其中,步驟20包括;
[0033] 步驟21、連通圖中的節(jié)點(diǎn)和邊的信息作為輸入數(shù)據(jù)經(jīng)由Map作業(yè)生成鍵值對(duì),其 中,鍵包括標(biāo)識(shí)節(jié)點(diǎn)的字段,值包括標(biāo)識(shí)鄰居節(jié)點(diǎn)的字段和標(biāo)識(shí)該節(jié)點(diǎn)和鄰居節(jié)點(diǎn)之間鄰 邊的邊長(zhǎng)的字段;
[0034] 步驟22、對(duì)鍵值對(duì)按照鍵所包括的節(jié)點(diǎn)進(jìn)行分區(qū),鍵包括相同節(jié)點(diǎn)的鍵值對(duì)分配 至同一分區(qū);
[0035] 步驟23、對(duì)于同一分區(qū)內(nèi)的鍵值對(duì)按照鍵所包括的節(jié)點(diǎn)進(jìn)行分組,鍵包括相同節(jié) 點(diǎn)的鍵值對(duì)分配至同一組;
[0036] 步驟25、經(jīng)由Re化ce作業(yè),通過對(duì)屬于同一組的鍵值對(duì)的值的迭代來遍歷同一節(jié) 點(diǎn)的所有的鄰邊,生成包括節(jié)點(diǎn)、節(jié)點(diǎn)的本地密度化0W及節(jié)點(diǎn)所有鄰邊信息的輸出。
[0037] 其中,步驟20還包括:
[003引步驟21中,鍵還包括標(biāo)識(shí)該節(jié)點(diǎn)和鄰居節(jié)點(diǎn)之間鄰邊的邊長(zhǎng)的字段;
[0039] 步驟24、對(duì)于屬于同一組的鍵值對(duì)按照鍵所包括的鄰邊的邊長(zhǎng)進(jìn)行排序。
[0040] 其中,步驟30包括;
[0041] 步驟31、對(duì)于步驟20中Re化ce作業(yè)的輸出經(jīng)由Map作業(yè)生成鍵值對(duì),其中,鍵包 括標(biāo)識(shí)節(jié)點(diǎn)的字段,值包括標(biāo)識(shí)鄰居節(jié)點(diǎn)的字段、標(biāo)識(shí)該節(jié)點(diǎn)和鄰居節(jié)點(diǎn)之間鄰邊的邊長(zhǎng) 的字段、標(biāo)識(shí)該鄰居節(jié)點(diǎn)化0的字段和標(biāo)識(shí)該節(jié)點(diǎn)化〇的字段;
[0042] 步驟32、對(duì)鍵值對(duì)按照鍵所包括的節(jié)點(diǎn)進(jìn)行分區(qū),鍵包括相同節(jié)點(diǎn)的鍵值對(duì)分配 至同一分區(qū);
[0043] 步驟33、對(duì)于同一分區(qū)內(nèi)的鍵值對(duì)按照鍵所包括的節(jié)點(diǎn)進(jìn)行分組,鍵包括相同節(jié) 點(diǎn)的鍵值對(duì)分配至同一組;
[0044] 步驟35、經(jīng)由Re化ce作業(yè),對(duì)每個(gè)節(jié)點(diǎn),通過對(duì)屬于同一組的鍵值對(duì)的值的迭代 來遍歷節(jié)點(diǎn)化0、所有鄰居節(jié)點(diǎn)化0W及所有鄰邊信息,得出每個(gè)節(jié)點(diǎn)的離散度Delta,再結(jié) 合預(yù)定規(guī)則來進(jìn)行類標(biāo)識(shí)。
[0045] 其中,步驟30還包括:
[0046] 步驟31中,鍵還包括標(biāo)識(shí)該鄰居節(jié)點(diǎn)化〇的字段;
[0047] 步驟34、對(duì)于屬于同一組的鍵值對(duì)按照鍵所包括的