基于知识库的礼品推荐系统的设计与实现姓名:路卫杰学号:085707导师:孟祥武目录需求分析1系统设计2系统实现3系统测试与工作总结及展望4需求分析本系统要实现如下功能:构建完善的礼品知识库礼品知识库推荐(良好的用户交互)用户浏览推荐礼品个性化搜索需求分析-构建完善的礼品知识库调研礼品赠送知识,并据此构建礼品知识库。礼品赠送影响因素包括:送礼人信息:送礼人的年龄,性别收礼人信息:收礼人的年龄,性别和兴趣爱好送礼人与收礼人的关系:如男朋友,老公,领导等节日场合:如春节,圣诞节,生日,结婚等。构建礼品知识库后需要通过礼品专家人工获取知识。然后通过自动化程序完成对礼品知识库的完善。需求分析-礼品知识库推荐礼品知识库推荐从三个方面进行推荐:节日场合推荐收礼对象推荐收礼人描述推荐需求分析-用户浏览推荐用户浏览礼品的详细信息时,系统向用户推荐与此礼品相关的礼品。用户浏览推荐用例图需求分析-礼品个性化搜索系统要提供个性化的礼品搜索。系统要能分析用户的搜索偏好,如果用户多次用价格排序,则表明价格对该用户的决策影响较大,因此返回给该用户的搜索礼品列表优先以价格进行排序。系统设计-系统整体模块系统整体模块图礼品推荐系统知识库构建模块用户交互模块推荐模块知识库初始化知识库完善个性化搜索模块节日场合推荐收礼对象推荐收礼人描述推荐浏览推荐索引构建礼品搜索用户注册登录用户需求获取推荐结果产生系统设计-系统整体流程系统整体流程图互联网知识库模型礼品专家Spider初始化知识库推荐用户交互用户进一步完善网页抓取子系统推荐子系统计算相似度礼品相似度构建索引礼品库礼品知识库索引用户日志礼品搜索知识库与搜索子系统文本提取计算关联度礼品关联度系统设计-开发环境开发工具Myeclipse6.5数据库Oracle10g框架Struts1.2+Hibernate3.0+Spring2.0页面设计Jsp+AJAX系统设计-协同过滤算法设计1.协同过滤推荐算法(CF)a)共同评分处理(交集)b)用户相似性计算c)用户最近邻居选择d)预测评分2.基于评分预测的协同过滤推荐算法(P-CF)a)计算用户评分的并集b)计算项目相似性c)预测并集中的未评评分d)共同评分处理(并集)e)……系统设计-算法验证1.验证方法验证数据:明尼苏达大学的MovieLens的960个用户信息,1200个电影信息,10万评分数据。验证指标:MAE2.验证结果0.820.840.860.880.90.920.940.960.98148121620MAE值最近邻居数(单位:个)MAE值比较结果P-CFCF系统设计-算法应用1.设计影视推荐系统1)实际的电影数据2)真实的用户应用2.应用结论1)用户不愿意评分2)系统冷启动问题严重3)数据稀少的前提下,推荐灾难性地不准确系统实现-礼品信息抓取从淘宝网上抓取礼品信息,步骤如下:调研礼品分类–8大类,40小类记录每个分类在淘宝上的搜索URL设计程序对每个URL中的礼品信息抓取对淘宝页面的HTML进行分析,设计正则表达式抽取文本信息保存抽取后的文本信息系统实现-礼品知识库构建礼品领域知识表示如下:事实形式(name,picture,class,price,seller)=gift(festival,occasion,time)=festival_occasion(gender,age,interest,relation)=recipient(gender,age,clothing,weekend_activities,character,idol)=recipient_description规则表示1.IF(festivalORoccasion)ANDtimeTHENgift例如:IFfestival=情人节ANDANDtime=2月14号THENgift=(玫瑰or德芙巧克力)2.IFgenderANDageTHENtitle例如:IFgender=男ANDage=40THENtitle=中年男性系统实现-礼品知识库构建3.IFtitleTHENinterest例如:IFtitle=中年男性THENinterest=运动OR影视OR旅游OR阅读OR探险OR交际OR音乐OR游戏OR书画OR宅4.IFgenderANDageANDinterestANDrelationTHENgift例如:IFgender=男ANDage=30ANDinterest=交际ANDrelation=朋友THENgift=领带OR名片盒5.IFgenderANDageANDclothingANDweekend_activitiesANDcharacterANDidolTHENinterest例如:IFgender=男ANDage=30ANDclothing=西装ANDweekend_activities=应酬ANDcharacter=开朗ANDidol=比尔.盖茨THENinterest=交际系统实现-礼品知识库构建收礼人从如下方面进行划分:性别:男、女年龄:婴儿(0-3);少年儿童(4-16);青年(17-30);中年(30-60);老年人(60)兴趣爱好:运动,旅游,书画,音乐,阅读等23种关系:男朋友,女朋友,暗恋,老公,老婆,父亲,母亲,朋友等19种总类型数=3*6*24*20=10080节日场合进行如下划分:节日:春节,情人节,母亲节,儿童节,中秋节,教师节,感恩节等14个场合:恋爱,约会,结婚,周年,生日,孩子满月,乔迁新居等14个系统实现-礼品知识库构建礼品知识库ER图系统实现-礼品知识库构建descriptionsdescriptiontitle男人/titlegender男/genderage30-60/ageclothing西装/clothingweekend_activities应酬/weekend_activitiescharacter开朗/characteridol比尔.盖茨/idolinterest交际/interest/descriptiondescription……/description……/descriptions系统实现-礼品知识库推理if(节日场合)查询节日场合规则获得该节日场合的ID;根据节日场合ID查询节日场合礼品规则获得与该ID对应的礼品ID列表;根据所有礼品ID查询礼品表,获得礼品信息列表;返回礼品信息列表;elseif(收礼人信息)将收礼人信息分解成性别,年龄,兴趣爱好和与送礼人关系;if(年龄不为空)查询年龄规则,获得该年龄所在年龄段的ID;if(兴趣爱好不为空)查询兴趣爱好规则,获得该兴趣爱好的ID;if(与送礼人关系不为空)查询关系规则,获得该关系的ID;根据性别,年龄段ID,兴趣爱好ID和关系ID查询收礼对象规则,获得收礼对象ID;系统实现-礼品知识库推理根据收礼对象ID查询收礼对象礼品规则,获得与该ID对应的礼品ID列表;根据礼品ID列表查询礼品表,获得礼品信息列表;返回礼品信息列表;elseif(收礼人描述)将收礼人描述分解成性别,年龄,服饰特色,周末活动,性格,个人偶像;查询收礼人描述规则,获得兴趣爱好;组合性别,年龄和兴趣爱好递归调用推理过程执行第二个分支;系统实现-礼品知识库知识获取人工获取选取二十名礼品专家并为每个用户分配一个账号登录知识获取系统,为每个用户随机选取若干个礼品,用户根据礼品的图片和介绍并结合自己的知识选择每个礼品适宜赠送的节日场合和收礼人的基本信息。然后系统将用户的输入的规则保存。程序获取假设礼品A未被人工初始化,而礼品B经过人工初始化,并且B是与A相似度最高的礼品,则A可根据B的知识库初始化信息进行初始化。通过这种方法,所有的礼品都可得到初始化。系统实现-礼品相似度计算礼品商家相似度计算S1=1.0(礼品A与礼品B是同一商家所卖)S1=0.0(礼品A与礼品B不是同一商家所卖)礼品类别相似度计算S2=1.0(礼品A与礼品B是同一小类)S2=0.5(礼品A与礼品B是同一大类,不是同一小类)S2=0.0(礼品A与礼品B不是同一大类)礼品价格相似度计算价格50,P=0;50=价格100,P=1;100=价格200,P=2;200=价格500,P=3;500=价格,P=4。S3=礼品综合相似度计算S=S1*W1+S2*W2+S3*W3(本系统取W1=W2=W3)4||1BAPP系统实现-礼品关联规则定义:如果浏览过礼品A的所有用户也浏览过礼品B,且礼品B是这些用户浏览的最多的礼品,则礼品B是礼品A的关联礼品。关联礼品的计算步骤如下:1)从用户浏览日志中取得数据。2)从用户浏览日志数据中统计所有被浏览过的礼品。3)对所有被浏览过的礼品循环统计浏览过同一礼品的所有用户并保存到数据库。4)对浏览过同一礼品的所有用户统计其浏览过的最多次数的礼品。并将浏览次数最多的三个礼品保存到数据库中。系统实现-礼品搜索实现中的难点:信誉的量化将淘宝的20个等级信誉量化到0.1–1.0的区间价格的排序将价格乘以100然后前面补0,直到总位数达到10.例如:120.000000012000索引性能的提高同步合并因子--30倍搜索性能的提高Search类采用单例模式,充分利用Lucene的缓存--10倍系统实现-推荐反馈反馈记录日志记录用户所有的浏览点击行为反馈学习根据用户日志,调整推荐结果排序,推荐结果的排序公式为:其中,Si表示i推荐结果的本次排序值S0表示i推荐结果的初始排序值Bj表示i推荐结果第j次推荐是否被用户浏览,是为1,否为0.Pj表示i推荐结果第j次推荐所在的页数njjjiPBSS10*系统性能测试-测试环境与工具压力测试环境(1)服务器配置处理器:奔腾III内存:1G(2)操作系统WindowsServer2003(3)数据库Oracle10g(4)Web服务器Tomcat6.0(注:Tomcat和Oracle安装到同一台服务器上)压力测试工具Jmeter2.4压力测试样例并发执行4组http请求,每组执行5次,共同时并发执行20次:系统性能测试-测试结果压力测试结果分析图050010001500200025003000350040004500024681012响应时间(单位:ms)测试样本压力测试结果工作总结及展望工作总结礼品数据抓取礼品知识库构建礼品知识库知识获取礼品相似度礼品关联规则礼品搜索研究展望礼品知识库的完善和噪声剔除知识库的反馈学习应用展望独立运营作为某电子商务网站的礼品频道系统最终效果-首页节日场合推荐效果图系统最终效果-节日场合推荐系统最终效果-收礼对象推荐系统最终效果-收礼人描述推荐系统最终效果-礼品浏览推荐礼品浏览推荐效果图