基于用户兴趣模型构建与个性化搜索算法研究
2016-11-02张晓飞余建桥
张晓飞 余建桥
摘要:为准确有效地识别出用户感兴趣的信息,该文构建了一个简单的基于用户兴趣模型的个性化搜索系统。该系统借助开源搜索引擎Nutch和Solr全文搜索服务器挖掘用户的浏览数据和点击行为,设计基于用户点击行为的个性化PageRank算法,实现了面向用户的个性化搜索。实验过程中,通过和未使用个性化搜索算法的系统比较,实验结果得出:基于用户兴趣模型构建的个性化搜索系统会根据用户兴趣模型和个性化搜索算法对搜索的结果进行优化和排序,能更加注重用户的兴趣体验,可以提高搜索引擎的准确度,使用户对查询结果更加满意。
关键词:用户兴趣模型;个性化搜索;动态更新策略
中图分类号:TP18 文献标识码:A 文章编号:1009-3044(2016)18-0001-04
1 概述
随着Internet技术的快速发展,人们通过Internet可以快速、便捷地获取大量信息。然而,目前存在的搜索引擎仍然存在同步性差、检索方式单一、信息服务方式被动等不足,没有考虑到不同的用户有着各自的兴趣爱好,使查询结果不能根据不同用户进行优化,而个性化搜索可以帮助用户最快最简单地找到自己需要的内容或网站。因此,个性化搜索服务成为当前一个热门的研究课题。
个性化搜索对于提高搜索信息的准确度具有重要意义,研究人员已做了一些有意义的工作。中南民族大学的张小琴、王晓辉[1]等人对现有的主题信息搜索系统进行了改进,使其具有动态学习功能,能够通过分析用户访问数据来建立用户兴趣模型,并利用该模型对搜索结果进行个性化处理和筛选,从而达到个性化搜索的目的,但是,其由于搜索引擎不能准确理解网页内容的语义,简单的利用词语匹配、统计分析和相关分析等算法在一定程度上会造成理解错误。董富江、杨红等人[2]设计的Web页面个性化搜索系统提出了一个Web页面搜索系统架构,给出了系统中用户个性化信息存储方法。但是,该系统难以使用户有效表达查询需求,导致出现搜索结果不理想的情况。因此,如何建立成熟的用户兴趣模型和个性化结果排序算法已成为个性化服务研究的热门课题。
本文针对目前搜索引擎不能根据不同用户调整搜索页面的缺陷,在现有搜索引擎技术为基础上进行改进,以减少用户使用的复杂度为原则,提出了一种用户兴趣模型,它通过搜集用户浏览页面的历史记录和点击行为,并对传统的个性化搜索算法进行改进,以此来解决目前搜索引擎存在的不足,从而提高搜索引擎的准确度,使用户对搜索结果更加满意。
2 相关技术
2.1 个性化检索模块
个性化检索模块可以对各个用户在不同时间段的兴趣爱好,为用户提供更高质量的搜索结果。通常的个性化检索模块主要包括:网络爬虫、索引、查询机、接口模块、个性化模块、过滤器、用户兴趣模型数据分析等。[3]在此基础上,本文增加了个性化排序、个性化模块、用户兴趣模型三个模块,其中个性化排序模块和个性化兴趣库是本模型的关键部分,其功能分别如下:
1)个性化模块:通过用户兴趣库中的数据分析各个用户的查询请求,从而使搜索引擎能够根据不同用户的行为进行相应的数据处理。
2)个性化兴趣库:主要用于存储各个用户的兴趣爱好数据。
3)个性化排序模块:对搜索后的结果重排序,使用户对搜索结果更加满意。
2.2 Nutch技术
Nutch[4]是一个开源搜索引擎,主要通过Java 来实现,其结构主要由爬虫、索引和搜索三个模块组成。Nutch旨在让使用者能够快速简便地配置高质量的Web搜索引擎。爬虫模块[5]用于为从网络中抓取的网页建立索引,索引模块是其余两个模块的接口,而搜索模块主要利用用户查询的关键词得到搜索结果。
2.3 Solr技术
Solr[6]是基于Lucene的共性能的全文搜索服务器,主要通过Java来实现。它利用Lucene的可扩展功能,形成一个单独的高质量的企业级搜素服务器。其可以通过丰富的查询语言实现系统的可扩展性。另外,Solr通过优化信息查询功能,使用户对Web应用程序的开发使用更加便捷,其主要具有垂直搜索、缓存高效灵活、搜索结果高亮显示、分布式搜索、支持数据库导入、易于操作管理等特点。
2.4 中文分词技术
由于计算机不能直接识别搜索到的自然语言,所以必须把搜索结果转换成计算机可理解的格式。在中文文档中,单位是以单个汉字为基础,而在自然语言中,词是最小的、不可分割的数据,因而需要把每个语句分解成有意义的词。所以在处理中文数据时,必须解决中文分词的问题。
目前,IKAnalyzer中文分词系统已经发展到为基于Java的通用分词模块,同时它独立于Lucene,并提供了对Lucene的默认优化实现[7]。它采用特有的“正向迭代最细粒度切分算法”,具有80万字/秒的高速处理能力。另外,针对Lucene全文检索优化的查询分析器IKQueryParser,采用歧义分析算法优化对搜索关键字进行排序,极大地提高了Lucene搜索的准确度。
由于本文研究重点是用户兴趣模型的构建,中文分词技术仅作为其中的一种工具。所以本文直接使用了目前使用最广泛的IKAnalyzer中文分词系统对文本进行分词。
3 用户兴趣模型构建与个性化搜索排序算法改进
3.1 基于动态更新策略的用户兴趣模型构建
本文通过系统自动记录用户的浏览历史记录和点击行为,并通过持续搜索用户的浏览行为作为模型的数据来源。由于整个过程都是系统自动完成的,所以不会影响用户的使用体验。系统首先挖掘存储在浏览器中用户的历史记录数据信息,得到用户的兴趣爱好,而后分析用户对查询结果的动态点击行为,并考虑用户对检索信息的关注度可能会随着时间而发生变化,因此在挖掘出的兴趣爱好数据中添加时间标签,以此来更新用户不再关注的兴趣爱好点[8]。由于文档是使用自然语言表达的,所以为了使文档在系统中具有可比性,本文使用向量空间模型来构建“用户兴趣模型”,其设计流程如图1所示:
图1 用户建模的设计流程
利用IKAnaylyzer中文分词系统完成中文分词工作后,采用基于TF-IDF(term frequency–inverse document frequency)算法来构建向量空间模型,通过TF-IDF的计算公式,通过关键词在文档中的出现次数和频率得到其权值:
其中,表示关键词在所有生成文本中出现的频率,表示在所有生成文本中的倒序排列文本的频率,其计算方法如下:
其中,为生成文本的数量,为含有关键词的所有文本的数量。
考虑关键词的时间因素,在每个关键词添加时间标签,更符合用户搜索行为的实际。可将计算关键词的权值方法调整如下:
其中,是分析当日和对关键词的最近查询时间的差值(以天为单位)。则网页的特征向量表示如下:
其中,表示页面的特征向量,表示当前网页中的第个关键字,表示页面中关键字的权重。
当对用户兴趣模型和文档两者的数据进行对比时,可通过计算用户兴趣度向量和文档的特征向量的夹角来评估,夹角的大小与用户关注程度成反比,即越小,该文档与用户的兴趣爱好点的关联度越高。其计算公式如下所示:
3.2 基于动态用户兴趣模型的PageRank个性化搜索排序算法
PageRank算法是Google创始人L.Page和S.Brin[9]提出的用来评价页面级别和重要程度的一种方法。它对页面权值计算的基本思路是:页面的重要性程度取决于其他网页的重要性程度,并依赖于它。即一个页面的重要性与其他页面对其的引用次数和链接次数有很大关系。
随着不同系统的需要,现在已经衍生出了许多改进后的PageRank算法,常见的改进有基于内容改进的PageRank算法、基于时间改进的PageRank算法等[10]。本文采用的是基于用户点击行为的PageRank算法,其大致思路是将用户的点击行为作为对页面的重要考虑因素,并将其添加到PageRank算法中。
通过PageRank算法得到的数值是衡量页面关联程度的一个重要指标,但如果只依靠PageRank算法得到的数值并不能得到用户满意的结果。即使一个页面的重要性程度再高,如果和用户的浏览记录和点击行为不匹配,也是没有任何实际意义的。基于用户兴趣模型的个性化排序算法需要网页内容相关度计算和基于用户点击行为的PageRank值计算两个阶段来完成。
3.2.1 页面内容关联度计算
页面内容关联度计算目的是从初始的系统查询结果中筛选出一部分和用户查找数据关联程度较高的页面文档,也就是计算页面的相关度,以此来确保页面内容的高关联度。
3.2.2 融入用户点击行为的PageRank算法优化
本系统以通过PageRank算法得到的数值为依据,在页面内容关联度计算的基础上,筛选出与接近用户兴趣爱好点的页面。虽然不同用户有可能在不同时间点查询得到相同的页面集合,但是由于通过PageRank算法得到的数值不同,因此可以计算出不同的排序结果。融入用户点击行为的PageRank算法优化,不仅对页面重要性权重进行了计算,同时融入了用户动态点击行为,把内容重要性程度高的页面中用户兴趣爱好点更高的页面的排序更加靠前,从而实现个性化排序的结果。
结合3.2.1和3.2.2的分析,本文的个性化排序算法表示如下:
其中,是3.2.1中查询的初始系统查询结果与用户兴趣模型的相似度值,而是3.2.2中计算文档中融入用户点击行为的通过PageRank算法得到的数值,是两者的比重系数。两个阶段得分的总和相加得到查询和文档的相似度值,根据该相似度值的大小以降序的形式对查询结果重新排序,从而得到融入用户点击行为的通过PageRank算法得到的数值降序列表。
4 系统有效性检验
在前面介绍的个性化搜索运用到的有关技术、用户兴趣模型构建方法和基于用户兴趣模型的PageRank算法的基础上,提出融入用户点击行为的PageRank优化算法,通过Nutch和Solr两种搜索引擎开源框架,设计并实现了基于用户兴趣模型的个性化搜索排序模型。
4.1实验环境
实验利用 MyEclipse 7.0、MySql 5.1.35、Nutch1.4、Solr3.5.0等工具,采用JAVA语言实现构建系统,运行在Intel(R) Core(TM) i5 CPU 2.67GHZ 、8GB内存、Window Win7 64位操作系统的PC之上。选取对比的两个系统分别为张小琴、王晓辉[1]等人改进的主题信息搜索系统和董富江、杨红等人[2]设计的Web页面个性化搜索系统。
4.2 模块设计
4.2.1抓取页面
抓取页面通过Nutch搜索引擎开源框架实现。其过程为:首先在Nutch目录下新建一个名为url的记事本文件,在url文件中写入要抓取页面的顶级域名,即要抓取数据的初始页面。url文件中中一行只能写入一个页面的URL值,然后系统将从url文件中获取站点的域名,然后通过编辑Nutch内置的url过滤器文件,对url中搜索得到的结果进行过滤处理。
4.2.2 检索界面
因为Nutch 1.4中没有用户搜索界面操作功能,而Solr可以给设计者提供基于HTTP的可视化操作页面,所以设计用户兴趣模型系统时,本文采用了Nutch和Solr结合的方式。其实现过程如下:
开启Tomcat,在浏览器中输入http://localhost:8080/solr/admin进入检索界面,在“Query String”选项中输入检索词,即可获取和检索词有关的检索结果,并可以将所有检索结果以XML格式保存。
4.2.3 中文分词
由于Solr是在全英文操作开发的,所以无法对检索结果进行中文分词。因此,本系统使用IKAnalyzer中文分词系统来实现系统的中文分词功能。其实现过程如下:
将IKAnalyzer3.2.8配置的java包拷贝到home/solr/WEB-INF/lib中,并在solr/conf/schema.xml中添加如下代码:
Class = “org.w Itea.analyzer.lucene.IKAnalyzer”/> Class=”org.Itea.analyzer.lucene.IKAnalyzer”/>
4.2.4 用户兴趣模型
通过读取index.dat文件来获得用户访问网页的各类数据信息(如浏览次数、浏览时间等),并把这些数据信息存放在数据库中。
通过IKAnalyzer中文分词系统对检索结果进行中文分词处理,并统计中文分词后每个词在各个文本中出现的次数,通过TF-IDF公式,计算出每个词的权重。
4.2.5 个性化重排序模块
主要通过四个步骤完成:首先,计算所有页面的PageRank算法数值;然后,系统调用Solr来检索每个关键字,得到初始检索结果;再根据夹角余弦公式计算各个网页中的结果和在用户兴趣模型中的相似度,从而得到相似度分值;最后计算融入用户点击行为的PageRank优化算法得到的数值,对初始检索结果进行筛选和重排序,从而得到最终经过优化的排序结果。
4.3实验结果及分析
4.3.1 排列位置比较
如图3是Web页面个性化搜索系统、主题信息搜索系统和个性化搜索同时检索关键词“网易”后,对检索结果比较。
由图3可以看出,在Web页面个性化搜索系统结果中,“云阅读”排在第六位,在主题信息搜索系统结果中,“云阅读”排在第五位。当用户点击之后,在个性化搜索结果中此条搜索结果被放在第三位,说明用户点击过的页面更靠前了。同理,本系统中的“通行证”、“传真”、“地图”、“免费邮箱”等分地址的位置较另外两种系统均有不同程度地前移,说明本系统较其他两种系统的查询更为准确。
根据图3,得到查询结果分析,如表1所示。
表1的分析结果表明:与主题信息搜索系统和Web页面个性化搜索系统的结果相比,本文设计的个性化搜索系统的搜索结果中,用户感兴趣的网页最多,而且排序位置比较集中靠前,这在一定程度上减少了用户的筛选时间。但是由于加入个性化模块后需要与用户兴趣模型匹配以及搜索结果重排序,所以在查询时耗费的时间比另外两种搜索系统稍长,但并不影响用户体验。由此可得,本文设计的个性化搜索系统更值得推荐使用。
4.3.2 查准率比较
查准率是目前使用最多的搜索评价数据,它是指以检索结果满足用户需求的数量和检索结果的总量之比。
其中,是检索结果满足用户需求的数量,是检索结果的总量。
我们把本模型的个性化搜索与主题信息搜索系统和Web页面个性化搜索系统进行对比,通过7种不同的检索词来试验,对15次实验中得到的检索结果都取前10个页面,利用公式7计算各自的查准率,实验结果如表2所示。
从上述实验结果可得,使用本系统的搜索算法查准率明显比主题信息搜索系统和Web页面个性化搜索系统效果更好,并且随着用户使用该系统的频率,查准率的优势就更加明显。由表2可以看出,在用户存在兴趣的前提下,采用本文的搜索模型系统,效率也要明显比另外两种搜索引擎系统高;如果用户的兴趣爱好点越明显,采用本模型搜索引擎系统的优势也就更加明显。
总结分析以上的实验运行结果,说明用户兴趣模型在搜索引擎系统中发挥了突出作用,它可以让系统更好地“理解”用户兴趣爱好点,从而能为用户创造更优化的体验环境,使用户能够获取自己感兴趣的信息,从而来提高用户查询信息的满意程度。
5 总结
随着信息技术的快速发展,搜索引擎已经逐渐成为用户搜集网络信息的主要方式。本文首先对用户查询信息数据进行分词,然后利用TF-IDF算法计算每个特征词的权重,并将其权重进行叠加,最后根据权重的大小选择一定数量的关键词构建用户兴趣模型。同时,把相关性提取策略作为影响网页权重的一个因素,将PageRank算法改进,并设计了个性化搜索系统。通过实验对比得出,本文的用户兴趣模型通过个性化模块和排序算法的改进,能够更好地体现用户的兴趣偏好,提高搜索引擎的准确度,使用户对查询结果更加满意。但是,系统引入的个性化模块降低了搜索速度。利用分布式系统提高检索速度将作为以后的研究方向继续探索。
参考文献:
[1] 张小琴,王晓辉. 主题信息搜索系统中的搜索策略研究[J].软件导刊,2014(1).
[2] 董富江,杨红. Web页面个性化搜索系统设计[J].软件导刊,2015(1).
[3] 茹立云,李智超,马少平. 搜索引擎索引网页集合选取方法研究[J].计算机研究与发展,2014(10).