董富江
摘要:提出一个Web页面个性化搜索系统架构,给出了系统中用户个性化信息存储方法;设计了关键字个性化推荐和页面排名个性化算法。
关键词:Web页面;个性化搜索系统;个性化排名算法;关键词:个性化
DOIDOI:10.11907/rjdk.143631
中图分类号:TP311.5
文献标识码:A 文章编号文章编号:16727800(2015)001007002
0 引言
目前的搜索引擎大多不具备个性化信息搜索能力,因为不同的用户输入相同的检索词,所得到的搜索结果基本上也相同,原因是搜索引擎主要依赖于关键词:索引方式查询信息,这种方法对于复杂的层次化结构特征信息或非结构化信息力不从心。如何提高信息获取的精度和效率,满足用户的个性化需求,是信息搜索领域重要的研究方向。本文基于开源搜索引擎Nutch设计和实现了一个个性化搜索系统,具有页面个性化排名和关键词:个性化推荐功能。
1 系统架构
图1是基于开源搜索引擎Nutch实现的一个个性化搜索系统框架,具有索引更新、索引删除、查询优化、网络蜘蛛、分词、索引库、Nutch Core等模块。
图1 基于Nutch的个性化搜索系统架构
这几个模块中除Nutch Core模块外,其它模块都是需要实现或配置的。图1中的实线箭头表示模块间的调用关系,虚线箭头表示调用是通过修改配置文件实现的。其中个性化信息库模块是为了收集、储存个性化信息,并利用其设计个性化搜索。为了实现个性化搜索,需要对Nutch的搜索模块进行修改,将修改后的模块称为搜索优化模块。Nutch默认的分词模块是英文的,因此在Nutch中配置了IKAnalyzer中文分词器,在网页抓取和信息检索中实现中文分词。
用户的个性化信息存储使用了MySQL开源数据库系统,主要设计了以下几个数据表:①用户基本信息表:用来存储用户的基本信息,用户每次使用搜索引擎进行一次搜索,即更新最近访问时间:②用户搜索表:用来存储用户近期使用系统进行的搜索信息;③用户兴趣表:用来存储用户某次搜索输入的关键字:④用户访问url表:用来存储用户某次访问的URL信息。考虑到系统的存储压力,要对每个用户的搜索数量、关键字数量及每个关键字对应的URL数量进行限制。例如可以将每个用户的关键字存储数限定为1 000个,用户查询一个新的关键字时,就将原有的1 000个里面最早存入的第一个关键字删除,将新的关键字插入,对URL个数也采取这种限制办法。
2 页面个性化排名算法
Nutch自带的页面排序算法类似于Google的PageRank算法,计算公式如下:
PR(A)=(1-d)+d(PR(1)/C(1)+…PR(n)/C(n))(1)
本文设计的个性化排名算法基于用户行为,用户在一段时间内对某页面点击次数越多,或者在某页面停留时间越长,页面得分越高。为了实现个性化页面排名,本文在Nutch页面排名算法的基础上,结合数据库存储的用户个性化信息,实现搜索结果的个性化排名。改进后的页面排名算法如下:
PageScore(A)=w1×PR(A)+w2×PP(A)(2)
其中w1和w2为权重,PR(A)为Nutch算法的页面得分,PP(A)为根据用户个性化信息计算出来的分值,计算方法如下:
PP(A)=k1×visit_times(A)max(visit_times(doc))+k2×site_time(A)max(site_time(doc))+k3×visit_time(A)(3)
其中k1、k2、k3为权重,visit_times为用户近3个月访问该页面的次数,max(visit_times(doc))为用户近3个月访问最多的网页次数;site_time为用户近3个月在页面停留的时长,max(site_time(doc))为用户近3个月网页停留最长时间,visit_time为用户最近一次访问该页面的时间,实际计算时将该时间转换成整数。
当用户输入q查询到相关页面后,利用公式(2),结合用户的历史搜索信息,计算这些页面的PP和PageScore,然后在Nutch源代码中找到类DistributedAnalysisTool.java进行修改。
3 关键词:个性化推荐
3.1 用户关键字矩阵生成
利用数据库表存储的历史访问信息生成用户关键字矩阵hq:
w11w12…w1nw21w22…w2n…………wm1wm2…wmn(4)
该矩阵为m行n列,代表该用户近期进行了m次搜索,并且在近期搜索了n个关键字。矩阵中wij计算方法如下:
wij=0若用户第i次搜索使用了关键字j1若用户第i次搜索未使用关键字j(5)
在实际中为了加快查询速度,可以定期离线计算并保存该关键字矩阵和用户模型。
3.2 关键字个性化推荐
用户搜索的关键字出现在其兴趣表中,该搜索q可以表示为:
q={kw1,kw2,…kwn} (6)
可以将历史搜索中与该搜索相似度最大的搜索推荐给用户,否则将关键词:加入关键词:集合。相似度计算方法如下:
sim(q,hq(i))=cos(q,hq(i))=q×hq(i)|q|2×|hq(i)|2(7)
其中hq(i)即为hq矩阵的第i行,为当前用户的第i次搜索。
在实际设计中,向用户推荐的搜索与用户当前搜索共同作用,可以更加精确地概括用户的搜索倾向,进一步缩小搜索范围。
4 系统实现
在Windows下可以使用Cygwin和Nutch自带的蜘蛛抓取页面和建立索引,也可以通过一些设置,使得抓取的信息为某一个主题信息。抓取结束后可以使用Luke工具查看建立好的索引,也可以使用Luke工具进行信息检索。实现页面个性化排名算法和关键字个性化推荐算法后,将Nutch重新进行编译,部署到JSP容器(如Tomcat)后即可进行非个性化信息检索。部署好后启动Tomcat,打开浏览器,输入:http://localhost:8080/nutch,回车,即可看到Nutch搜索页面。
5 结语
本文实现的页面个性化排名和页面个性化推荐算法具有一定的应用价值。进一步研究Nutch的实现机制和Web数据挖掘技术,使用分布式技术,以更好地实现信息的个性化搜索和个性化页面推荐,提高检索系统的性能,还有很多工作要做。