具体实施方式
结合附图对本发明方法作进一步详细说明。
本专利方法的具体实施方案说明,包括以下几个部分。首先,说明用户集、文档集和特征集的含义以及用户和文档的参数向量表示方法;然后,说明用户和文档的参数向量更新算法;之后,说明文档的排序向量表示方法以及基于文档参数向量的文档排序算法;再后,说明基于查询向量的个性化文档检索方法;最后,说明一种获取用户和文档个性化特征的系统。
首先说明用户集U、文档集D和特征集K的含义。
在接入互联网的服务器中,存储由多个用户标识组成的用户集U和由多个文档标识组成的文档集D。所述用户标识是在互联网上用户的唯一识别码,包括用户帐号、手机号码、Cookie识别码、IP地址、Email地址和即时通信号码中的一个;所述文档标识是在互联网上文档的唯一识别码,例如Web网页文档的URL地址。所述用户集U含有M个元素,所述文档集D含有N个元素。
在接入互联网的服务器中,存储由多个特征标识组成的特征集K,所述特征集K含有L个元素。所述特征集K中的特征,是在所述用户集U中用户的特征和所述文档集D中文档的特征中选取的。用户和文档使用相同的特征集K。若用户具有“音乐”特征,说明用户爱好音乐,而文档具有“音乐”特征,说明文档与音乐主题相关。
下面介绍用户和文档的参数向量的表示方法。所述参数向量表示方法与向量空间模型VSM的向量表述方法相似,即以特征项作为用户特征或文档特征的基本单位。本专利所述方法和系统中,以用户与各个特征的相关度的集合作为用户的参数向量,以文档与各个特征的相关度的集合作为文档的参数向量。
图1为用户集U中每个用户的参数向量表示方法。在用户集U中任意一个用户m(m∈U)的参数向量设置为U(m)=(uwm1,uwm2,...,uwmk,...,uwmL),其中所述uwmk表示所述用户m与特征k(k∈K)的相关度。另外,将所述用户集U中的每个用户与特征k的相关度汇集在一起,组成一个向量,叫做用户集U的第k个用户列向量(uw1k,uw2k,...,uwMk)。
图2为文档集D中每个文档的参数向量表示方法。在文档集D中任意一个文档n(n∈D)的参数向量设置为D(n)=(dwn1,dwn2,...,dwnk,...,dwnL),其中所述dwnk表示所述文档n与特征k(k∈K)的相关度。另外,将所述文档集D中的每个文档与特征k的相关度汇集在一起,组成一个向量,叫做文档集D的第k个文档列向量(dw1k,dw2k,...,dwNk)。
所述相关度是一个实数值,它表示用户或者文档与特征集K中的某个特征的关系紧密程度。如果一个用户或者文档与音乐特征关联多一点与体育特征关联少一点,我们就说该用户或者文档与音乐特征的相关度高,与体育特征的相关度低。另外在特征选取时,有些特征之间是具有相关性的,因此可以通过减少特征之间的相关性来降低特征集K的维度,减少对服务器存储空间的需求,提高算法效率。有些特征不必直接列入特征集中,因为这些特征的相关度可以通过特征集K中的一个或几个其它特征的相关度计算出来。
下面说明用户或文档的参数向量初始值的设置方法。举如下三个例子进行说明。用户或文档的参数向量初始值范围通常设置为对于任意m∈U、n∈D和k∈K,有uwmk∈[0,1]和dwnk∈[0,1]。如果用户或文档的参数向量没有被设置初始值,其参数向量初始值缺省设为零向量。
例1是人工设置用户m(m∈U)或者文档n(n∈D)的参数向量初始值的方法。例如设置特征总数L=5,特征集K=(科学,教育,财经,音乐,体育),设置U(m)=(uwm1,uwm2,uwm3,uwm4,uwm5)=(0,0.9,0,1,0)。即用户m与“教育”特征的相关度为0.9,与“音乐”特征的相关度为1,与其它特征的相关度均为零。同理,可以设置所述文档n的参数向量D(n)=(dwn1,dwn2,...,dwnk,...,dwnL)的初始值。
例2是设置用户m(m∈U)的参数向量初始值的方法。首先由所述用户m提交一组文档集合
所述文档r(r∈H)的参数向量为(dw
r1,dw
r2,...,dw
rL),然后,对于每个k∈K,设置uw
mk=(σ
1/s)·∑
(r∈H)dw
rk或者uw
mk=(σ
1/s)·∑
(r∈H)[dw
rk/(∑
(k∈K)dw
rk)],其中s为所述集合H的元素个数,σ
1为设定正常数。使用类似方法,所述用户m也可以在所述用户集U中选择一组用户来计算所述用户m的参数向量初始值。
例3是一种设置文档的参数向量初始值的方法。分类目录是一种特殊文档,比如门户网站通常包括新闻、音乐、体育、财经和科技等分类目录。我们假设相同分类目录下的文档具有某些相同的特征,例如体育目录下的文档都与体育相关。如果文档n(n∈D)是分类目录h(h∈D)下的一个文档,则所述文档n的参数向量初始值由所述分类目录h的参数向量来决定。例如对于每个k∈K,设置dwnk=σ2·dwhk,其中σ2为设定正常数。
图3为用户和文档的参数向量更新算法流程图。具体包括在接入互联网的服务器中,执行如下步骤:
S11.存储由多个用户标识组成的用户集U和由多个文档标识组成的文档集D;存储由多个特征标识组成的特征集K;
S12.至少为所述用户集U中的一个用户或者所述文档集D中的一个文档设置参数向量初始值;
S13.接收任意一个用户m(m∈U)访问任意一个文档n(n∈D)的信号;
S14.根据所述信号,读取所述用户m的参数向量U(m)=(uwm1,uwm2,...,uwmk,...,uwmL),其中所述uwmk表示所述用户m与特征k(k∈K)的相关度;
S15.根据所述信号,读取所述文档n的参数向量D(n)=(dwn1,dwn2,...,dwnk,...,dwnL),其中所述dwnk表示所述文档n与特征k(k∈K)的相关度;
S16.应用参数向量更新算法更新所述用户m和所述文档n的参数向量;设更新后所述用户m的参数向量U*(m)=(uwm1 *,uwm2 *,...,uwmk *,...,uwmL *),更新后所述文档n的参数向量D*(n)=(dwn1 *,dwn2 *,...,dwnk *,...,dwnL *),则所述算法包括:
U*(m)=F1[U(m),D(n)];
D*(m)=F2[U(m),D(n)];
在执行完所述步骤S16后,返回所述步骤S13。
其中所述F1(·)和所述F2(·)分别是以所述U(m)和所述D(n)为自变量的函数。所述用户m代表用户集U中的任何一个用户,而不特指某个用户,所述文档n代表文档集D中的任何一个文档,而不特指某个文档。例如第n次执行步骤S13时在所述信号中m=1023,n=3428,而第n+1次执行步骤S 13时在所述信号中m=33456,n=28477。
在图3所述方法的一个应用实例中,对每个k∈K,所述uwmk *是所述dwnk的增函数,所述dwnk *是所述uwmk的增函数。
在图3所述方法的一个应用实例中,对于每一个k∈K,所述uwmk *和所述dwnk *都是所述用户m访问所述文档集D的频次的减函数。所述频次是在一设定时间段内所述用户m访问所述文档集D中的文档的次数除以所述设定时间段的长度。
在图3所述方法的一个应用实例中,对每个k∈K,所述uwmk *是∑(k∈K)dwnk的减函数,所述dwnk *是∑(k∈K)uwmk的减函数。
在图3所述方法的一个应用实例中,所述信号是在一设定时间内从Web日志中随机抽取的。在所述一设定时间内,对所述用户集U中的每个活跃用户抽取相同数量的访问信号作为图3所述方法的输入信号。所述活跃用户是指在所述一设定时间内,访问所述文档集D达到设定次数的用户。非活跃用户不能使用图3所述方法更新用户和文档的参数向量。
在图3所述方法中,在执行所述参数向量更新算法达到设定次数t1后,在每个特征k∈K下,对第k个用户列向量(uw1k,uw2k,...,uwMk)进行归一化处理;在执行所述参数向量更新算法达到设定次数t2后,在每个特征k∈K下,对第k个文档列向量(dw1k,dw2k,...,dwNk)进行归一化处理;其中t1和t2为正整数。执行一次参数向量更新算法,即执行一次所述步骤S16。所述归一化方法包括以下的具体应用实例。
例1:对用户集U中第k个用户列向量(uw
1k,uw
2k,...,uw
Mk)进行归一化处理的方法如下:对集合{uw
1k,uw
2k,...,uw
Mk)按由大到小的顺序进行排序,将排名第M
1的元素赋值给
以及对于每个m∈U,如果
则设uw
mk=1,否则设置
对文档集D中第k个文档列向量(dw
1k,dw
2k,...,dw
Nk)进行归一化处理的方法如下:对集合{dw
1k,dw
2k,...,dw
Nk)按由大到小的顺序进行排序,将排名第N
1的元素赋值给
以及对于每个n∈D,如果
则设dw
nk=1,否则设置
其中,M
1和N
1为设定正常数。
例2:对文档集D中第k个文档列向量(dw1k,dw2k,...,dwNk)进行归一化处理的方法如下:首先对集合{dw1k,dw2k,...,dwNk)进行排序,以及按照排序结果将集合{dw1k,dw2k,...,dwNk}分成元素个数近似相等的r组,其中任意两组a组和b组的关系是a组中的任何一个元素大于等于b组中的任何一个元素,或者a组中的任何一个元素小于等于b组中的任何一个元素;在每组中取出数值最小的一个数据组成集合{s1,s2,...,sr},且s1<s2<...<sr;然后,对于每个n∈D,如果dwnk<s1,则设置dwnk=0;如果sm≤dwnk≤sm+1,则设置dwnk=g1(sm);如果dwnk>sr,则设置dwnk=1。其中g1(sm)为增函数,g1(sm)∈(0,1),例如设g1(sm)=sm/sr;1≤m<r,r为设定正数。同样方法,可对用户集U中第k个用户列向量进行归一化处理。
在图3所述方法的一个应用实例中,执行完所述步骤S16之后,还包括对于每个k∈K,设置uwmk=uwmk *和dwnk=dwnk *。
在图3所述方法的一个应用实例中,所述方法满足对于每个k∈K,有uwmk *≥uwmk和dwnk *≥dwnk。
在图3所述方法中,所述信号的类型至少是以下类型中的一种:T=1表示所述用户m点击所述文档n的链接,T=2表示所述用户m键入所述文档n的地址,T=3表示所述用户m将所述文档n设置为喜欢(如脸谱的Like和谷歌的+1),T=4表示所述用户m转发所述文档n,T=5表示所述用户m评论所述文档n,T=6表示所述用户m收藏所述文档n。
应用实例1
在图3所述方法的一个应用实例中,所述参数向量更新算法具体包括:
uwmk *=β1·uwmk+λ1(n,m,T)·f1(dwnk) (对于每个k∈K)
dwnk *=β2·dwnk+λ2(m,n,T)·f2(uwmk) (对于每个k∈K)
其中,所述λ1(n,m,T)为在所述信号的类型T下所述文档n对所述用户m的影响系数,所述λ2(m,n,T)为在所述信号的类型T下所述用户m对所述文档n的影响系数;β1和β2为设定正常数;所述f1(dwnk)是所述dwnk的增函数,所述f2(uwmk)是所述uwmk的增函数。例如f1(dwnk)=σ3·dwnk,f2(uwmk)=σ4·uwmk;或者f1(dwnk)=σ5·{1/[1+exp(-dwnk)]},f2(uwmk)=σ6·{1/[1+exp(-uwmk)]},其中σ3、σ4、σ5和σ6为设定正常数。
在所述应用实例1中,对于每个特征k∈K,为第k个文档列向量设置阀值dCk,如果dwnk≤dCk,则取f1(dwnk)=0;对于每个特征k∈K,为第k个用户列向量设置阀值uCk,如果uwmk≤uCk,则取f2(uwmk)=0。其中dCk等于第k个文档列向量(dw1k,dw2k,...,dwNk)的各个分量中排名在第a1名的分量;uCk等于第k个用户列向量(uw1k,uw2k,...,uwMk)的各个分量中排名在第a2名的分量;a1和a2为设定正整数。
在所述应用实例1中,所述λ1(n,m,T)和所述λ2(m,n,T)的具体实现方法包括如下实例:
例1:设所述λ1(n,m,T)和所述λ2(m,n,T)为设定常数。例如λ1(n,m,T)=c1和λ2(m,n,T)=c2,其中c1和c2为设定正常数,如c1=c2=0.01。
例2:所述λ1(n,m,T)和所述λ2(m,n,T)分别是所述用户m访问所述文档集D的频次的减函数。如设λ1(n,m,T)=1/g2[freq(m)],λ2(m,n,T)=1/g2[freq(m)],所述g2(x)为增函数。例如g2(x)为分段函数,当x<a3时,g2(x)=1;当x≥a3时,g2(x)=1+a4(x-a3),其中a3和a4为预设正常数。所述freq(m)为所述用户m访问所述文档集D中的文档的频次。
例3:设λ1(n,m,T)=1/g3[∑(k∈K)dwnk],λ2(m,n,T)=1/g3[∑(k∈K)uwmk],g3(x)为增函数。例如g3(x)为分段函数,当x<a5时,g3(x)=1;当x≥a5时,g3(x)=1+a6(x-a5),其中a5和a6为预设正常数。在计算∑(k∈K)dwnk时,如果dwnk≤min_dCk,则取dwnk=0;在计算∑(k∈K)uwmk时,如果uwmk≤min_uCk,则取uwmk=0;其中min_dCk和min_uCk是设定正常数。
例4:所述λ1(n,m,T)=d1(n)·u2(m),所述λ2(m,n,T)=u1(m)·d2(n),其中d1(n)表示文档n的参数向量是否可以用于更新用户集U中用户的参数向量,u2(m)表示用户m的参数向量是否可以被文档集D中文档的参数向量更新,u1(m)表示用户m的参数向量是否可以用于更新文档集D中文档的参数向量,d2(n)表示文档n的参数向量是否可以被用户集U中用户的参数向量更新。u1(m),u2(m),d1(n)和d2(n)是预设参数,它们的取值为0或者1。1代表是,0代表否。这个例子的含义是为防止恶意攻击,有些文档(或用户)由于没有经过可靠性认证,其参数向量不能对其它用户(或文档)的参数向量进行更新;有些重要文档(或用户),其参数向量不能被其它用户(或文档)的参数向量所更新。
例5:所述λ1(n,m,T)=s1(T),所述λ2(m,n,T)=s2(T)。其中所述T为用户访问文档信号的类型,所述s1(T)和所述s2(T)分别是所述T的函数。
例6:所述λ1(n,m,T)是所述文档n的被访问次数或者PageRank值的增函数,所述λ2(m,n,T)是所述用户m的粉丝(follower)数量的增函数。
例7:所述λ1(n,m,T)和所述λ2(m,n,T)分别是所述用户m和所述文档n的参数向量之间的相似度sim(m,n)的增函数。例如λ1(n,m,T)=1+c3·sim(m,n),λ2(m,n,T)=1+c4·sim(m,n),其中c3和c4为大于等于1的设定常数,且sim(m,n)=[∑(k∈K)(uwmk·dwnk)]/{[∑(k∈K)(uwmk)2]1/2·[∑(k∈K)(dwnk)2]1/2}。这个例子的含义是用户和文档的参数向量之间的相似度越高,它们彼此“投票”的比例系数越大。在计算sim(m,n)时,如果dwnk≤min_dCk,则取dwnk=0;如果uwmk≤min_uCk,则取uwmk=0,其中min_dCk和min_uCk是设定正常数。
例8:使用上述例1~7各方法中的至少两种方法的组合,来生成所述λ1(n,m,T)和λ2(m,n,T)。比如在freq(m)>a3时,有
λ1(n,m,T)=c1·{1+c3·sim(m,n)}·{1/[1+a4(freq(m)-a3)]}·{d1(n)·u2(m)}·s1(T)
λ2(m,n,T)=c2·{1+c4·sim(m,n)}·{1/[1+a4(freq(m)-a3)]}·{u1(m)·d2(n)}·s2(T)。
在所述应用实例1中,当执行所述具体的参数向量更新算法达到设定次数后,需要针对每个特征k∈K,分别对第k个文档列向量(dw1k,dw2k,...,dwNk)和第k个用户列向量(uw1k,uw2k,...,uwMk)进行归一化处理。
应用实例2
这是应用实例1的一个具体实现方法。为了便于说明,假设在互联网上有两个用户和三个文档,每个用户和每个文档均有两个特征,即用户集U={1,2},文档集D={1,2,3},特征集K={1,2}。用户1和用户2的参数向量分别为(uw11,uw12)和(uw21,uw22),文档1、文档2和文档3的参数向量分别为(dw11,dw12)、(dw21,dw22)和(dw31,dw32)。其中uwmk(m∈U,k∈K)表示所述用户m与特征k的相关度;dwnk(n∈D,k∈K)表示所述文档n与特征k的相关度。
假设在服务器中收到了所述用户2访问所述文档3的信号,且信号类型T=1,则根据如下参数向量更新算法更新所述用户2和所述文档3的参数向量:
uw21 *=β1·uw21+λ1(3,2,1)·dw31;uw22 *=β1·uw22+λ1(3,2,1)·dw32
dw31 *=β2·dw31+λ2(2,3,1)·uw21;dw32 *=β2·dw32+λ2(2,3,1)·uw22
其中,β1=β2=1;λ1(3,2,1)表示在信号类型T=1时所述文档3对所述用户2的影响系数;λ2(2,3,1)表示在信号类型T=1时所述用户2对所述文档3的影响系数。例如:
λ1(3,2,1)=c1·{1+c3·sim(2,3)}·{1/[1+a4(freq(2)-a3)]}·{d1(3)·u2(2)}·s1(1)
λ2(2,3,1)=c2·{1+c4·sim(2,3)}·{1/[1+a4(freq(2)-a3)]}·{u1(2)·d2(3)}·s2(1)
其中,c1=c2=0.01,c3=c4=3,sim(2,3)=(uw21·dw31+uw22·dw32)/{[(uw21)2+(uw22)2]1/2·[(dw31)2+(dw32)2]1/2},a3=200,a4=0.01,d1(3)=u2(2)=u1(2)=d2(3)=1,s1(1)=2,s2(1)=1,且假设freq(2)>a3。
在执行完上述参数向量更新算法后,进行如下设置:uw21=uw21 *,uw22=uw22 *,dw31=dw31 *和dw32=dw32 *。
在执行完上述参数向量更新算法后,对用户列向量(uw11,uw21)和(uw12,uw22)进行归一化处理,以及对文档列向量(dw11,dw21,dw31)和(dw12,dw22,dw32)进行归一化处理。
对用户列向量的归一化处理的算法如下:设temp1=max(uw11,uw21),则对特征k=1设置uw11=uw11/temp1,uw21=uw21/temp1;设temp2=max(uw12,uw22),则对特征k=2设置uw12=uw12/temp2,uw22=uw22/temp2。
对文档列向量的归一化处理的算法如下:设temp1=max(dw11,dw21,dw31),则对特征k=1设置dw11=dw11/temp1,dw21=dw21/temp1,dw31=dw31/temp1;设temp2=max(dw12,dw22,dw32),则对特征k=2设置dw12=dw12/temp2,dw22=dw22/temp2,dw32=dw32/temp2。
图4为在文档集D中每个文档的排序向量表示方法。
搜索引擎的核心技术是排序算法,其中最著名的是PageRank算法。标准的PageRank算法可以用如下公式表示。
其中,集合T
为网页p(p∈D)的链入网页集合,C(i)为网页i(i∈T)的链出网页数量;d表示用户通过其它网页的链接来访问所述网页p的概率;1-d表示用户不通过其它网页的链接(如通过键入URL地址等方式)来访问所述网页p的概率,d∈(0,1);PR(p)表示所述网页p在所述文档集D中的排序值,N表示文档集D中的网页数量。另外每个网页的初始排序值设为1/N。这里,文档集D中的每个元素都是一个网页。
标准的PageRank(算法的缺点是在互联网上的每个网页仅有唯一的一个网页排序值,即该算法假设每个用户对同一个网页的重要性的评价是相同的。也就是说,PageRank算法没有考虑到提交搜索查询的用户的个性化差异。因此,需要对现有排序算法进行改进。
我们把传统的PageRank值进行扩展,即将所述文档集D中的任意一个文档p的一维排序值PR(p),扩展为基于领域特征的多维的排序向量。设任一文档p(p∈D)的排序向量为[PR(p,1),PR(p,2),...,PR(p,k) ,...,PR(p,L)],其中所述PR(p,k)表示在特征k(k∈K)下所述文档p在所述文档集D中的排序值。将特征k∈K下的每个文档的排序值汇集在一起,组成一个向量,叫做文档集D的第k个排序列向量,即
图5为文档排序向量更新算法流程图。设所述文档集D中至少含有两个文档子集,其中文档子集S
中的每个文档都含有至少一个链接指向所述文档集D中的其它文档,而文档子集E
中的每个文档都被所述文档子集S中的至少一个文档含有的链接所指向;并且S∪E=D,S∩E≠Φ,其中Φ为空集。因此,排序向量更新算法如下:所述文档集D中的任意一个文档p在特征k(k∈K)下的排序值,是所述文档p的每个链入文档在所述特征k下的排序值和所述链入文档与所述特征k的相关度的函数。
所述排序向量更新算法包括以下两个具体应用实例。
例1:在特征k∈K下任一文档p(p∈D)在所述文档集D中的排序值定义为:
其中,集合T
为所述文档p的链入文档集合;d表示用户通过其它文档的链接来访问所述文档p的概率;1-d表示用户不通过其它文档的链接(如通过键入URL地址等方式)来访问所述文档p的概率,d∈(0,1);PR(i,k)表示文档i在特征k(k∈K)下的排序值;所述dw
ik表示文档i与特征k(k∈K)的相关度;N是所述文档集D中的文档个数。另外,对于每个文档i∈D和每个特征k∈K,设所述文档i的初始排序值PR(i,k)=1/N。
所述公式(2)可以表述成如下的向量形式:
其中,k∈K,
是全1的列向量;A是一个非负矩阵,A=(a
ij)
N×N定义如下:
例2:在特征k∈K下任一文档p(p∈D)在所述文档集D中的排序值定义为:
其中,集合T为所述文档p的链入文档集合;d表示用户通过其它文档的链接来访问所述文档p的概率;1-d表示用户不通过其它文档的链接(如通过键入URL地址等方式)来访问所述文档p的概率,d∈(0,1);PR(i,k)表示文档i在特征k(k∈K)下的排序值;所述dwik表示文档i与特征k(k∈K)的相关度;C(i)表示文档i(i∈T)的链出文档数量;N是所述文档集D中的文档个数。另外对于每个文档i∈D和每个特征k∈K,设文档i的初始排序值PR(i,k)=1/N。
所述公式(4)的向量形式也可以表述成公式(3)的形式,其中
是全1的列向量;非负矩阵A=(a
ij)
N×N定义如下:
为了保证所述公式(3)有效性,需要对文档集D中的文档之间的链接关系进行若干限制,例如剔除悬垂页(Dangling Page)和指向它的每个链接,当其它文档的排序值计算完毕后,再将悬垂页和指向它的链接恢复,并根据所述公式(3)计算悬垂页的排序值。
所述公式(3)可以通过幂迭代方法(Power Method)近似计算它的解,即计算所述文档集D中的第k个排序列向量
设在第n次迭代后,所述排序列向量为
则所述幂迭代法包括如下步骤:
R10.选取任一特征k∈K;
R11.根据所述公式(2)或者公式(4),生成非负矩阵A;
R12.设置文档集D中第k个排序列向量的初始值
n=0;
R13.执行所述公式(3),即根据第n步的排序列向量
来计算第n+1步的排序列向量
即
R15.判断是否
或者n>STEP,是则结束;否则设n=n+1,返回步骤R13。
其中ε和STEP是设定正常数;
表示向量
按模最大的分量。
图6为基于查询向量和排序向量的个性化文档检索方法流程图。该方法包括在服务器中执行如下步骤:
S10.根据所述参数向量更新算法,更新所述文档集D中多个文档的参数向量和所述用户集U中多个用户的参数向量;具体实现方法包括图3中所述步骤S11至所述步骤S16;
S20.设置所述文档集D中每个文档的排序向量初始值;
S30.在每个特征k(k∈K)下,应用所述排序向量更新算法,迭代更新所述文档集D中的第k个排序列向量,即更新所述文档集D中每个用户的排序向量;
S40.接收用户q(q∈D)设置的查询向量和所述用户q提交的搜索条件,并且在所述搜索条件中提取搜索关键字;其中所述搜索条件可设为用户在搜索对话框中提交的所有信息;
S50.在所述文档集D中检索与所述搜索关键字匹配的一组文档Q;
S60.根据所述查询向量和所述一组文档Q中的每个文档的排序向量,计算所述一组文档Q中的每个文档的个性化排序值;
S70.根据所述个性化排序值,对所述一组文档Q进行排序,并且根据排序结果将所述一组文档Q中的多个文档的链接发送给所述用户q。
在图6所述方法中,设用户q的查询向量为(swq1,swq2,...,swqk,...,swqL),其中swqk表示在特征k(k∈K)下被查询文档在所述文档集D中的排序值,swqk∈[0,1]。所述查询向量的设置方法举例如下。
第一种是由所述用户n在特征集K中选择特征,并设置被查询文档的排序值,例如设置swq2=0.00023,swq6=0.00061,其它向量分量为0。
第二种是所述用户q提交一组文档标识Sq={...,r,...}。所述文档r(r∈Sq)的排序向量为[PR(r,1),PR(r,2),...,PR(r,k),...,PR(r,L)],因此对于每个特征k∈K,所述用户q的查询向量设置为swqk=(σ7/s)·∑(r∈Sq)PR(r,k)或者swqk=(σ7/s)·∑(r∈Sq){PR(r,k)/∑(k∈K)PR(r,k)};其中s为所述集合Sq的元素个数,σ7为设定正常数。
在图6所述方法的一个应用实例中,基于所述用户q提交的查询向量的所述文档i(i∈Q)的个性化排序值UR(i,q)定义为所述用户q的查询向量(swq1,swq2,...,swqk,...,swqL)与所述文档i的排序向量[PR(i,1),PR(i,2),...,PR(i,k),...,PR(i,L)]之间的相似度,例如
UR(i,q)=∑(k∈K)[PR(i,k)·swqk]}/{[∑(k∈K)(PR(i,k))2]1/2·[∑(k∈K)(swqk)2]1/2}
其中,所述PR(i,k)表示在特征k(k∈K)下所述文档i在所述文档集D中的排序值,所述swqk表示在特征k(k∈K)下被查询文档在所述文档集D中的排序值。在计算所述UR(i,q)时,对于任一k∈K,如果PR(i,k)<min_PR,则取PR(i,k)=0;如果swqk<min_SW,则取swqk=0。min_PR和min_SW为设定正常数。
图7为基于查询向量和参数向量的个性化文档检索方法流程图。所述方法包括在服务器中执行如下步骤:
A10.根据所述参数向量更新算法,更新所述文档集D中多个文档的参数向量和所述用户集U中多个用户的参数向量;具体实现方法包括图3中所述步骤S11至所述步骤S16;
A20.接收用户q(q∈D)设置的查询向量和所述用户q提交的搜索条件,并且在所述搜索条件中提取搜索关键字;其中所述搜索条件可设为用户在搜索对话框中提交的所有信息;
A30.在所述文档集D中检索与所述搜索关键字匹配的一组文档Q;
A40.根据所述查询向量和所述一组文档Q中的每个文档的参数向量,计算所述一组文档Q中的每个文档的个性化排序值;
A50.根据所述个性化排序值,对所述一组文档Q进行排序,并且根据排序结果将所述一组文档Q中的多个文档的链接发送给所述用户q。
在图7所述方法中,设用户q的查询向量为(swq1,swq2,...,swqk,...,swqL),其中swqk表示被查询文档与特征k(k∈K)的相关度,swqk∈[0,1]。所述查询向量有如下几种设置方法。
第一种是由所述用户n在特征集K中选择特征,并对其设置特征相关度,例如设置swq2=0.8,swq6=0.9,其它向量分量为0。
第二种是把所述用户q的参数向量赋值给所述查询向量。
第三种是所述用户q提交一组用户标识或文档标识S
q={...,r,...}。当
时,所述用户r(r∈S
q)的参数向量为(uw
r1,uw
r2,...,uw
rL),因此所述用户q的查询向量设为对于每个特征k∈K,sw
qk=(σ
8/s)·∑
(r∈Sq)uw
rk或sw
qk=(σ
8/s)·∑
(r∈Sq)[uw
rk/(∑
(k∈K)uw
rk)];当
时,所述文档r(r∈S
q)的参数向量为(dw
r1,dw
r2,...,dw
rL),因此所述用户q的查询向量设置为对于每个特征k∈K,sw
qk=(σ
9/s)·∑
(r∈Sq)dw
rk或sw
qk=(σ
9/s)·∑
(r∈Sq)[dw
rk/(∑(k∈K)dw
rk)];其中s为所述集合S
q的元素个数,σ
8和σ
9为设定正常数。
在图7所述方法的一个应用实例中,基于所述用户q提交的查询向量的所述文档i(i∈Q)的个性化排序值UR(i,q)定义为所述用户q的查询向量(swq1,swq2,...,swqk,...,swqL)与所述文档i的参数向量(dwi1,dwi2,...,dwiL)之间的相似度,即
UR(i,q)=[∑k(swqk·dwik)]/{[∑k(swqk)2]1/2·[∑k(dwik)2]1/2}。
图7所述方法的一个应用场景是微博。用户发布一条微博文档后,就可以设置这条微博文档的参数向量初始值了,即把发布这个微博的用户的参数向量乘以一个预设常数,赋值给这条微博文档的参数向量。当在微博服务器上收到了用户访问微博文档的信号后(如由转发、评论或收藏等动作产生的信号),根据所述信号中包含的用户标识和微博文档标识,分别读取所述用户的参数向量和所述微博文档的参数向量;然后根据参数向量更新算法,更新所述用户和所述微博文档的参数向量。当用户打开微博时,他就可以通过其预设的查询向量对关系网络中其他人发布的信息进行过滤和筛选。其方法是首先由用户预设查询向量,然后以所述查询向量和用户收到的每条微博文档的参数向量之间的相似度作为每个微博文档的个性化排序值,并根据所述个性化排序值的数值大小,对用户收到的微博文档进行过滤和筛选。例如只将个性化排序值排名前30%的微博文档发送给查询用户。
图8为一种获取用户和文档个性化特征的系统结构图。所述系统200包括如下功能模块:
用户集、文档集和特征集设置模块211:在用户数据库220中存储由多个用户标识组成的用户集U,在文档数据库230中存储由多个文档标识组成的文档集D;在特征数据库240中存储由多个特征标识组成的特征集K;
用户和文档初始值设置模块212:为所述用户集U中的至少一个用户设置参数向量初始值并将其存储于用户数据库220;为所述文档集D中的至少一个文档设置参数向量初始值并将其存储于文档数据库230;为所述文档集D中的每个文档设置排序向量初始值;未被设置参数向量初始值的用户和文档,其参数向量初始值缺省为零向量;
用户访问文档信号采集模块213:用于采集任意一个用户m(m∈U)(102)访问任意一个文档n(n∈D)的信号,所述信号存储于Web日志数据库250中;所述用户m(102)访问所述文档n的信号,将被发送到至少一个应用服务器中,所述应用服务器包括门户网站服务器301、社交网络服务器302、搜索引擎服务器303和即时通信服务器304;
用户和文档参数向量更新模块214:根据所述信号,在所述用户数据库220中读取所述用户m(102)的参数向量以及在所述文档数据库230中读取所述文档n的参数向量,然后应用参数向量更新算法,更新所述用户m(102)和所述文档n的参数向量,最后用更新后的所述用户m(102)的参数向量和所述文档n的参数向量分别更新所述用户数据库220和所述文档数据库230;
文档排序向量更新模块215:在所述文档集D中,以文档之间的链接关系、每个文档的排序向量初始值以及每个文档的参数向量作为输入数据,应用排序向量更新算法,迭代更新在每个特征k(k∈K)下所述文档集D中每个文档的排序值,以及应用更新后的所述排序值更新所述文档数据库230;所述文档之间的链接关系,是由所述文档集D中的每个文档包所含的文档链接来决定的;
用户查询模块216:首先,接收查询用户q设置的查询向量和所述用户q提交的搜索条件,并且在所述搜索条件中提取搜索关键字;然后,在所述文档集D中检索与所述搜索关键字匹配的一组文档Q;之后,根据所述查询向量和所述一组文档Q中每个文档的排序向量,计算所述一组文档Q中每个文档的个性化排序值,或者根据所述查询向量和所述一组文档Q中每个文档的参数向量,计算所述一组文档Q中每个文档的个性化排序值;最后,根据所述个性化排序值对所述一组文档Q进行排序,以及按照排序结果将所述一组文档Q中的多个文档的链接发送给所述用户q。
图9为一种获取用户和文档个性化特征的系统信号序列图。首先,在用户访问文档信号采集模块213中采集用户m(102)访问文档n的信号;然后,由用户访问文档信号采集模块213向用户和文档参数向量更新模块214转发所述信号,同时将所述信号发送到Web日志数据库240;之后,由用户和文档参数向量更新模块214向用户数据库220发送读取所述用户m(102)的参数向量的请求,后者返回所述用户m(102)的参数向量,由用户和文档参数向量更新模块214向文档数据库230发送读取所述文档n的参数向量的请求,后者返回所述文档n的参数向量;再后,在用户和文档参数向量更新模块214中,使用参数向量更新算法,更新所述用户m(102)和所述文档n的参数向量;最后,用户和文档参数向量更新模块214将更新后的所述用户m(102)和所述文档n的参数向量分别发送给用户数据库220和文档数据库230。
以上所述应用实例仅为本发明的较佳的应用实例,并非用以限定本发明的保护范围。