发明内容
本发明的目的是提供一种基于协作过滤的个性化查询扩展方法来解决查询个性化问题。
本发明的特征在于,所述方法是在计算机中依次按以下步骤进行的:
步骤(1)初始化
在所述计算机中设定以下模块:用户兴趣学习模块、用户聚类模块、查询词相似度计算模块以及基于协作过滤的个性化查询扩展模块,其中:
用户兴趣学习模块:
设定:用户动作以及该用户动作对应的兴趣值的映射表:
a.用于下载文档的兴趣值为0.8,
b.用于为文档评分的兴趣值为:评分值/满分值,评分值由用户设定,用户根据对文档内容的兴趣度以及文档外观的怎样打分,满分值为5分,
c.用于为文档添加书签的兴趣值为1,
d.用于为文档删除的书签的兴趣值为-1,
e.在文档级别上,用户u浏览文档d的兴趣度为,wu,d=P(spd(u,d)≤spd(u,d’|d’∈Du)),其中spd(u,d)为用户u阅读文档d的速度,spd(u,d)=Ld/Td,Ld为文档d的长度,Td为用户u阅读文档d的时长,Du为用户u浏览过的所有文档的集合,用户u阅读速度最慢的文档是最感兴趣的文档,用1表示;
所述在文档级别上的兴趣度按下式计算:wu,d=spd(u,d)/spd(u,d’),其中d’表示用户u阅读速度最快的文章,
用户提交过多次查询后,对同一篇文档d有多种动作,其综合兴趣度用w′u,d表示: j=1,…,λ,j为用户动作序号,wu,d j为序号为j的用户动作的兴趣值,α在[0.1,0.3]中取值,
e.在领域级别上用户u浏览文档d的兴趣度为Put,公式如下:
其中,ct为序号为t的领域类型,所述领域类型的集合C={c1,c2,…,cT},T为该领域类型C的大小,P(ct|d)为文档d属于领域ct的条件概率,Du为用户u浏览过的所有文档集合,size(Du)为用户反馈的文档数;
用户聚类模块,用下述KMeans聚类对所以阅读过文档的用户分类,其步骤为:
第一步:随机选择K个用户,其中每个用户k初始代表一个簇中心op,p=1,…,K,
第二步:计算剩余的每个用户u
c各自与各个簇中心o
p的欧氏距离
其中,
表示剩余用户u
c对领域的c
t兴趣值,P
ot表示属于簇o
p的用户对所述领域类型c
t的平均兴趣值,
o
p为所述簇中心的大小,
第三步:根据所述剩余的每个用户uc与各个簇中的op的距离,把uc给最近的簇中心,
第四步:重新计算每个簇中心对领域类型ct的平均兴趣值,
第五步:重复上述第一到第四步,直至 阈值ε取10-5;
查询相似度计算模块,用于计算与各个用户聚类op内所有用户各自的第i次提交的查询词qi相似的由用户隐式反馈的查询词q′i组成的列表simList={q′1,q′2,…,q′t},
所述相似查询词qi满足以下条件:
由用户提交的查询词q
i查询得到的由搜索引擎给出的一组链接集合
以及由用户隐式反馈链接集合
来计算两个查询词q
i,q′
i之间的相似度,其公式为:
当计算得到的相似值similarity(qi,q′i)大于给定阈值δ,δ取值区间为(0,1),则将q′i添加到所述simList表中,否则舍去;
基于协作过滤的个性化查询扩展模块;
第一步,构造属于用户聚类o
p的原始查询词和扩展查询词的组合,用
表示,q
i∈simList,λ
i为-1或1,
第二步,把所述原始查询词和扩展词的组合提交所述搜索引擎,得到扩展查询词,
第三步,当用户属于不同聚类中时,重复上述第一步和第二步;
步骤(2),用户输入查询词q,得到resq={d1,d2,…,dn},并依次通过步骤(1)中所述各模块,得到多个个性化扩展查询词以及这些扩展查询词与查询词q之间的相似度排序结果。
本发明的优点在于:(1)体现用户的个性化查询需求,同一查询,不同用户能够获得不同的搜索结果;(2)查询扩展不是依据文档中词语的相关性,而是依据同一个用户聚类内所有用户提交过的查询词以及用户对Web搜索引擎给出的结果的隐式反馈信息。
具体实施方式
本发明提出了一种基于协作过滤的个性化查询扩展方法,结合协作过滤,利用用户群组对搜索结果的种种行为体现用户的个性化查询以及对用户查询进行扩展,如图1所示,个性化查询扩展包括下述几个步骤:(1)用户兴趣学习,(2)用户聚类,(3)查询词处理,主要涉及查询词相似度的计算,(4)基于协作过滤的个性化查询扩展。
用户兴趣学习
为了实现个性化搜索必须了解用户的搜索意图,要建立一种长期的且能动态更新的方式来学习用户的兴趣.对用户兴趣的捕捉基于用户对以往搜索结果的种种动作。这里设定的资源对象为Web文档。
用户提交一项查询q,搜索引擎相应地给出一组页面链接集合resq={d1,d2,…,dn}。用户对于集合resq中的页面链接,有些进一步打开浏览,有些下载,这些用户动作体现了用户兴趣。不同的用户动作在用户兴趣中具有的意义不同。如表1所示用户对搜索结果的一些主要动作,其中UID为用户标识,DID为文档标识,如果一篇文档实际存放在多个位置,则这个文档具有多个DID。
表1用户访问行为
其中,对于用户浏览文档来说,判断其对该文档的兴趣度比较复杂,本文根据用户浏览文档的时间长短来衡量,直观的,用户u阅读文档d时间越长,说明u对d的关注程度越高。设u阅读文档d的时间为Td,文档d的长度为Ld,则u阅读d的速度为:
spd(u,d)=Ld/Td
根据上述公式计算用户u对文档d的兴趣度为:
wu,d=P(spd(u,d)≤spd(u,d’|d’∈Du))
其中Du表示用户u浏览过所有文档集合。上式表明,在用户浏览过的文档中,阅读速度最慢的可以看作是该用户最感兴趣的文档。用户对文档的其他动作对应的兴趣度值见表2。
表2用户动作的兴趣值
对于用户的一次查询q,设定用户u对集合resq中的每项d具有一定的感兴趣度wu,d,wu,d值的大小介于[0,1],则用户的兴趣表示为:
u=(<d1,wu[1]>,<d2,wu[2]>,……,<dn,wu[n]>)。
用户兴趣学习(文档级别)
a.将查询q传到搜索引擎S(例如Google),
b.resq=搜索引擎S返回的URL组成的向量,
c.对于resq的每个URL,wu[i]=Interestingness(resq[i],action[i]),action[i]为用户对resq[i]的动作,
d.利用wu对resq进行排序,
用户u提交过多次查询后,若对同一篇文档d有多种动作,其动作值为wu,d j,j=1,…,λ。则u对d的感兴趣度为多个动作值的综合,即
其中,max(wu,d j)为取wu,d j中最大值,α为常数,且满足 一般地,α的取值区间为[0.1,0.3]。
由于文档数目巨大,相对地,用户反馈过的文档数目过少,造成用户的兴趣表示非常稀疏。稀疏的数据会影响用户相似度计算和查询扩展的质量。考虑新的表示方式来改进数据稀疏状况。
假定所有文档具有特定的领域类型。领域类型集合为C={c1,c2,…,cT},其中T为集合的大小,ct表示第t个领域,则文档d表示为一个条件概率的矢量:d=<p(c1|d),p(c2|d),…,p(cT|d)>,其中p(ct|d)看作文档d属于类ct的概率。用户u对某一领域ct的兴趣表示为条件概率put=p(ct|u),则用户在一次查询后对领域的兴趣表示为uc=(<c1,pu1>,<c2,pu2>,…,<cT,puT>),相对于文档数目来说,领域类型的数目是非常有限的。
设Du为用户u浏览过的文档集,则u对类别ct感兴趣的概率可表示为Du中所有文档属于ct概率的加权平均:
其中size(Du)表示用户反馈的文档总数,wu,d是用户u对文档d的兴趣度。
用户兴趣学习(领域级别)
a.将查询q传到搜索引擎S(例如Google),
b.resq=搜索引擎S返回的URL的向量,
c.用户从resq选择Du,
d.对于Du中的每一篇文档d,如果d属于ct,则有
f.利用Put对ct(t=1,…,T)进行排序。
用户聚类
根据基于领域的用户兴趣表示方法对用户的聚类。一般认为:同一个聚类内的用户是相似的;处于不同聚类的用户是相异的。聚类算法有多种,KMeans聚类算法是最常用的基于划分的方法。它以k为参数,把n个用户分为K个簇,以使簇内具有较高的相似度,而簇间的相似度最低。相似度的计算根据一个簇中所有用户的平均值(被看作簇的重心)来进行。首先,随机地选择K个用户,每个用户初始地代表了一个簇中心。对剩余的每个用户uc,根据其与各个簇中心的距离,将它赋给最近的簇。然后重新计算每个簇的平均值。这个过程不断重复,直到准则函数收敛。
计算每个用户对象uc与簇中心op(p=1,…,K)之间的距离(即uc与op的相异度),最常用的度量方法是欧氏距离,公式为:
其中表示剩余用户u
c对领域c
t的兴趣值,
P
ot的值是所有属于簇o
p的用户对领域类型C
t的兴趣值的平均值,即
利用KMeans聚类算法对用户聚类计算步骤如下:
a.任意选择K个用户作为初始的簇中心,
b.根据与每个中心的距离,将每个用户对象赋给“最近”的簇,
c.重新计算每个簇中心对领域类型Ct的平均兴趣值,
d.重复上述三个步骤直至 (一般阈值ε取10-5)。
查询相似度计算
用于计算与各个用户聚类op内所有用户各自的第i次提交的查询词qi相似的由用户隐式反馈的查询词q′i组成的列表simList={q′1,q′2,…,q′t},可按照以下步骤进行:
a.由用户提交的查询词qi查询得到的由搜索引擎给出的一组链接集合
b.利用
以及由用户隐式反馈链接集合
计算查询词q
i和q′
i之间的相似度值
如果similarity(q
i,q′
i)大于阈值δ,δ的取值区间为(0,1),则把q′
i添加到查询词列表simList,δ的取值需要根据该算法实施到的实际***调整。
基于协作过滤的个性化查询扩展
对于目标用户u,针对其提交的查询q,对该查询进行扩展的基本流程是:
a.构造属于用户聚类o
p的原始查询词和扩展查询词的组合,用
表示,q
i∈simList,λ
i为-1或1,
b.把所述原始查询词和扩展词的组合提交所述搜索引擎,得到扩展查询词,
c.当用户属于不同聚类中时,重复上述第一步和第二步,
步骤二,用户输入查询词q,得到resq={d1,d2,…,dn},并依次通过步骤一中所述各模块,得到个性化扩展查询词。
如图1所示是个性化查询扩展的处理流程。
我们开发了一个关于学术资源的个性化服务平台,新用户登录到该***,输入查询词,***返回搜索结果,用户对搜索结果进行浏览、下载、打分、收藏等操作。当用户再次登录到该***,输入查询词时,***将提示有一组词语可以作为当前查询的扩展词,辅助用户查询。***收集了从2006年6月到2007年4月之间计算机系30位学生老师的搜索记录,对个性化查询扩展算法的测试利用了两个数据集进行测试。其中数据集1下载自Citeseer***的1700篇文档,17个类,每个类别包含100篇;数据集2包含2312篇论文,属于6个类别:Agents,Artificial Intelligence(AI),Database(DB),InformationRetrieval(IR),Machine Learning(ML),Human Computer Interaction(HCI),每个类别的文档数目大致相等。
用户提交查询关键词collaborative filtering,***计算得到和查询词collaborativefiltering最相似的五个短语recommendation、clustering、information filtering、computer、recommender system,它们与collaborative filtering之间的相似度分别为0.83、0.43、0.35、0.52、0.80,如图3所示,按相似度从大到小排序得到扩展组合collaborative filtering和recommendation、collaborative filtering和recommendersystem、collaborative filtering和clustering、collaborative filtering和computer、collaborative filtering和information filtering,提交给***进行扩展查询。