本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及一種基于社交網(wǎng)絡(luò)的群組查找方法和裝置。
背景技術(shù):
在線社交網(wǎng)絡(luò)已經(jīng)成為了人們生活中必不可少的一部分,并給社會網(wǎng)絡(luò)分析帶來了巨大的挑戰(zhàn)。群體性是社交網(wǎng)絡(luò)最重要的屬性之一,基于社交網(wǎng)絡(luò)研究群組性已逐漸成為趨勢。
在生活、工作中,我們經(jīng)常需要從社交網(wǎng)絡(luò)中查找群組以開展工作,籌備晚宴等。傳統(tǒng)的群組查找方法首先根據(jù)群組人數(shù)確定社交網(wǎng)絡(luò)數(shù)據(jù)中所有節(jié)點(diǎn)的可能組合,然后在通過群組的其他條件對查找的所有組合進(jìn)行逐一篩選,計(jì)算量非常大,查找效率極低。
技術(shù)實(shí)現(xiàn)要素:
基于此,有必要針對上述問題,提供一種群組查詢效率更高的基于社交網(wǎng)絡(luò)的群組查找方法和裝置。
一種基于社交網(wǎng)絡(luò)的群組查找方法,所述方法包括:
接收查詢終端發(fā)送的群組查找請求,所述群組查找請求中攜帶指定包含的查詢用戶標(biāo)識、設(shè)定的群組規(guī)模和群組核度,其中,所述群組核度限定了群組成員鄰接其他成員的最少的數(shù)量;
響應(yīng)于所述群組查找請求,調(diào)取預(yù)先生成的社交網(wǎng)絡(luò)圖,其中,所述社交網(wǎng)絡(luò)圖是根據(jù)社交網(wǎng)站中的社交關(guān)系數(shù)據(jù)生成的,所述社交網(wǎng)絡(luò)圖包括多個(gè)用戶節(jié)點(diǎn)和用于連接所述用戶節(jié)點(diǎn)的邊集;
根據(jù)所述社交網(wǎng)絡(luò)圖以所述查詢用戶標(biāo)識對應(yīng)的用戶節(jié)點(diǎn)為起始點(diǎn)進(jìn)行搜索拓展,在每個(gè)搜索拓展層中確定一個(gè)在所述社交網(wǎng)絡(luò)圖中連接用戶節(jié)點(diǎn)數(shù)量最多的用戶節(jié)點(diǎn)作為群組成員,直至確定的所述群組成員的數(shù)量等于所述群組規(guī)模;
其中,拓展的一級拓展層包括的所述用戶節(jié)點(diǎn)為所述查詢用戶的鄰接節(jié)點(diǎn),下一級拓展層包括的所述用戶節(jié)點(diǎn)為上一級拓展層確定的所述群組成員所鄰接的用戶節(jié)點(diǎn);
將確定的所述群組成員和所述查詢用戶組成待查找群組;
判斷所述待查找群組的群組核度是否不小于設(shè)定的所述群組核度,若是,將所述待查找群組作為查詢結(jié)果反饋至查詢終端顯示。
在一個(gè)實(shí)施例中,在所述響應(yīng)于所述群組查找請求,調(diào)取預(yù)先生成的社交網(wǎng)絡(luò)圖,其中,所述社交網(wǎng)絡(luò)圖是根據(jù)社交網(wǎng)站中的社交關(guān)系數(shù)據(jù)生成的,所述社交網(wǎng)絡(luò)圖包括多個(gè)用戶節(jié)點(diǎn)和用于連接所述用戶節(jié)點(diǎn)的邊集的步驟之后,還包括:
以所述查詢用戶標(biāo)識對應(yīng)的用戶節(jié)點(diǎn)為根節(jié)點(diǎn)構(gòu)建廣度優(yōu)先搜索樹,所述廣度優(yōu)先搜索樹從所述查詢用戶標(biāo)識開始依次遍歷所述社交網(wǎng)絡(luò)圖中所有的用戶節(jié)點(diǎn);
根據(jù)構(gòu)建的所述廣度優(yōu)先搜索樹確定每個(gè)用戶節(jié)點(diǎn)到所述根節(jié)點(diǎn)的最短社交距離;
計(jì)算所述群組規(guī)模與每個(gè)所述用戶節(jié)點(diǎn)的最短社交距離的差值,所述差值不大于1的用戶節(jié)點(diǎn)為剪枝節(jié)點(diǎn),在所述社交網(wǎng)絡(luò)圖中去除所述剪枝節(jié)點(diǎn)以及與所述剪枝節(jié)點(diǎn)關(guān)聯(lián)的邊集,生成剪枝后的社交網(wǎng)絡(luò)圖。
在一個(gè)實(shí)施例中,在所述計(jì)算所述群組規(guī)模與每個(gè)所述用戶節(jié)點(diǎn)的最短社交距離的差值,所述差值不大于1的用戶節(jié)點(diǎn)為剪枝節(jié)點(diǎn),在所述社交網(wǎng)絡(luò)圖中去除所述剪枝節(jié)點(diǎn)以及與所述剪枝節(jié)點(diǎn)關(guān)聯(lián)的邊集,生成剪枝后的社交網(wǎng)絡(luò)圖的步驟之后,還包括:
查找剪枝后的所述社交網(wǎng)絡(luò)圖的用戶節(jié)點(diǎn)中是否存在節(jié)點(diǎn)核度小于所述群組核度的用戶節(jié)點(diǎn),其中,所述節(jié)點(diǎn)核度為所述用戶節(jié)點(diǎn)所鄰接節(jié)點(diǎn)的數(shù)量,若是,則在剪枝后的社交網(wǎng)絡(luò)圖中去除查找到的所述用戶節(jié)點(diǎn),并更新剪枝后的所述社交網(wǎng)絡(luò)圖。
在一個(gè)實(shí)施例中,確定的所述待查找群組為多個(gè);所述方法還包括:
根據(jù)所述社交網(wǎng)絡(luò)圖確定所述待查找群組中各群組成員之間的邊集,根據(jù)確定的所述邊集以所述群組成員為用戶節(jié)點(diǎn)構(gòu)建每個(gè)所述待查詢?nèi)航M的群組網(wǎng)絡(luò)圖;
計(jì)算每個(gè)所述群組網(wǎng)絡(luò)圖的親密度;
將親密度最大的所述群組網(wǎng)絡(luò)圖對應(yīng)的所述待查找群組作為查詢結(jié)果反饋至查詢終端顯示。
在一個(gè)實(shí)施例中,所述群組網(wǎng)絡(luò)圖的群組親密度的計(jì)算公式為:
co(g)=∑(u,v)∈eω(u,v)
其中,co(g)為群組親密度,g=(v,e)為群組網(wǎng)絡(luò)圖,v為群組網(wǎng)絡(luò)圖中節(jié)點(diǎn)的集合,e為群組網(wǎng)絡(luò)圖中的邊集,
節(jié)點(diǎn)u,v∈v且有(u,v)∈e,
其中n(u)表示節(jié)點(diǎn)u的鄰居節(jié)點(diǎn)集合,節(jié)點(diǎn)u和v的共同鄰居節(jié)點(diǎn)數(shù)為|n(u)∩n(v)|。
一種基于社交網(wǎng)絡(luò)的群組查找裝置,所述裝置包括:
查找請求模塊,用于接收查詢終端發(fā)送的群組查找請求,所述群組查找請求中攜帶指定包含的查詢用戶標(biāo)識、設(shè)定的群組規(guī)模和群組核度,其中,所述群組核度限定了群組成員鄰接其他成員的最少的數(shù)量;
社交網(wǎng)絡(luò)圖調(diào)取模塊,用于響應(yīng)于所述群組查找請求,調(diào)取預(yù)先生成的社交網(wǎng)絡(luò)圖,其中,所述社交網(wǎng)絡(luò)圖是根據(jù)社交網(wǎng)站中的社交關(guān)系數(shù)據(jù)生成的,所述社交網(wǎng)絡(luò)圖包括多個(gè)用戶節(jié)點(diǎn)和用于連接所述用戶節(jié)點(diǎn)的邊集;
層級查找模塊,用于根據(jù)所述社交網(wǎng)絡(luò)圖以所述查詢用戶標(biāo)識對應(yīng)的用戶節(jié)點(diǎn)為起始點(diǎn)進(jìn)行設(shè)定層數(shù)的搜索拓展,在每個(gè)搜索拓展層中確定一個(gè)在所述社交網(wǎng)絡(luò)圖中連接用戶節(jié)點(diǎn)數(shù)量最多的用戶節(jié)點(diǎn)作為群組成員,以使確定的所述群組成員的數(shù)量滿足所述設(shè)定的群組規(guī)模;
其中,在拓展過程中的一級拓展層包括的所述用戶節(jié)點(diǎn)為所述查詢用戶的鄰接節(jié)點(diǎn),下一級拓展層包括的所述用戶節(jié)點(diǎn)為上一級拓展層確定的所述群組成員所鄰接的用戶節(jié)點(diǎn);
群組確定模塊,用于將確定的所述群組成員和所述查詢用戶組成待查找群組;
群組反饋模塊,用于判斷所述待查找群組的群組核度是否不小于設(shè)定的所述群組核度,若是,將所述待查找群組作為查詢結(jié)果反饋至查詢終端顯示。
在一個(gè)實(shí)施例中,所述裝置還包括:
搜索樹構(gòu)建模塊,用于以所述查詢用戶標(biāo)識對應(yīng)的用戶節(jié)點(diǎn)為根節(jié)點(diǎn)構(gòu)建廣度優(yōu)先搜索樹,所述廣度優(yōu)先搜索樹從所述查詢用戶標(biāo)識開始依次遍歷所述社交網(wǎng)絡(luò)圖中所有的用戶節(jié)點(diǎn);
最短社交距離計(jì)算模塊,用于根據(jù)構(gòu)建的所述廣度優(yōu)先搜索樹確定每個(gè)用戶節(jié)點(diǎn)到所述根節(jié)點(diǎn)的最短社交距離;
剪枝模塊,用于計(jì)算所述群組規(guī)模與每個(gè)所述用戶節(jié)點(diǎn)的最短社交距離的差值,所述差值不大于1的用戶節(jié)點(diǎn)為剪枝節(jié)點(diǎn),在所述社交網(wǎng)絡(luò)圖中去除所述剪枝節(jié)點(diǎn)以及與所述剪枝節(jié)點(diǎn)關(guān)聯(lián)的邊集,生成剪枝后的社交網(wǎng)絡(luò)圖。
在一個(gè)實(shí)施例中,所述剪枝模塊,還用于查找剪枝后的所述社交網(wǎng)絡(luò)圖的用戶節(jié)點(diǎn)中是否存在節(jié)點(diǎn)核度小于所述群組核度的用戶節(jié)點(diǎn),其中,所述節(jié)點(diǎn)核度為所述用戶節(jié)點(diǎn)所鄰接節(jié)點(diǎn)的數(shù)量,若是,則在剪枝后的社交網(wǎng)絡(luò)圖中去除查找到的所述用戶節(jié)點(diǎn),并更新剪枝后的所述社交網(wǎng)絡(luò)圖。
在一個(gè)實(shí)施例中,確定的所述待查找群組為多個(gè);所述裝置還包括:
群組網(wǎng)絡(luò)圖構(gòu)建模塊,用于根據(jù)所述社交網(wǎng)絡(luò)圖確定所述待查找群組中各群組成員之間的邊集,根據(jù)確定的所述邊集以所述群組成員為用戶節(jié)點(diǎn)構(gòu)建每個(gè)所述待查詢?nèi)航M的群組網(wǎng)絡(luò)圖;
親密度計(jì)算模塊,用于計(jì)算每個(gè)所述群組網(wǎng)絡(luò)圖的親密度;
所述群組反饋模塊,還用于將親密度最大的所述群組網(wǎng)絡(luò)圖對應(yīng)的所述待查找群組作為查詢結(jié)果反饋至查詢終端顯示。
在一個(gè)實(shí)施例中,所述群組網(wǎng)絡(luò)圖的群組親密度的計(jì)算公式為:
co(g)=∑(u,v)∈eω(u,v)
其中,co(g)為群組親密度,g=(v,e)為群組網(wǎng)絡(luò)圖,v為群組網(wǎng)絡(luò)圖中節(jié)點(diǎn)的集合,e為群組網(wǎng)絡(luò)圖中的邊集,
節(jié)點(diǎn)u,v∈v且有(u,v)∈e,
其中n(u)表示節(jié)點(diǎn)u的鄰居節(jié)點(diǎn)集合,節(jié)點(diǎn)u和v的共同鄰居節(jié)點(diǎn)數(shù)為|n(u)∩n(v)|。
上述基于社交網(wǎng)絡(luò)的群組查找方法和裝置,通過預(yù)先指定查詢用戶,查詢系統(tǒng)調(diào)用生成的社交網(wǎng)絡(luò)圖,并以查詢用戶對應(yīng)的用戶節(jié)點(diǎn)作為起始點(diǎn),對社交網(wǎng)絡(luò)圖進(jìn)行搜索拓展,一級拓展層包括的用戶節(jié)點(diǎn)為查詢用戶的鄰接節(jié)點(diǎn),從一級拓展層的用戶節(jié)點(diǎn)中確定一個(gè)群組成員,確定的群組成員為在原社交網(wǎng)絡(luò)圖中鄰接節(jié)點(diǎn)數(shù)量最多的用戶節(jié)點(diǎn);進(jìn)而,再以一級拓展層中確定的群組成員為起始點(diǎn)拓展下一拓展層,同樣的,拓展層包括的用戶節(jié)點(diǎn)為上一級確定的群組成員所鄰接的用戶節(jié)點(diǎn),逐層拓展,直至確定的群組成員(包括指定的查詢用戶)滿足指定的群組規(guī)模要求;然后判斷確定的群組是否滿足群組核度要求,也就是,根據(jù)群組成員以及群組成員之間的連接關(guān)系判斷每個(gè)群組成員鄰接的組內(nèi)其他群組成員的數(shù)量是否滿足核度要求,若是,則該群組為滿足條件的群組,將其對應(yīng)的群組信息返回至查詢終端;實(shí)現(xiàn)了以查詢用戶為中心進(jìn)行層級拓展,只需依賴社交網(wǎng)絡(luò)數(shù)據(jù)中各節(jié)點(diǎn)的連接關(guān)系,拓展過程簡單快捷,無需對所有可能的組合進(jìn)行逐一篩選,提高了查詢效率。另外,選取的群組成員均為核度較高的成員,可確保查找的群組具有較高的親密度。
附圖說明
圖1為一個(gè)實(shí)施例中基于社交網(wǎng)絡(luò)的群組查找方法的應(yīng)用環(huán)境圖;
圖2為一個(gè)實(shí)施例中服務(wù)器的內(nèi)部結(jié)構(gòu)示意圖;
圖3為一個(gè)實(shí)施例中基于社交網(wǎng)絡(luò)的群組查找方法的流程圖;
圖4為一個(gè)實(shí)施例中社交網(wǎng)絡(luò)圖;
圖5a-5b為一個(gè)實(shí)施例中以查詢用戶為起始點(diǎn)的層級搜索原理圖;
圖6a-6c為一個(gè)實(shí)施例中經(jīng)層級搜索得到的待查找群組;
圖7為一個(gè)實(shí)施例中社交網(wǎng)絡(luò)圖節(jié)點(diǎn)剪枝所涉及的流程圖;
圖8為一個(gè)實(shí)施例中社交網(wǎng)絡(luò)圖節(jié)點(diǎn)剪枝的原理圖;
圖9為一個(gè)實(shí)施例中當(dāng)滿足查詢條件的群組為多個(gè)時(shí),群組優(yōu)選所涉及的流程圖;
圖10為一個(gè)實(shí)施例中基于社交網(wǎng)絡(luò)的群組查找裝置的結(jié)構(gòu)框圖;
圖11為另一個(gè)實(shí)施例中基于社交網(wǎng)絡(luò)的群組查找裝置的結(jié)構(gòu)框圖;
圖12為又一個(gè)實(shí)施例中基于社交網(wǎng)絡(luò)的群組查找裝置的結(jié)構(gòu)框圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
如圖1所示,在一個(gè)實(shí)施例中,提供了一種基于社交網(wǎng)絡(luò)的群組查找方法的應(yīng)用環(huán)境圖,該應(yīng)用環(huán)境圖包括查詢終端110、服務(wù)器120。查詢終端110可通過網(wǎng)絡(luò)與服務(wù)器120通信。查詢終端110可以是智能手機(jī)、平板電腦、筆記本電腦、臺式計(jì)算機(jī)中的至少一種,但并不局限于此。服務(wù)器120可以是獨(dú)立的物理服務(wù)器,也可以是多個(gè)物理服務(wù)器構(gòu)成的服務(wù)器集群。查詢終端110向服務(wù)器120發(fā)送群組查找請求,指定查詢用戶、群組規(guī)模和群組核度。服務(wù)器120根據(jù)查詢終端的給定的群組查詢要求(群組規(guī)模和群組核度),以查詢用戶為中心對數(shù)據(jù)源(社交網(wǎng)絡(luò)圖)進(jìn)行分層級搜索拓展,每個(gè)搜索拓展層中確定一個(gè)在所述社交網(wǎng)絡(luò)圖中連接用戶節(jié)點(diǎn)數(shù)量最多的用戶節(jié)點(diǎn)作為群組成員,在確定過程中保證群組規(guī)模要求。初步確定群組后,再對確定的群組進(jìn)行核度驗(yàn)證,若滿足核度要求,則將查找的群組對應(yīng)的群組信息反饋至查詢終端。
如圖2所示,在一個(gè)實(shí)施例中,提供了一種服務(wù)器120,該服務(wù)器120包括通過系統(tǒng)總線連接的處理器、非易失性存儲介質(zhì)、內(nèi)存儲器和網(wǎng)絡(luò)接口。其中,該服務(wù)器120的非易失性存儲介質(zhì)存儲有操作系統(tǒng)、數(shù)據(jù)庫和至少一條計(jì)算機(jī)可執(zhí)行指令。該計(jì)算機(jī)可執(zhí)行指令被處理器執(zhí)行時(shí),可使得處理器執(zhí)行一種如圖3所示的基于社交網(wǎng)絡(luò)的群組查找方法。數(shù)據(jù)庫用于存儲數(shù)據(jù),如存儲該基于社交網(wǎng)絡(luò)的群組查找方法執(zhí)行過程中涉及的社交網(wǎng)絡(luò)圖等數(shù)據(jù)。處理器用于提供計(jì)算和控制能力,支撐整個(gè)服務(wù)器120的運(yùn)行。內(nèi)存儲器為非易失性存儲介質(zhì)中的基于社交網(wǎng)絡(luò)的群組查找裝置的運(yùn)行提供環(huán)境。網(wǎng)絡(luò)接口用于與查詢終端110進(jìn)行通信連接。本領(lǐng)域技術(shù)人員可以理解,圖2中示出的服務(wù)器的結(jié)構(gòu),僅僅是與本申請方案相關(guān)的部分結(jié)構(gòu)的框圖,并不構(gòu)成對本申請方案所應(yīng)用于其上的服務(wù)器的限定,具體的服務(wù)器可以包括比圖中所示更多或更少的部件,或者組合某些部件,或者具有不同的部件布置。
如圖3所示,在一個(gè)實(shí)施例中,提供了一種基于社交網(wǎng)絡(luò)的群組查找方法,該包括具體包括如下步驟:
步驟s202:接收查詢終端發(fā)送的群組查找請求,群組查找請求中攜帶指定包含的查詢用戶標(biāo)識、設(shè)定的群組規(guī)模和群組核度,所述群組核度限定了群組成員鄰接其他成員的最少的數(shù)量。
查詢終端中顯示查詢界面,在查詢界面中用戶可進(jìn)行查詢條件的設(shè)置。具體的,查詢條件包括群組規(guī)模和群組核度。其中,群組規(guī)模是指群組成員的數(shù)量;群組核度是指確定的群組成員中每個(gè)群組成員鄰接組內(nèi)其他群組成員的數(shù)量的最小值。
在一個(gè)具體的場景中對查詢條件進(jìn)行解釋:假設(shè)alice想要舉辦一場規(guī)模為10人的晚宴活動(dòng)(包括alice在內(nèi)),為了避免參與者之間太陌生使得晚宴期間太過冷清,alice提出了以下查詢要求:1)晚宴規(guī)模為10人(包括alice在內(nèi));2)每個(gè)參與者至少認(rèn)識其他3個(gè)參與者。要求1)即為群組規(guī)模,要求2)即為群組核度。
如圖4為一個(gè)包括6個(gè)群組成員的群組,圖中每個(gè)群組成員至少鄰接3個(gè)其他群組成員,因此,該群組的群組核度為3。
用戶可通過查詢界面中的輸入控件設(shè)置群組規(guī)模和群組核度。除此之外,還可以通過查詢界面指定查詢用戶。查詢用戶為指定的群組成員,即必須包括的群組成員。如舉例場景中的alice即為查詢用戶。
在一個(gè)實(shí)施例中,在指定查詢用戶之前,需要設(shè)置查詢的社交網(wǎng)站,如微博、msn等。服務(wù)器將根據(jù)選定的社交網(wǎng)站,向查詢用戶對應(yīng)的終端控件推送對應(yīng)的查詢用戶標(biāo)識。以使用戶通過終端控件進(jìn)行查詢用戶標(biāo)識的選擇。
默認(rèn)狀態(tài)下,查詢用戶為查詢終端用戶在該選定的數(shù)據(jù)庫中的用戶標(biāo)識。例如,選定的社交網(wǎng)站為微博,查詢終端的用戶標(biāo)識為litch,默認(rèn)狀態(tài)下,查詢用戶為litch在微博中的標(biāo)識,如litchsweety。
在一個(gè)實(shí)施例中,可通過注冊信息中的注冊身份信息(如電話號碼、真實(shí)姓名、身份編號等)自動(dòng)查詢查詢終端用戶在指定社交網(wǎng)站中的用戶標(biāo)識。
步驟s204:響應(yīng)于群組查找請求,調(diào)取預(yù)先生成的社交網(wǎng)絡(luò)圖,其中,社交網(wǎng)絡(luò)圖是根據(jù)社交網(wǎng)站中的社交關(guān)系數(shù)據(jù)生成的,社交網(wǎng)絡(luò)圖包括多個(gè)用戶節(jié)點(diǎn)和用于連接用戶節(jié)點(diǎn)的邊集。
社交網(wǎng)絡(luò)圖是根據(jù)預(yù)先指定的社交網(wǎng)站中的社交關(guān)系數(shù)據(jù)生成的。社交網(wǎng)站中的社交關(guān)系可以是好友關(guān)系、相互關(guān)注等彼此之間互相關(guān)聯(lián)的關(guān)系。社交關(guān)系包括的兩個(gè)要素分別是用戶和用戶之間的關(guān)聯(lián)關(guān)系。根據(jù)社交關(guān)系生成的社交網(wǎng)絡(luò)圖通過節(jié)點(diǎn)標(biāo)識用戶,通過節(jié)點(diǎn)之間的邊線標(biāo)識用戶之間的關(guān)系,圖4即為一個(gè)社交網(wǎng)絡(luò)圖。
基于社交網(wǎng)站的社交關(guān)系數(shù)據(jù)生成的社交網(wǎng)絡(luò)圖是一個(gè)非常龐大且復(fù)雜的社交網(wǎng)絡(luò)圖像。按照傳統(tǒng)做法,篩選出符合查詢條件的群組將會是一個(gè)重大的工程,需要花費(fèi)較多的時(shí)間和較大的計(jì)算資源。本實(shí)施例中,將以逐層確定中心節(jié)點(diǎn)的思想來又快又準(zhǔn)確地達(dá)到查找到滿足查詢條件的群組的目的,具體詳見后續(xù)步驟。
步驟s206:根據(jù)社交網(wǎng)絡(luò)圖以查詢用戶標(biāo)識對應(yīng)的用戶節(jié)點(diǎn)為起始點(diǎn)進(jìn)行搜索拓展,在每個(gè)搜索拓展層中確定一個(gè)在社交網(wǎng)絡(luò)圖中連接用戶節(jié)點(diǎn)數(shù)量最多的用戶節(jié)點(diǎn)作為群組成員,直至確定的群組成員的數(shù)量等于群組規(guī)模,其中,在拓展過程中的一級拓展層包括的用戶節(jié)點(diǎn)為查詢用戶的鄰接節(jié)點(diǎn),下一級拓展層包括的用戶節(jié)點(diǎn)為上一級拓展層確定的群組成員所鄰接的用戶節(jié)點(diǎn)。
首先,在社交網(wǎng)絡(luò)圖中定位到查詢用戶標(biāo)識所在位置,然后以查詢用戶標(biāo)識所對應(yīng)的用戶節(jié)點(diǎn)為起始點(diǎn)進(jìn)行層級拓展,形成拓展子圖。
具體的,拓展子圖的第一拓展層所包括的用戶節(jié)點(diǎn)為查詢用戶所對應(yīng)的用戶節(jié)點(diǎn)所鄰接的用戶節(jié)點(diǎn)。如圖5a中的社交網(wǎng)絡(luò)圖所示,假設(shè)查詢終端指定的查詢用戶是用戶節(jié)點(diǎn)v4,那么,第一拓展層包含的用戶節(jié)點(diǎn)為與用戶節(jié)點(diǎn)v4鄰接的節(jié)點(diǎn),分別為v2、v5、v6,如圖5b中的拓展子圖。
確定第一拓展層中的用戶節(jié)點(diǎn)后,在第一拓展層包括的用戶節(jié)點(diǎn)中確定一個(gè)用戶節(jié)點(diǎn)作為群組成員。具體的,確定在社交網(wǎng)絡(luò)圖中鄰接用戶節(jié)點(diǎn)數(shù)量最多的節(jié)點(diǎn)作為群組成員。第一拓展層中的v2用戶節(jié)點(diǎn)在社交網(wǎng)絡(luò)圖中的鄰接節(jié)點(diǎn)數(shù)量是6;v5用戶節(jié)點(diǎn)在社交網(wǎng)絡(luò)圖中的鄰接節(jié)點(diǎn)數(shù)量是7;v6用戶節(jié)點(diǎn)在社交網(wǎng)絡(luò)圖中的鄰接節(jié)點(diǎn)數(shù)量是4。因此,選定v5為群組成員。
確定新的群組成員后,再以新的群組成員所對應(yīng)的用戶節(jié)點(diǎn)作為新的中心節(jié)點(diǎn),進(jìn)行下一層級拓展。也就是,以v5作為新的中心節(jié)點(diǎn)拓展第二拓展層。同樣的,第二拓展層所包括的用戶節(jié)點(diǎn)為v5鄰接的用戶節(jié)點(diǎn)。需要說明的是,新的拓展層中不包括已經(jīng)確定為群組成員的用戶節(jié)點(diǎn)。如圖5b,雖然v4是v5鄰接的節(jié)點(diǎn),但由于v4是已經(jīng)確定為群組成員的用戶節(jié)點(diǎn),所以第二拓展層中不包括節(jié)點(diǎn)v4。第二拓展層包括的用戶節(jié)點(diǎn)分別為v1、v2、v3、v6、v7、v9。根據(jù)第二拓展層確定的鄰接節(jié)點(diǎn)最多的節(jié)點(diǎn)是v2(鄰接節(jié)點(diǎn)數(shù)量是6個(gè)),因此,確定節(jié)點(diǎn)v2為群組成員。
若指定的群組規(guī)模為4,則只需再確定最后一個(gè)群組成員即可,也就是拓展到第三拓展層即可。同理,第三拓展層包括的用戶節(jié)點(diǎn)分別為v1、v8、v3、v6。在社交網(wǎng)絡(luò)圖中,v1、v8、v3、v6鄰接的用戶節(jié)點(diǎn)的數(shù)量分別為:3、4、4、4。因此,確定的群組成員可以是v8或v3或v6。
步驟s208:將確定的群組成員和查詢用戶組成待查找群組。
根據(jù)步驟s206,確定的待查找群組為{v4、v5、v2、v6}或者{v4、v5、v2、v3}或者{v4、v5、v2、v8}。
根據(jù)確定的待查找群組成員以及群組成員之間的關(guān)聯(lián)關(guān)系(該關(guān)聯(lián)關(guān)系可從社交關(guān)系圖中確定),構(gòu)建待查找群組的群組網(wǎng)絡(luò)圖。
如{v4、v5、v2、v6}、{v4、v5、v2、v3}、{v4、v5、v2、v8}的群組網(wǎng)絡(luò)圖依次如圖6a、6b、6c所示。
步驟s210:判斷所述待查找群組的群組核度是否不小于設(shè)定的所述群組核度,若是,將所述待查找群組作為查詢結(jié)果反饋至查詢終端顯示。
確定待查找群組的核度,根據(jù)圖6a-6c可清楚得到,{v4、v5、v2、v6}的核度為3;{v4、v5、v2、v3}、的核度為2;{v4、v5、v2、v8}的核度為1。若查詢終端指定的群組核度為3,則{v4、v5、v2、v6}為滿足查詢條件的群組。若查詢終端指定的群組核度為2,則{v4、v5、v2、v6}和{v4、v5、v2、v3}為滿足查詢條件的群組。將滿足查詢條件的群組推送至查詢終端。
本實(shí)施例中的基于社交網(wǎng)絡(luò)的群組查找方法以查詢用戶為中心進(jìn)行層級拓展,所采用的拓展只需依賴社交網(wǎng)絡(luò)數(shù)據(jù)中各節(jié)點(diǎn)的連接關(guān)系。拓展過程簡單快捷,無需對查找可能的所有組合進(jìn)行逐一篩選,查詢效率高。另外,選取的群組成員均為核度較高的成員,可確保查找的群組具有較高的親密度。
在一個(gè)實(shí)施例中,在步驟s204:響應(yīng)于群組查找請求,調(diào)取預(yù)先生成的社交網(wǎng)絡(luò)圖,社交網(wǎng)絡(luò)圖是根據(jù)社交網(wǎng)站中的社交關(guān)系數(shù)據(jù)生成的,社交網(wǎng)絡(luò)圖包括多個(gè)用戶節(jié)點(diǎn)和用于連接用戶節(jié)點(diǎn)的邊集的步驟之后,還包括:對調(diào)取的社交網(wǎng)絡(luò)圖進(jìn)行剪枝處理。然后,再基于剪枝后的社交網(wǎng)絡(luò)圖執(zhí)行步驟s206:根據(jù)社交網(wǎng)絡(luò)圖以查詢用戶標(biāo)識對應(yīng)的用戶節(jié)點(diǎn)為起始點(diǎn)進(jìn)行設(shè)定層數(shù)的搜索拓展,在每個(gè)搜索拓展層中確定一個(gè)在社交網(wǎng)絡(luò)圖中連接用戶節(jié)點(diǎn)數(shù)量最多的用戶節(jié)點(diǎn)作為群組成員,以使確定的群組成員的數(shù)量滿足設(shè)定的群組規(guī)模;其中,在拓展過程中的一級拓展層包括的用戶節(jié)點(diǎn)為查詢用戶的鄰接節(jié)點(diǎn),下一級拓展層包括的用戶節(jié)點(diǎn)為上一級拓展層確定的群組成員所鄰接的用戶節(jié)點(diǎn)。
具體的,如圖7所示,對調(diào)取的社交網(wǎng)絡(luò)圖進(jìn)行剪枝處理的步驟包括:
步驟s302:以所述查詢用戶標(biāo)識對應(yīng)的用戶節(jié)點(diǎn)為根節(jié)點(diǎn)構(gòu)建廣度優(yōu)先搜索樹,所述廣度優(yōu)先搜索樹從所述查詢用戶標(biāo)識開始依次遍歷所述社交網(wǎng)絡(luò)圖中所有的用戶節(jié)點(diǎn)。
廣度優(yōu)先搜索是從圖的某個(gè)頂點(diǎn)v0出發(fā),在訪問v0之后,依次搜索訪問v0的各個(gè)未被訪問過的鄰接點(diǎn)w1,w2,…。然后順序搜索訪問w1的各未被訪問過的鄰接點(diǎn),w2的各未被訪問過的鄰接點(diǎn),…。即從v0開始,由近至遠(yuǎn),按層次依次訪問與v0有路徑相通且路徑長度分別為1,2,…的頂點(diǎn),直至連通圖中所有頂點(diǎn)都被訪問一次。
根據(jù)圖8(a)中的社交網(wǎng)絡(luò)圖,以查詢用戶v1為根節(jié)點(diǎn)構(gòu)建廣度優(yōu)先搜索樹(breadth-firstsearchbfs),圖8(b)所示為根據(jù)社交網(wǎng)絡(luò)圖構(gòu)建的基于查詢用戶v1的廣度優(yōu)先搜索樹。
步驟s304:根據(jù)構(gòu)建的廣度優(yōu)先搜索樹確定每個(gè)節(jié)點(diǎn)到查詢用戶的最短社交距離。
根據(jù)構(gòu)建的廣度優(yōu)先搜索樹可確定每個(gè)用戶節(jié)點(diǎn)距離根節(jié)點(diǎn)(查詢用戶)的社交距離,廣度優(yōu)先搜索樹確定的社交距離即為最短社交距離。如圖8(b)所示,v2、v3和v5的最短社交距離為1,v4、v6、v8的最短社交距離為2,v7的最短社交距離為3。
步驟s306:計(jì)算群組規(guī)模與每個(gè)用戶節(jié)點(diǎn)的最短社交距離的差值,差值不大于1的用戶節(jié)點(diǎn)為剪枝節(jié)點(diǎn),在社交網(wǎng)絡(luò)圖中去除剪枝節(jié)點(diǎn)以及與剪枝節(jié)點(diǎn)對應(yīng)的邊集。
假設(shè)指定的群組規(guī)模是4,對于最短社交距離為3的用戶節(jié)點(diǎn)v7,群組規(guī)模4與最短社交距離3的差值不大于1,所以用戶節(jié)點(diǎn)v7為剪枝節(jié)點(diǎn)。最短社交距離大于3的用戶節(jié)點(diǎn)也屬于剪枝節(jié)點(diǎn)。
步驟s308:判斷剪枝后的社交網(wǎng)絡(luò)圖的用戶節(jié)點(diǎn)中是否存在不滿足核度核度要求的用戶節(jié)點(diǎn),若是,則在剪枝后的社交網(wǎng)絡(luò)圖中去除不滿足核度要求的用戶節(jié)點(diǎn),剪枝后對社交網(wǎng)絡(luò)圖進(jìn)行更新。
由于查詢條件中有對群組核度的要求,群組的核度實(shí)質(zhì)上是群組成員的核度。若用戶節(jié)點(diǎn)在查找的社交網(wǎng)絡(luò)圖中的核度不滿足要求,若將其提出來作為群組成員,其在群組中的核度將更加不能滿足要求,因此,需要對剪枝后的社交網(wǎng)絡(luò)圖中的用戶節(jié)點(diǎn)進(jìn)行核度檢查,若剪枝后的社交網(wǎng)絡(luò)圖中存在不滿足核度要求的用戶節(jié)點(diǎn),則再次對用戶節(jié)點(diǎn)進(jìn)行剪枝。
假設(shè)查找的群組核度為3,對最短社交距離不滿足條件的節(jié)點(diǎn)v7剪枝后,節(jié)點(diǎn)v8的核度為2,小于群組核度。因此,在剪枝后的社交網(wǎng)絡(luò)圖的基礎(chǔ)上再次剪枝,去除節(jié)點(diǎn)v8。最終,剪枝后的社交網(wǎng)絡(luò)圖如圖8(c)所示。
基于剪枝后的社交網(wǎng)絡(luò)圖進(jìn)行層級拓展將更加簡單,生成的拓展子圖也將簡化,從而是群組查詢效率更高。
在一個(gè)實(shí)施例中,如圖9所示,通過層級拓展查找的滿足查詢條件(群組規(guī)模和群組核度)的群組為多個(gè)時(shí),基于社交網(wǎng)絡(luò)的群組查找方法還包括:
步驟s402:根據(jù)社交網(wǎng)絡(luò)圖確定待查找群組中各群組成員之間的邊集,根據(jù)確定的邊集以群組成員為用戶節(jié)點(diǎn)構(gòu)建每個(gè)待查詢?nèi)航M的群組網(wǎng)絡(luò)圖。
根據(jù)層級搜索確定的待查找群組可以確定群組的成員信息,根據(jù)群組的成員信息和社交網(wǎng)絡(luò)圖(如有進(jìn)行了剪枝處理,則應(yīng)該是剪枝后的社交網(wǎng)絡(luò)圖)可確定群組成員之間的關(guān)聯(lián)關(guān)系。將群組成員作為用戶節(jié)點(diǎn),群組成員之間的關(guān)聯(lián)關(guān)系生成用戶節(jié)點(diǎn)之間的邊集,即可生成待查找群組的群組網(wǎng)絡(luò)圖。
若設(shè)定的群組核度為1,則如圖6a、6b、6c分別為確定的待查找群組{v4、v5、v2、v6}、{v4、v5、v2、v3}和{v4、v5、v2、v8}的群組網(wǎng)絡(luò)圖。
步驟s404:計(jì)算每個(gè)群組網(wǎng)絡(luò)圖的群組親密度。
根據(jù)生成的群組網(wǎng)絡(luò)圖計(jì)算每個(gè)待查找群組所對應(yīng)的群組親密度。首先,計(jì)算在群組網(wǎng)絡(luò)圖中任意兩節(jié)點(diǎn)之間的親密度。再將所有的可能組合的節(jié)點(diǎn)親密度加和得到群組親密度。
如圖6a所示,依次計(jì)算{v2、v6}、{v2、v4}、{v2、v5}、{v4、v6}、{v4、v5}、{v5、v6}的節(jié)點(diǎn)親密度,再將這6個(gè)節(jié)點(diǎn)親密度加和得到群組群密度。
具體的,節(jié)點(diǎn)親密度的計(jì)算公式為:
給定一個(gè)網(wǎng)絡(luò)圖g=(v,e),節(jié)點(diǎn)u,v∈v且有(u,v)∈e,那么節(jié)點(diǎn)u,v之間的親密度為:
其中,n(u)表示節(jié)點(diǎn)u的鄰接節(jié)點(diǎn)集合,節(jié)點(diǎn)u和v的共同鄰接節(jié)點(diǎn)數(shù)為|n(u)∩n(v)|。在親密度的計(jì)算中,分子采用節(jié)點(diǎn)的共同鄰居加1,主要是為了避免兩個(gè)節(jié)點(diǎn)之間存在邊,而親密度卻為0的情況。
一個(gè)網(wǎng)絡(luò)圖g=(v,e)的親密度為其節(jié)點(diǎn)之間邊的親密度之和,記作co(g)=∑(u,v)∈eω(u,v)。
舉例來說,圖6a所示社交網(wǎng)絡(luò)圖的親密度為co(ga)=ω(v2,v4)+ω(v2,v5)+ω(v2,v6)+ω(v4,v5)+ω(v4,v6)+ω(v5,v6)=3/4+3/4+3/4+3/4+3/4+3/4=9/2;co(gb)=ω(v2,v3)+ω(v2,v5)+ω(v2,v4)+ω(v4,v5)+ω(v4,v3)+ω(v5,v3)=1/2+3/4+1/2+1/2+3/2+1/2=17/4co(gc)=ω(v2,v4)+ω(v2,v5)+ω(v2,v8)+ω(v4,v5)+ω(v4,v8)+ω(v5,v8)=1/2+1/2+1/4+2/3+1+1=47/12;
通過比較可知:co(ga)>co(gb)>co(gc)。因此,向查詢終端推送的群組是圖6a所示群組。
步驟s406:將親密度最大的群組網(wǎng)絡(luò)圖對應(yīng)的待查找群組作為查詢結(jié)果反饋至查詢終端顯示。
在一個(gè)實(shí)施例中,向查詢終端反饋的查詢結(jié)果為根據(jù)群組成員和群組成員在社交網(wǎng)絡(luò)圖中的關(guān)聯(lián)關(guān)系生成的群組網(wǎng)絡(luò)圖,如圖6a。
在一個(gè)實(shí)施例中,當(dāng)通過層級拓展查找的滿足查詢條件(群組規(guī)模和群組核度)的群組為多個(gè)時(shí),還可以計(jì)算每個(gè)確定的待查找群組的核度,若存在最大核度,則將核度最大的待查找群組作為查詢結(jié)果反饋至查詢終端顯示。如圖6a-6c,群組核度分別為3、2、1。查詢條件限定的群組核度為1,則三個(gè)待查找群組均滿足查詢條件,此時(shí),根據(jù)群組核度的大小進(jìn)行結(jié)果推送。也就是,將群組核度最大的待查找群組a推送至查詢終端顯示。
在一個(gè)實(shí)施例中,如圖10所示,提供了一種基于社交網(wǎng)絡(luò)的群組查找裝置,該裝置包括:
查找請求模塊510,用于接收查詢終端發(fā)送的群組查找請求,群組查找請求中攜帶指定包含的查詢用戶標(biāo)識、設(shè)定的群組規(guī)模和群組核度,其中,所述群組核度限定了群組成員鄰接其他成員的最少的數(shù)量。
社交網(wǎng)絡(luò)圖調(diào)取模塊520,用于響應(yīng)于群組查找請求,調(diào)取預(yù)先生成的社交網(wǎng)絡(luò)圖,社交網(wǎng)絡(luò)圖是根據(jù)社交網(wǎng)站中的社交關(guān)系數(shù)據(jù)生成的,社交網(wǎng)絡(luò)圖包括多個(gè)用戶節(jié)點(diǎn)和用于連接用戶節(jié)點(diǎn)的邊集。
層級查找模塊530,用于根據(jù)社交網(wǎng)絡(luò)圖以查詢用戶標(biāo)識對應(yīng)的用戶節(jié)點(diǎn)為起始點(diǎn)進(jìn)行設(shè)定層數(shù)的搜索拓展,在每個(gè)搜索拓展層中確定一個(gè)在社交網(wǎng)絡(luò)圖中連接用戶節(jié)點(diǎn)數(shù)量最多的用戶節(jié)點(diǎn)作為群組成員,以使確定的群組成員的數(shù)量滿足設(shè)定的群組規(guī)模;
其中,在拓展過程中的一級拓展層包括的用戶節(jié)點(diǎn)為查詢用戶的鄰接節(jié)點(diǎn),下一級拓展層包括的用戶節(jié)點(diǎn)為上一級拓展層確定的群組成員所鄰接的用戶節(jié)點(diǎn)。
群組確定模塊540,用于將確定的群組成員和查詢用戶組成待查找群組。
群組反饋模塊550,用于判斷所述待查找群組的群組核度是否不小于設(shè)定的所述群組核度,若是,將所述待查找群組作為查詢結(jié)果反饋至查詢終端顯示。
在一個(gè)實(shí)施例中,如圖11所示,基于社交網(wǎng)絡(luò)的群組查找裝置還包括:
搜索樹構(gòu)建模塊610,用于以所述查詢用戶標(biāo)識對應(yīng)的用戶節(jié)點(diǎn)為根節(jié)點(diǎn)構(gòu)建廣度優(yōu)先搜索樹,所述廣度優(yōu)先搜索樹從所述查詢用戶標(biāo)識開始依次遍歷所述社交網(wǎng)絡(luò)圖中所有的用戶節(jié)點(diǎn)。
最短社交距離計(jì)算模塊620,用于根據(jù)構(gòu)建的廣度優(yōu)先搜索樹確定每個(gè)用戶節(jié)點(diǎn)到根節(jié)點(diǎn)的最短社交距離。
剪枝模塊630,用于計(jì)算群組規(guī)模與每個(gè)用戶節(jié)點(diǎn)的最短社交距離的差值,差值不大于1的用戶節(jié)點(diǎn)為剪枝節(jié)點(diǎn),在社交網(wǎng)絡(luò)圖中去除剪枝節(jié)點(diǎn)以及與剪枝節(jié)點(diǎn)關(guān)聯(lián)的邊集,生成剪枝后的社交網(wǎng)絡(luò)圖。
在一個(gè)實(shí)施例中,剪枝模塊630,還用于查找剪枝后的所述社交網(wǎng)絡(luò)圖的用戶節(jié)點(diǎn)中是否存在節(jié)點(diǎn)核度小于所述群組核度的用戶節(jié)點(diǎn),其中,所述節(jié)點(diǎn)核度為所述用戶節(jié)點(diǎn)所鄰接節(jié)點(diǎn)的數(shù)量,若是,則在剪枝后的社交網(wǎng)絡(luò)圖中去除查找到的所述用戶節(jié)點(diǎn),并更新剪枝后的所述社交網(wǎng)絡(luò)圖。
在一個(gè)實(shí)施例中,如圖12所示,確定的待查找群組為多個(gè);基于社交網(wǎng)絡(luò)的群組查找裝置還包括:
群組網(wǎng)絡(luò)圖構(gòu)建模塊710,用于根據(jù)所述社交網(wǎng)絡(luò)圖確定所述待查找群組中各群組成員之間的邊集,根據(jù)確定的所述邊集以所述群組成員為用戶節(jié)點(diǎn)構(gòu)建每個(gè)所述待查詢?nèi)航M的群組網(wǎng)絡(luò)圖;
親密度計(jì)算模塊720,用于計(jì)算每個(gè)群組網(wǎng)絡(luò)圖的親密度;
群組反饋模塊550,還用于將親密度最大的群組網(wǎng)絡(luò)圖對應(yīng)的待查找群組作為查詢結(jié)果反饋至查詢終端顯示。
在一個(gè)實(shí)施例中,群組網(wǎng)絡(luò)圖的群組親密度的計(jì)算公式為:
co(g)=∑(u,v)∈eω(u,v)
其中,co(g)為群組親密度,g=(v,e)為群組網(wǎng)絡(luò)圖,v為群組網(wǎng)絡(luò)圖中節(jié)點(diǎn)的集合,e為群組網(wǎng)絡(luò)圖中的邊集,
節(jié)點(diǎn)u,v∈v且有(u,v)∈e,
其中n(u)表示節(jié)點(diǎn)u的鄰居節(jié)點(diǎn)集合,節(jié)點(diǎn)u和v的共同鄰居節(jié)點(diǎn)數(shù)為|n(u)∩n(v)|。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過計(jì)算機(jī)程序來指令相關(guān)的硬件來完成,程序可存儲于一計(jì)算機(jī)可讀取存儲介質(zhì)中,如本發(fā)明實(shí)施例中,該程序可存儲于計(jì)算機(jī)系統(tǒng)的存儲介質(zhì)中,并被該計(jì)算機(jī)系統(tǒng)中的至少一個(gè)處理器執(zhí)行,以實(shí)現(xiàn)包括如上述各方法的實(shí)施例的流程。其中,存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(read-onlymemory,rom)或隨機(jī)存儲記憶體(randomaccessmemory,ram)等。
以上實(shí)施例的各技術(shù)特征可以進(jìn)行任意的組合,為使描述簡潔,未對上述實(shí)施例中的各個(gè)技術(shù)特征所有可能的組合都進(jìn)行描述,然而,只要這些技術(shù)特征的組合不存在矛盾,都應(yīng)當(dāng)認(rèn)為是本說明書記載的范圍。
以上實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。