目 录
1文献综述 1
1.1 引言 1
1.2 技术发展状况 1
2课题背景及开展研究的意义 3
2.1课题背景 3
2.1.1图书推荐系统发展背景 3
2.1.2开发语言框架发展背景 3
2.2开展研究的意义 4
3研究内容、预期目标及研究方法 5
3.1研究内容 5
3.1.1数据库设计 5
3.1.2页面设计 5
3.1.3推荐系统的编码实现 5
3.2预期目标 6
3.3研究方法 6
3.3.1开发平台 6
3.3.2软件架构 6
3.3.3数据存取 6
4进度安排 7
参 考 文 献 8
1文献综述
1.1 引言
如今,推荐系统无处不在。在网上逛商城,购物,在音乐网站听歌,在社交网站发表自己的感受以及分享照片,网站服务提供商都会收集用户的访问记录以及用户的喜好,对用户的行为进行分析并且根据用户喜好以及用户群体统计信息,给用户提供相似物品的推荐以及定点广告投放,进而促进商家的销量,提高网站质量以及起到更佳的广告效果。
一般认为,推荐系统这个研究领域源于协同过滤算法的提出。从它的诞生到现在20多年中,很多学者和公司对推荐系统的发展做出了重要的贡献。随着信息技术和互联网的发展,人们逐渐从信息匮乏的时代走入了信息过载的时代。[1]而图书出版物等作为一个传统的信息载体,在人类发展的过程中不断增多,而一些大的互联网公司与网络图书销售商,比如谷歌、亚马逊等,一直在为图书的数字化做着贡献。从2004年谷歌宣布他的图书搜索服务之后,到2012年,共有两千万本图书扫描、经由光学字符识别并存储于数字化数据库中作为搜索数据。[2]这些数据为图书推荐提供了丰富的基础。
本平台采用BS结构,对数据库中的图书推荐系统的内容进行查询、处理,对相似度最高的查询结果进行展示,并且提供用户注册登录,采集用户行为的功能。在服务器端采用Spring MVC框架与对象持久化技术对图书信息进行查询与处理,在客户端使用浏览器网页以及脚本技术对数据进行展示与交互,最终达到图书推荐系统通过WEB平台展示与相关图书搜索的目的。
1.2 技术发展状况
Spring核心开发者Rod Johnson的文章“Introduction to the Spring Framework”中第一节的标题就是“Yet another framework”。[3]自从1999年,SUN发布了第一个Java企业框架,到2003年,Spring框架发布,这期间出现了许多官方的和第三方的Java EE框架,其中也有许多优秀的,比如Structs。而自从一发布,Spring Framework便以其独特的魅力吸引了大量的Java EE开发者。
Spring Framework通过合并最佳实践方法和简化开发,明显改善了人们设计和实现业务应用程序的方式。它为Java平台带来了一致性,我们可以利用Spring的这种一致性来使我们的应用程序变得更加一致。正是Spring给开发人员带来了在适当的地方应用相同的设计和编码模式所展现出来的这种API一致性,让开发人员能够更加专注于应用程序的业务逻辑而不是各种框架本身的语义,API的一致性引领并促进着开发的简单性,提高了开发的效率。
Hibernate是一种新的ORM映射工具,提供了从Java类到数据表之间的映射。其本质上是一个将数据库结构封装提供数据库服务的中间件。采用了XML、Java reflection技术,利用数据库以及一些如hibernate、properties、XML Mapping等配置文件来为应用程序提供数据持久化服务的。程序员可以像使用普通对象一样调用数据库的相关接口来实现相关操作,从而可以把重点放到业务逻辑的实现上。[4]
Maven提供了一整套软件项目管理的综合性方案,无论是编译,发布,文档还是团队协作,Maven提供了必要的抽象,它鼓励重用,并做了除了软件构建以外的许多工作。Maven的主要目标是使开发人员在最短的时间里有效地理解整个开发过程,它使项目构建过程更加容易,提供了统一的项目构建系统,提供有效地项目信息,并且为最佳开发实践提供准则。[5]
版本控制贯穿于整个软件开发的过程之中,它跟踪记录整个软件开发的过程,包括软件的每次修改与相关的文档更新。在空间上可以保证完成集中统一的管理,在时间上全程记录开发过程的每次更改细节。[6]控制版本、分支,对软件修改进行管理与分析,方便的进行回滚、分工统计以及软件开发进度、工作量统计,方便软件开发团队对工程的监督与控制。
2课题背景及开展研究的意义
2.1课题背景
2.1.1图书推荐系统发展背景
随着互联网的快速发展,网络中的图书信息量迅速增长,图书种类也日趋繁多,用户通过互联网要获得自己感兴趣的图书文章需要花费越来越多的时间。由此催生了图书推荐系统。图书推荐系统的基本作用是依据用户的访问记录,特定行为,分析用户的喜好,主动向用户推荐可能喜欢的图书与文献给用户,供用户参考。[7]推荐系统满足了用户个性化的需求,节省了用户搜寻信息的时间,获得和用户喜好相关的最热门最新的图书。在许多商务网站,社交网站中,都使用推荐系统来向用户推荐商品。
在线售卖领域,亚马逊拥有最好的图书推荐系统。在过去的十多年里,亚马逊投入了大量的精力去建立一个包含大众推荐和个人记录的高效个人推荐系统,其最显著特点就是所有的推荐都建立在对顾客以往的浏览记录和购买记录之上。[8]
亚马逊可以向用户精确的投放畅销书以及经典书推荐信息,每月有评有畅销书排行榜,通过简洁美观的介绍与醒目的导航,引导读者阅读与购买。另外,在畅销书的介绍中,还有本书在相关的分类栏目中的排名,并且有链接指向此分类的畅销排行榜,读者可以方便的查询同类书中最畅销的书籍。在书籍介绍底端还有购买过此书的人还购买了的书籍,购买的比例,以及同类书籍的推荐信息。在首页还有促销书的推荐,用于吸引没有明确目的,而想要以优惠的价格购书的消费者。在经典书方面,亚马逊推出年度畅销图书排行,年度编辑推荐100本畅销书等手段,依据惯性定律,进一步推动图书的销售。其中排序规则还根据用户的评价,人气、出版日期等,迎合不同人的喜好。
2.1.2开发语言框架发展背景
在“J2EE”这个缩略词被第一次介绍给世人的时刻,也许没有几个人可以预料出它在日后的奇特历程。那是在1999年6月的JavaOne年会上,时任Sun公司Java企业开发部门主管的Mala Chandra兴奋地预告了Java世界的这位新成员。
对于开发者,J2EE是一套现成的解决方案,采用这个方案,企业应用开发中的很多技术难题(包括跨平台移植、事务处理、安全性等等)就会迎刃而解,“信息像一条不间断的河流,经过各种各样的平台和设备,从企业应用系统的这一端流向那一端”。[9]
大部分的软件项目都与数据库有关,而一个复杂的数据库会消耗程序员大量的精力来管理,传统的使用JDBC API直接访问数据库会将数据库访问混入业务逻辑之中,这样会造成数据库的难于管理与代码的结构混乱。由此,人们寻找一种可以将数据库与业务逻辑分开在不同层次的方法,这样,就不需要了解数据库的结构,在业务逻辑中也不需要写SQL脚本。Hibernate这样的对象关系映射方案就应用而生,程序员只需要集中精力解决业务相关代码[10],而数据库操作变得像操作Java类一样统一简洁。
2.2开展研究的意义
图书推荐系统web平台对于图书推荐系统内容的获取,图书推荐效果的展示都有重要的意义。如果没有此平台,那么图书推荐系统就无法收集用户行为,统计用户喜好,展示推荐结果以及实现推荐系统的原有意义。[11]任何一个推荐系统都需要网络或者客户端平台来展示。[12]而正是由于互联网,服务器以及浏览器客户端,这些从网络发展之初便形成的结构,一起构成了网络的繁荣。
而基于Java的Spring MVC轻量级企业应用开发框架,为WEB平台的开发提供了统一的标准,降低了开发优秀企业应用的门槛,开发者可以以更少的投入,构建出结构完善,易于维护,扩展性能高的应用。[13]
数据持久化技术作为相对Spring框架来说比较小的一个部分,优化了WEB开发的结构,将数据库层与业务逻辑分开,同样对开发的便捷性与代码的可读性和易于维护性做出了巨大的贡献。[14]
项目管理工具对于软件工程的构建、管理与维护,提高工程开发效率,管理能力,以及对未来的预期与项目的分工协作,都起到了促进作用。
这些成熟的企业应用框架工具的研究,为构建图书推荐系统提供了方法,提高了生产率,进一步促进了图书推荐系统的研究,促进了网络推荐领域的研究进展,为商家、社区以及科研机构起到了积极的作用。[15][16]
3研究内容、预期目标及研究方法
3.1研究内容
本课题意图研究和开发一套高性能,可重用,功能完善的图书推荐展示平台。利用此平台,为图书推荐系统进行用户信息采集,存储,读取,协作处理,以及展示。其中,服务器端采用Spring MVC框架,完成用户信息采集、处理以及展示页面生成的工作,使用Hibernate等数据持久化框架[17],完成数据的存储与读取的工作,而客户端采用HTML,CSS与jQuery脚本技术,对生成的页面进行展示与交互。
3.1.1数据库设计
虽然图书推荐系统已有部分数据,但是网站需要一些其他的数据库表,用来存放配置信息、部分页面内容,以及用户信息、访问记录等。这些数据库设计时,要充分考虑数据之间的关联关系,以及字段冗余、数据查询效率、查询实现难易程度,以及数据量的大小。并且需要提高数据的可扩展性,可维护性,为以后添加新功能,实现高级的效果来预留空间。[18]
3.1.2页面设计
先对页面进行设计,可以充分理解业务需求,将具体的直观功能转换为抽象的代码实现方式。设计出的页面可以稍加修改拆分便作为视图代码,提高系统实现的效率。期间也可对数据库表设计进行重新考虑,修改完善数据库设计。
3.1.3推荐系统的编码实现
这是本课题的核心内容。首先根据页面设计内容,对模块进行拆分,对代码的结构有一个全局上的把握,按照Spring MVC框架与Hibernate框架,创建结构分明,可重用的结构。
对于用户信息采集、处理、存储、读取、以及展示,不同部分分成不同的模块,对通用的工具进行抽象,尽量提高代码的重用度。整体的mvc结构,在各个模块中要有统一的命名风格以及功能分配方式。
页面的展示,使用布局技术,提高页面的美感,采用jQuery等浏览器脚本技术,改善用户体验,解决不同浏览器的兼容性。
3.2预期目标
构造出一个完善、可扩展、易于维护的图书推荐系统展示平台。利用此平台,服务提供商可以收集用户喜好,方便的修改扩展展示内容。为客户提供良好的用户体验,展示用户需求的信息,更好的实现图书展示的功能。
3.3研究方法
3.3.1开发平台
本课题主要使用Java语言与JavaScript脚本语言,在Eclipse集成开发环境中进行开发设计。其中数据库使用PowerDesigner,页面原型使用Notepad++工具来设计与生成。系统部署在Tomcat服务器程序中,静态页面运行于Nginx服务器程序中,项目生成与管理使用Maven项目管理工具与Git版本控制工具。数据库使用MySQL开源数据库系统。
3.3.2软件架构
服务器软件采用Spring MVC架构,结合Hibernate或MyBatis数据持久化工具,代码需要安装MVC的结构,将模块、视图与控制器分离,数据库访问与业务逻辑隔离。
客户端采用标准的浏览器结构,使用HTML与CSS对内容进行布局展示,使用jQuery与AJAX技术与用户产生交互。
3.3.3数据存取
MySQL是Sun公司开发,Oracle公司收购并维护的开源数据库管理系统,具有大量的开源社区用户,提供强大的关系数据库创建与管理功能。对于数据统一存储管理,以及降低成本,都是最合适的。
4进度安排
第1周: 确定毕业设计题目的任务。
第2-5周: 明确设计目标和要求,查阅资料,完成选题报告与页面设计。
第6-11周: 进行项目配置与开发、部署,完成中期报告。
第12-16周:功能测试,BUG修复,工作总结,撰写论文,准备答辩。
本人签名:
年 月 日
参 考 文 献
[1] 项亮, 陈义, 王益著. 推荐系统实践[M]. 北京: 人民邮电出版社, 2012.
[2] Law Librarian Blog. Google Book Scan Project Slows Down. 2012.
[3] Rod Johnson. Introduction to the Spring Framework. TheServerSide.com, 2005.
[4] 张琛, 吴跃, 邱会中著. 基于Structs+Spring+Hibernate的整合架构及其在电信业中的应用[D]. 四川 成都: 电子科技大学, 2006.
[5] 李俊杰著. Maven在企业Java软件产品中的应用[D]. 北京: 北京邮电大学, 2011.
[6] 刘悦之著. 基于Git的分布式版本控制系统的设计与实现[D]. 上海: 同济大学, 2012.
[7] 裴玉洁著. 采用数据挖掘技术的自动化推荐系统的研究[D]. 2012.
[8] 吴定勇著, 王峰著. 亚马逊书店的网络售书之道[J]. 北京: 当代传播, 2008
[9] 刘天北著. Java J2EE的发展历程. 中国Java实验室, 2005.
[10] Dave Minter, Jeff Linwood著.Hibernate基础教程[M]. 陈剑瓯等译. 北京: 人民邮电出版社, 2008.
[11] 张富国著. 电子商务协同过滤推荐系统的研究与进展[D]. 江西: 江西财经大学信息管理学院, 2010.
[12] 田元, 宋纬华, 李婷婷著. 基于Markov链的图书推荐系统的研究与设计[J]. 陕西: 西安理工大学图书馆, 2012.
[13] 冯润民著. 基于SSH的高校学生管理系统设计与实现[J]. 北京: 计算机工程, 2009.
[14] 孙强, 孙龙清, 邱小彬著. 基于Structs+Spring+iBATIS的轻量级Web应用框架研究[J]. 北京: 计算机应用与软件, 2008.
[15] 李连焕, 刘建东著. 基于Web日志挖掘的图书借阅推荐算法研究[J]. 北京: 硅谷, 2012.
[16] 古丽拜天.卡米尔著. 基于Web数据挖掘的智能推荐研究[D]. 湖南: 中南大学, 2010.
[17] 王庆民著. 基于Web图书推荐系统设计[J]. 山西: 晋图学刊, 2011.
[18] 曾庆辉, 邱玉辉著. 一种基于协作过滤的电子图书推荐系统[J]. 北京: 计算机科学, 2005.
指导教师意见
指导教师签字:
年 月 日