发明内容
针对现有技术中所存在的不足,本文提出一种模糊搜索算法,在数据不完整不准确的情况下仍然能够有效工作。该算法的主要贡献在于创造性地提出一种适应碎片数据场合的社交搜索模型,通过间接社交关系弥补数据缺失,通过多重联络关系增强数据可靠程度,而传统的社交网络分析算法均基于完整且可靠的数据。该算法也通过动态规划等手段降低计算复杂度,确保能够在海量社交数据中迅速搜索出结果。
为实现上述目的,本发明采用了如下的技术方案:一种基于社交关系碎片数据的模糊搜索方法,包括以下步骤:
步骤a:、获取n(n大于等于1)个与目标账号关系密切的已有账号;
步骤b:、输入已有账号a1、a2、…、an,还需要输出的候选目标账号数量m(m大于等于1);
步骤c:确定已有账号的直接好友关系:
令V0表示a1、a2、…、an的集合,V'表示a1、a2、…、an的好友的集合,进行集合运算:V1=V′\V0,令E1表示V0到V1的好友关系的集合;
步骤d:确定已有账号的间接好友关系(两人都与另一个人是好友,则他们彼此为间接好友):
令V″表示V1中账号的好友的集合,再次进行集合运算:V2=V″\V0,令E2表示V1到V2的好友关系的集合;
步骤e:生成有向图G=(V,E):其中顶点的集合V=V0∪V1∪V2,边的集合E=E1∪E2;对E的各条边,两者为直接好友关系,以相应的两者之间的亲密度θ作为边权重;
步骤f:创建|V0|×|V1∪V2|的矩阵:记录已有账号与目标账号之间的亲密度;
(1)首先计算E1中的各对好友关系,以边的权重初始化对应表格;其他表格则初始化为0;
(2)再根据E2中的各对好友关系计算对应间接好友的亲密度;根据公式θ(a,c)=θ(a,b)θ(b,c)/(θ(a,b)+θ(b,c))计算a、c之间的亲密度,b为a、c的共同好友;
(3)根据两账号之间的独立联络路径数,更新表格中两账号的亲密度数据;若两账号 a、c之间的联络路径不止一条,然后根据公式θ+=θ′-θ×θ′计算更新a、c之间的亲密度,其中θ′为新增路径的亲密度;
步骤g:对矩阵按列求和,然后把结果按从大到小排序,以前m个值作为最佳匹配结果输出。
进一步的,所述两直接好友的亲密度,在数据可靠的情况下,对于任意两个账号a、b,如果a、b具有好友关系,则亲密度θ(a,b)=θ(b,a)=1;在数据不可靠的情况下,我们用可靠度充当亲密度来衡量不同来源的数据。可靠度为一个百分比,最大为1;如果a、b之间既不是好友也不是间接好友,则θ(a,b)=θ(b,a)=0。
本发明的原理为:在搜索数据可能缺失时,我们要想通过现有的好友账号找到目标账号,会使搜索范围变得很大很宽,不利于我们快速准确找到可能的目标账号,此时,我们首先要适当放宽匹配条件,比如已知5个人A、B、C、D、E关系密切,A账号未知,在数据缺失时,很可能其中一个账号比如E的账号未被采集而只是采集了B、C、D的账号,或者E与A的好友关系并未收集到数据中,这要求我们要放宽匹配条件,不要求必须是全部人的好友,要想使数据更准确则只要搜索出B、C、D、E中尽可能多的好友。
另一方面,如果直接好友关系缺失,我们还要考虑间接的好友关系,如果两人都与另一个人是好友,则他们彼此为间接好友,这说明两人在现实世界中很可能是相识的,只是他们的好友关系没有被采集,也有可能两人并不使用该社交软件联系。另一个需要考虑的是数据的可靠程度。从不同渠道采集的数据,其可靠性也有所不同。在数据可靠的情况下,如果a、b具有好友关系,则两者亲密度θ(a,b)=θ(b,a)=1。在数据不可靠的情况下,我们用可靠度充当亲密度来衡量不同来源的数据。如果a、b之间既不是好友也不是间接好友,则两者之间亲密度为θ(a,b)=θ(b,a)=0。
如果两人的好友关系可以从不同的渠道印证,则其整体可靠性要高于其中的任一渠道的可靠性。我们可以将不同渠道的亲密度按照公式θ+=θ′-θ×θ'进行合并亲密度。显然,在数据非常不可靠的情况下,多渠道印证能显著增强结论的可靠性。而在单一渠道已经比较可靠的情况下,多渠道的增强效果就没有那么明显。
这样一来我们通过放宽匹配条件、采集间接好友账号就能确定一系列目标账号,这能有效防止搜索账号遗漏,但是此范围较大,我们如何能从这么多目标范围里找到最为准确的目标账号呢。这就要求我们要把数据来源的可靠性一并考虑进去,对数据来源的可靠性进行量化,通过多重联络关系增强数据可靠程度,采用上述对亲密度的计算方法,对于任意两个账号a、b,我们可以用亲密度θ(a,B)对其关系进行量化,最后再对目标好友亲密度进行求和,数值越大,则可能性越大,根据最终数值大小确定输出目标账号。
相比于现有技术,本发明具有如下有益效果:本发明提供了一种基于社交关系碎片数据的模糊搜索方法,在数据不完整不准确的情况下仍然能够有效工作。该算法的主要贡献在于创造性地提出一种适应碎片数据场合的社交搜索模型,通过间接社交关系弥补数据缺失,通过多重联络关系增强数据可靠程度,而传统的社交网络分析算法均基于完整且可靠的数据。该算法也通过动态规划等手段降低计算复杂度,确保能够在海量社交数据中迅速搜索出结果。
具体实施方式
下面结合附图及实施例对本发明中的技术方案进一步说明。
实施例1
如图1所示,本发明提出了一种基于社交关系碎片数据的模糊搜索方法,
步骤a:获取已知账号a、b、c、d,需要输出的候选目标账号数量为2,
步骤b:输入已知账号a、b、c、d,
步骤c:确定已有账号的直接好友关系:
令V0表示a、b、c、d的集合,V0={a,b,c,d},V'表示a、b、c、d的好友的集合, V'={b,c}∪{a,e}∪{a,e,f}∪{f,g}={a,b,c,e,f,g},进行集合运算:V1=V′\V0, V1=V′\V0={e,f,g},令E1表示V0到V1的好友关系的集合,则E1={<b,e>,<c,e>,< c,f>,<d,f>,<d,g>};
步骤d:确定已有账号的间接好友关系(两人都与另一个人是好友,则他们彼此为间接好友):
令V″表示V1中账号的好友的集合,V″={b,c,f,g}∪{c,d}∪{d,e}={b,c,d,e,f,g},再次进行集合运算:V2=V″\V0,V2=V″\V0={e,f,g},令E2表示V1到V2的好友关系的集合,E2={<e,f>,<e,g>,<f,e>,<g,e>},注意e和g的好友关系以不同顺序两次添加到E2中;
步骤e:生成有向图G=(V,E):如图1所示,其中顶点的集合V=V0∪V1∪V2,边的集合E=E1∪E2;对E的各条边,以相应的两者之间的亲密度θ作为边权重;
步骤f:创建|V0|×|V1∪V2|的矩阵:记录已有账号与目标账号之间的亲密度;
(1)首先计算E1中的各对好友关系,以边的权重初始化对应表格;其他表格则初始化为0;初始化|V0|×|V1∪V2|的矩阵如下:
|
e |
f |
g |
a |
0 |
0 |
0 |
b |
1 |
0 |
0 |
c |
0.3 |
0.8 |
0 |
d |
0 |
0.4 |
0.8 |
(2)再根据对E2中的各对好友关系计算对应间接好友的亲密度,把计算出的亲密度合并到矩阵中对应的表格中;
对E2关系<e,f>,得路径b->e->f的亲密度为1×1/(1+1)=0.5,由此更新θ(b,f)=0+0.5-0×0.5=0.5,路径c->e->f的亲密度为0.3×1/(0.3+1)=0.23,由此更新θ(c,f)=0.8+0.23-0.8×0.23=0.85;
|
e |
f |
g |
a |
0 |
0 |
0 |
b |
1 |
0.5 |
0 |
c |
0.3 |
0.85 |
0 |
d |
0 |
0.4 |
0.8 |
对E2关系<e,g>,得路径b->e->g的亲密度为1×0.6/(1+0.6)=0.38,由此更新θ(b,g)=0+0.38-0×0.38=0.38,路径c->e->g的亲密度为0.3×0.6/(0.3+0.6)=0.2,由此更新θ(c,g)=0+0.2-0×0.2=0.2;
|
e |
f |
g |
a |
0 |
0 |
0 |
b |
1 |
0.5 |
0.38 |
c |
0.3 |
0.85 |
0.2 |
d |
0 |
0.4 |
0.8 |
对E2关系<f,e>,得路径c->f->e的亲密度为0.8×1/(0.8+1)=0.44,由此更新θ(c,e)=0.3+0.44-0.3×0.44=0.61,路径d->f->e的亲密度为0.4×1/(0.4+1)=0.29,由此更新θ(d,e)=0+0.29-0×0.29=0.29;
|
e |
f |
g |
a |
0 |
0 |
0 |
b |
1 |
0.5 |
0.38 |
c |
0.61 |
0.85 |
0.2 |
d |
0.29 |
0.4 |
0.8 |
对E2关系<g,e>,得路径d->g->e的亲密度为0.8×0.6/(0.8+0.6)=0.34,由此更新θ(d,e)=0.29+0.34-0.29×0.34=0.53;
步骤g:对矩阵按列求和,然后把结果按从大到小排序,以前e、f作为最佳匹配结果输出。
|
e |
f |
g |
a |
0 |
0 |
0 |
b |
1 |
0.5 |
0.38 |
c |
0.61 |
0.85 |
0.2 |
d |
0.53 |
0.4 |
0.8 |
评分 |
2.14 |
1.75 |
1.38 |
实施例2
如图2所示,本发明提出了一种基于社交关系碎片数据的模糊搜索方法,
步骤a:获取已知账号a、b、c,需要输出的候选目标账号数量为2,
步骤b:输入已知账号a、b、c,
步骤c:确定已有账号的直接好友关系:
令V0表示a、b、c的集合,V0={a,b,c},V'表示a、b、c的好友的集合,V′={b,f,g}∪{a,f}∪{d,f,g}={a,b,d,f,g},进行集合运算:V1=V′\V0,V1=V′\V0={d,f,g},令E1表示V0到V1的好友关系的集合,则E1={<a,f>,<a,g>,<b,f>,<c,d>,<c,f>,< c,g>};
步骤d:确定已有账号的间接好友关系(两人都与另一个人是好友,则他们彼此为间接好友):
令V表示V1中账号的好友的集合,V′={c,e}∪{a,b,c,e,g}∪{a,c,e,f}={a,b,c,e,f,g},再次进行集合运算:V2=V″\V0,V2=V''\V0={e,f,g},令E2表示V1到V2的好友关系的集合,E2={<d,e>,<f,e>,<f,g>,<g,e>,<g,f>},注意f和g的好友关系以不同顺序两次添加到E2中;
步骤e:生成有向图G=(V,E):如图1所示,其中顶点的集合v=v0∪V1∪V2,边的集合E=E1∪E2;对E的各条边,两者为直接好友关系,以相应的两者之间的亲密度θ作为边权重;
步骤f:创建|V0|×|V1∪V2|的矩阵:记录已有账号与目标账号之间的亲密度;
(1)首先计算E1中的各对好友关系,以边的权重初始化对应表格;其他表格则初始化为0;初始化|V0|×|V1∪V2|的矩阵如下:
|
d |
e |
f |
g |
a |
0 |
0 |
1 |
1 |
b |
0 |
0 |
1 |
0 |
c |
0.5 |
0 |
1 |
1 |
(2)再根据对E2中的各对好友关系计算对应间接好友的亲密度,把计算出的亲密度合并到矩阵中对应的表格中;
对E2关系<d,e>,得路径c->d->e的亲密度为0.5×1/(0.5+1)=0.33,由此更新θ(c,e)=0+0.33-0×0.33=0.33;
|
d |
e |
f |
g |
a |
0 |
0 |
1 |
1 |
b |
0 |
0 |
1 |
0 |
c |
0.5 |
0.33 |
1 |
1 |
对E2关系<f,e>,得路径a->f->e的亲密度为1×1/(1+1)=0.5,由此更新θ(a,e)=0+0.5-0×0.5=0.5;同理可得θ(b,e)=0+0.5-0×0.5=0.5;路径 c->f->e的亲密度为1×1/(1+1)=0.5,由此更新θ(c,e)=0.33+0.5-0.33×0.5= 0.67;
|
d |
e |
f |
g |
a |
0 |
0.5 |
1 |
1 |
b |
0 |
0.5 |
1 |
0 |
c |
0.5 |
0.67 |
1 |
1 |
对E2关系<f,g>,得路径a->f->g的亲密度为1×0.5/(1+0.5)=0.33,由此更新θ(a,g)=1+0.33-1×0.33=1不变;同理可知θ(c,g)=1不变;路径b->f->g的亲密度为1×0.5/(1+0.5)=0.33,由此更新θ(b,g)=0+0.33-0×0.33=0.33;
|
d |
e |
f |
g |
a |
0 |
0.5 |
1 |
1 |
b |
0 |
0.5 |
1 |
0.33 |
c |
0.5 |
0.67 |
1 |
1 |
对E2关系<g,e>,得路径a->g->e的亲密度为1×1/(1+1)=0.5,由此更新θ(a,e)=0.5+0.5-0.5×0.5=0.75;路径c->g->e的亲密度为1×1/(1+1)=0.5,由此更新θ(c,e)=0.67+0.5-0.67×0.5=0.84;
|
d |
e |
f |
g |
a |
0 |
0.75 |
1 |
1 |
b |
0 |
0.5 |
1 |
0.33 |
c |
0.5 |
0.84 |
1 |
1 |
对E2关系<g,f>,得路径a->g->f的亲密度为1×0.5/(1+0.5)=0.33,由此更新θ(a,f)=1+0.33-1×0.33=1不变;同理可得θ(c,f)=1不变;
|
d |
e |
f |
g |
a |
0 |
0.75 |
1 |
1 |
b |
0 |
0.5 |
1 |
0.33 |
c |
0.5 |
0.84 |
1 |
1 |
步骤g:对矩阵按列求和,然后把结果按从大到小排序,以f、g作为最佳匹配结果输出。
|
d |
e |
f |
g |
a |
0 |
0.75 |
1 |
1 |
b |
0 |
0.5 |
1 |
0.33 |
c |
0.5 |
0.84 |
1 |
1 |
评分 |
0.5 |
2.09 |
3 |
2.33 |
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。