-
人类的社交网络与其他网络不同,具有语义性,基于语义推理的社区发现更贴合真实情况. 在社区结构划分的研究中,研究者主要关注两方面问题:一是社区的边界性,即社区边界必须是封闭的;二是社区的内部紧密性,即一个拓扑结构即使看上去有封闭的边界,但如果内部无紧密连接,也不能认定为社区. 本文用总权值度量的方法衡量封闭性,用节点相似度来考察社区的紧密性. 社区内部节点相似度的平均值通常大于社区间的相似度平均值. 因此,本文给出社区结构定义如下:
给定一个混合图G,将G划分为n个子图G1,G2,…,Gn,使得任一子图Gi满足下列条件,则Gi为网络G中的一个社区:
1) 对任意的节点N,din(N)是节点v在Gi中的度(权值),dout(N)是节点v与除Gi外的其他子图间的连接的总度,则对于其他子图Gj,都有dout(N)-din(N)≤0;
2) Ni的内部节点平均相似度大于其与其他子图间的节点平均相似度.
以上定义的社区结构涵盖了不同尺度的社区.
2.1.
多层模型及社区发现模型
-
本文提出一种基于语义的网络社区发现、资源追踪的立体空间模型,在传统的平面二维网络模型基础上,针对语义网络节点间语义关系的特性,提出三维的空间立体模型(图 1). 该立体空间模型将传统意义上的网络结构按语义关系类型重新构建,模型拓扑结构分为纵面树拓扑结构(图 2a)和平面图拓扑结构(图 2b).
模型采用立体空间节点拓扑结构,利用节点语义及语义关系进行集成. 平面图中和纵面树中的语义节点,其相互关系只能是特定的语义链中的一种或几种. 同时,为了减少语义模糊性,计算节点相似度后,将相似度高的节点进行合并. 使得语义查询和社区发现可以快速转换到合适的语义平面上,从而可以提高搜索的速度和查全率.
2.2.
模型描述
-
本文根据语义链的特性构造空间立体语义链网络模型.
2.2.1.
相等、引用与序列
-
在平面上,用有向图表示各节点间的关系. 定义空间模型中,第n个平面上的图为Gn=〈Vn,Equn,Refn,Seqn〉,其中:Vn是第n个平面上所有点的集合,Equn代表第n个平面图中所有语义链类型为“相等”的节点集合,Refn与Seqn同理.
若多个节点间的语义链是相等的,则合并所有的有此语义链关系的点为一点. 如图 3网络中节点A,B,C间有“相等”语义链,则合并为A(一般按第一个节点进行合并),节点D与B间语义链为其他类型,则保留,最后合并为两个节点A和D. “相等”语义链及合并结果见图 3.
假设两节点A,B的语义相似度为α,当α≥0.5时,将此语义链的类型归入相等,若α<0.5时,则认为A,B语义不相关.
Ref为图中所有语义链类型为“引用”的节点关系集合,Refn=〈rn1,rn2…rnm〉,rni为第n个平面上第i条“引用”语义链. Seq是所有语义链类型为“序列”的节点集合,Seqn=〈sn1,sn2…rnm〉,sni为第i个序列. “引用”语义链和“序列”语义链的表示见图 4.
“引用”语义链与“序列”语义链属于不同类型. “引用”语义链具有很强的时序性,时间上,要求前面的节点不能引用后面的节点.
2.2.2.
蕴涵与子类
-
每个以树为单位的纵面搜索是从根节点语义(Root Semantics)开始,以蕴涵或子类语义链作为搜索路径连接起来的各点. 路径上的节点具有一定的有序性,且可以通过一个节点查找到其他节点. 蕴涵或子类可以表示为这样的树的集合. 纵面上的树结构可以表示为语义节点、“子类”语义链、“蕴涵”语义链的集合,T=(Vn,Sub,Imp). “子类”语义链和“蕴含”语义链的表示见图 5.
“子类”语义链表示为Sub=∩〈Ni,…,Nn〉,其中〈Ni,…,Nn〉是由节点Ni到Nn的一条“子类”语义链. 按定义,“子类”语义链有传递关系. 而“蕴涵”通常情况下并不单纯指简单的包含关系. 我们重点关注语义链关系,即在某条或某几条语义链存在的情况下,是否有某种特殊的且研究者感兴趣的语义链产生.
根据节点对象间相似度的度量和修正需要,结合文献[11]中语义链关系定义及本文中社区发现定义,提出语义推理表(表 1).
其中:Imp=∩〈Ni,…,Nn〉表示可能产生推理的各个语义节点集合,Equ代表相等关系,Sim代表相似关系,Ref代表引用关系,Sub代表子类关系,Non代表无关系.
2.2.3.
相似度计算
-
用一个词空间的向量Vector(e)表示本文中的一个实体e,每个维度对应一个词,维度大小取值表明了这个词在刻画e时的相对重要性. 用词空间中的向量Vector(q)表示一条基于关键词的查询q. e和q的相似程度可以被描述为Vector(e)和Vector(q)的夹角余弦值.
语义结构的相似度取决于两个基本的要素:①语义节点组成社区的叶子结点,且查询也是由叶子结点构成,所以与社区的语义结构相关;②节点的祖先节点的相似程度.
表 2给出了实现相似度算法所调用函数及其注释.
Ni与Nj语义结构相似度计算如下:
算法1 Semantic-Structure-Similarity-Degrees (Ni,Nj)
IF Ni属于社区中某一个最大语义群
THEN
T=Max-Semantic-Clique (Ni,Nj)
ELSE
T=Min-Common-Sub-Tree (Ni,Nj)
END IF
RootSet Ni=T
NodeSet={Ni,…,Root (Ni)}∪RootSet Ni
IF Length (Ni,Nj)=1
THEN
Semantic-Structure-Similarity-Degrees (Ni,Nj)=Semantic-Node-Similarity-Degrees (Ni,Nj)
Return()
ELSE
$\overrightarrow{F V}$=Semantic-NodeSet-Similarity-Degrees(NodeSet,Nj)
FOR Nk IN NodeSet
IF Nk=Nj
THEN WNkj=$\frac{1}{2}$
ELSE IF Nk IN RootSet Nj
THE Nk=length(Nk,RootSet Nj);$W_k=1-\sum\limits_{l=1}^{n-1} w_{N_L}=\frac{1}{2}^{n-1}$;
ELSE IF Nk≠Nj
THE Nk=length(Ni,Nk);$W_{N_j}=\frac{1}{2}^k$;
Semantic-Structure-Similarity-Degrees(Ni,Nj)= $\frac{\overrightarrow{W} \cdot \overrightarrow{F V}}{|\overrightarrow{W}||\overrightarrow{F V}|}$
END IF
算法1首先提取节点在网络中的结构,如果节点互为邻居节点,那么他们的结构相似度就是他们的语义相似度. 如果节点不为邻居节点,则找出指向该节点的上层节点,然后建立相似度向量$\overrightarrow{F V}$,$\overrightarrow{F V}$包含从根节点到节点Nj与Ni的层次节点的相似度向量[Veci,…,Veck,…,VecRoot(Ni)],其中:
得到节点的相似度向量后,还需要得到节点的权重向量,WNk则表示节点Ni与节点之间的重要程度.
$\vec{w}$是权值向量[WNi,…,WNk,…,WRoot(Ni)],表示节点在另一个节点结构中的重要性,通过权值向量和特征向量的结合得到了结构的语义相似度.
算法2基于算法1,在用户自定义权重W的影响下,输出集合Set nm中的各个节点与Ni节点的语义结构相似度组成的向量.
算法2 Semantic-Structure-Similarity-Degrees-extend (Ni,NodeSet)
NodeSetnm={Nn,…,Nm}
FOR (Nj in NodeSet):
Similarity-DegreesNj=Semantic-Structure-Similarity-Degrees(Ni,Nj)
$\vec{\text { Semantic-Structure-Similarity-Degrees }}$={Similarity-DegreesNn,…,Similarity-DegreesNm}
Semantic-Structure-Similarity-Degrees(Pi,Pj)= $\frac{\vec{W}\cdot \vec{\text { Semantic-Structure-Similarity-Degrees }}}{|\vec{W}|\mid \vec{\text { Semantic-Structure-Similarity-Degrees }}\mid }$
其中,$\vec{W}$是用户定义的语义节点重要程度.
$\vec{\text { Semantic-Structure-Similarity-Degrees }}$代表的是集合NodeSetnm中的各个节点与Ni节点的语义结构相似度组成的向量.
2.2.4.
语义链网络立体空间构建
-
算法3描述语义链网络空间模型的构建.
算法3 构建语义链网络立体空间模型(DataSet)
Filter(DataSet);//网页抓取的数据通过本体集合过滤
Set_data=Init(DataSet);//初始化输入集合Set_data
T,G=Trans(Set_data) //采用本体之间的关系遍历整个社区集,确定一部分节点的Vn,Equ,Ref,Seq,Sub,Imp,使用推理表格遍历已构造的图谱,加速节点间关系的收敛.
M=Construct(G,T) //将用户的ID作为主体主键,通过Semantic-Structure-Similarity-Degrees-extend算法构造空间立体模型M=(G,T),其中G=〈Vn,Eqa,Ref,Seq〉,T=(Vn,Sub,Imp);
NodeSim=Norm(M.SimVec)//归一化各节点语义结构相似度
Sort (NodeSim {NSim1,…,NSimn}) //对其进行排序
Mark=0 //标记已被计算的节点(矩阵)为0
IF NSimi==1
THEN FOR Ni in G.EqaSet or T.SubSet∈NSimi
Ni⊂OutPut
Mark[i]=1
ELSEIF NSimi=<0.2
THEN FOR Ni in T.SubSet or G.EqaSet∈NSimi
Ni⊄OutPut
Mark[i]=1
FOR Mark[i]==0 and SimNi>0.5 //节点间关联度对相似度的修正
ImportantNi=1
ImportantNj=0.8
FOR Nj in ImpSet
ImportantNj=ImportantNj+ SimNi *(1-α) ImportantNi
FOR Nj in SeqSet
ImportantNj=ImportantNj+ SimNi * (1-β) ImportantNi
FOR Nj in RefSet
ImportantNj=ImportantNj+ SimNi * (1-γ) ImportantNi
FOR Mark[j]==0
SimNj=Important * SimNj
IF SimNj>0.5
Nj⊂OutPut
Mark[j]=1
Return qutPut