基于知识库的礼品推荐系统的设计与实现硕士研究生学位论文(编辑修改稿)内容摘要:

个用来描述或者匹配一系列符合某个 句法 规则的 字符串 的单个字符串。 在很多 文本编辑器 或其他工具里,正则表达式通常被用来检索和替换那些符合某个模式的文本内容。 许多程序设计语言 都支持利用正则表达式进行字符串操作 [24]。 一个正则表达式通常被称为一个 模式 (pattern) [25],就是用某种模式去匹配一类字符串的一个公式 , 由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成 , 用来描述或者匹配一系列符合某个 句法 规则的 字符串。 简单的说,正则表达式就是用一个 “ 字符串 ” 来描述一个特征,然后去验证另一个 “ 字符串 ”是否符合这个特征。 比如表达式 “ab+” 描述的特征是 “一个 39。 a39。 和任意个 39。 b39。 ”,那么39。 ab39。 , 39。 abb39。 , 39。 abbbbbbbbbb39。 都符合这个特征。 正则表达式可以用来:( 1)验证字符串是否符合指定特征,比如验证是否是合法的邮件地址。 ( 2)用来查找字符串,从一个长的文本中查找符合指定特征的字符串,比查找固定字符串更加灵活方便。 ( 3)用来替换,比普通的替换更强大。 JAVA 对正则表达式提供了强大的支持 [26],本系统正是借助于 JAVA 中对正则表达式的强力支持来实现在 JAVA 源文件中对类之间依赖关系的扫描。 在 JAVA 中使用正则表达式匹配字符串的典型调用语句是 Pattern p = (a*b); Matcher m = (aaaaab); boolean b = (); 是正则表达式的编译表示形式,指定为字符串的正则表达式必须首先被编译为 此类的实例。 然后,可将得到的模式用于创建 对象 , 依照正则表达式,该对象可以与任意 字符序列 匹配。 北京邮电大学研究生毕业论文 9 执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。 最后可通过 ()方法验证字符序列与所编译的正则表达式是否相匹配。 在 JAVA 中使用正则表达式查找字符串的典型调用语句是 boolean b = (regEx).matcher(str).find() 其中 regEx 是需要编译的正则表达式, str 为需要进行查找的文本或字符串,通过 ()方法可以查找文本或字符串 str 中是否存在符合正则表达式规则 regEx 的字符串 [27]。 Lucene Lucene 是一个 apache软件基金会 jakarta项目组的一个子项目 [28], Lucene是 用Java 写的全文检索引擎工具包 , 可以方便地嵌入到各种应用中实现针对应用的全文索引 / 检索功能 ,Lucene 有两个主要的服务 ,索引和检索 , 两者任务是相互独立的。 这使得开发人员可以根据需要对它们进行扩展。 Lucene 提供了 丰富的API , 可以与存储在索引中的信息方便的交互 [29]。 需要说明的是它并不是一个完整的全文检索应用 , 而是为应用程序提供索引和搜索功能。 即若想让 Lucene 真正起作用 , 还需在其基础上做一些必要的二次开发 [30]。 Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。 Lucene 的原作者是 Doug Cutting,他是一位资深全文索引 /检索专家,曾经是 VTwin 搜索引擎的主要开发者,后在 Excite 担任高级系统架构 设计师,目前从事于一些 Inter 底 层 架 构 的 研 究。 早 先 发 布 在 作 者 自 己 的 SourceFe, 20xx 年年底成为 apache 软件基金会 jakarta 的一个子项目: 作为一个开放源代码项目, Lucene 从问世之后,引发了开放源代码社群的巨大反响,程序员们不仅使用它构建具体的全文检索应用,而且将之集成到各种系统软件中去,以及构建 Web 应用,甚至某些商业软件也采用了 Lucene 作为其内部全文检索子系统的核心。 apache 软件基金会的网站使用了 Lucene 作为全文检索的引擎, IBM 的开源软件 eclipse 的 版本中也采用了 Lucene 作为帮助子系统的全文索引引擎,相应的 IBM 的商业软件 Web Sphere 中也采用了 Lucene。 Lucene 以其开放源代码的特性、优异的索引结构、良好的系统架构获得了越来越多的应用。 Lucene 作为一个全文检索引擎,其具有如下突出的优点: ( 1)索引文件格式独立于应用平台。 Lucene 定义了一套以 8 位字节为基础的索引文件格式,使得兼容系统或者不同平台的应用能够共享建立的索引文件。 北京邮电大学研究生毕业论文 10 ( 2)在传统全文检索引擎的倒排索引的基础上,实现了分块索引,能够针对新的文件建立小文件索引,提升索引速度。 然后通过与原有索引的合并,达到优化的目的。 ( 3)优秀的面向对象的系统架构,使得对于 Lucene 扩展的学习难度降低,方便扩充新功能。 ( 4)设计了独立于语言和文件格式的文本分析接口,索引器通过接受 Token流完成索引文件的创立,用户扩展新的语言和文件格式,只需要实现文本分析的接口。 ( 5)已经默认实现了一套强大的查询引擎,用户无需自己编写代码即使系统可获得强大的查询能力, Lucene 的查询实现中默认实现了布尔操作、模糊查询( Fuzzy Search[11])、分组查询等等 [31]。 面对已经存在的商业全文检索引擎, Lucene 也具有相当的优势。 首先,它的开发源代码发行方式(遵守 Apache Software License),在此基础上程序员不仅仅可以充分的利用 Lucene 所提供的强大功能,而且可以深入细致的学习到全文检索引擎制作技术和面相对象编程的实践,进而在此基础上根据应用的实际情况编写出更好的更适合当前应用的全文检索引擎。 在这一点上,商业软件的灵活性远远不及 Lucene。 其次, Lucene 秉承了开放源代码一贯的架构优良的优势,设计了一个合理而极具扩充能力的面向对象架构,程序员可以在 Lucene 的基础上扩充各种功能,比如扩充中文处理能力,从文本扩充到 HTML、 PDF 等等文本格式的处理,编写 这些扩展的功能不仅仅不复杂,而且由于 Lucene 恰当合理的对系统设备做了程序上的抽象,扩展的功能也能轻易的达到跨平台的能力 [32]。 最后,转移到 apache 软件基金会后,借助于 apache 软件基金会的网络平台,程序员可以方便的和开发者、其它程序员交流,促成资源的共享,甚至直接获得已经编写完备的扩充功能。 最后,虽然 Lucene 使用 Java 语言写成,但是开放源代码社区的程序员正在不懈的将之使用各种传统语言实现(例如 . framework),在遵守 Lucene 索引文件格式的基础上,使得 Lucene 能够运行在 各种各样的平台上,系统管理员可以根据当前的平台适合的语言来合理的选择。 AJAX AJAX 的全称是 Asynchronous JavaScript XML(即异步 JavaScript 和 XML)。 AJAX 是一种 Web 应用程序开发的手段,它采用客户端脚本与 Web 服务器交换数据。 所以,不必采用会中断交互的完整页面刷新,就可以动态地更新 Web 页面。 使用 Ajax,可以创建更加丰富、更加动态的 Web 应用程序用户界面,其即时性与可用性甚至能够接近本机桌面应用程序。 这使得 Web 应用的交互性得到了前所未有的提高, 大大增强了应用的实用性和实时性。 北京邮电大学研究生毕业论文 11 AJAX是几项技术的全新方式的集合,所用到的核心技术是: 1) 运用 XHTML和 CSS实现基于各种标准的展示。 2) 运用文档对象模型 (Document Object Model)实现动态显示和交互。 3) 运用 XML实现数据交换和操作。 4) 运用 XMLHttpRequest实现异步数据检索。 5) JavaScript 将所有这些方法绑定到一起。 使用 AJAX的关键在于对浏览器端的 JavaScript、 DHTML和与服务器异步通信的组合 [33]。 AJAX的核心是 JavaScript对象 XMLHttpRequest。 该对象在 Inter Explorer 5中首次引入,它是一种支持异步请求的技术。 简而言之,XMLHttpRequest使用户可以使用 JavaScript向服务器提出请求并处理响应,而不阻塞用户 [34]。 借助于 AJAX,可以在用户单击按钮时,使用 JavaScript和 DHTML立即更新 UI,并向服务器发出异步请求,以执行更新或查询数据库。 当请求返回时,就可以使用 JavaScript和 CSS来相应地更新 UI,而不是刷新整个页面。 最重要的是,用户甚至不知道浏览器正 在与服务器通信: Web站点看起来是即时响应的[35]。 小结 本章主要 介绍了 比较流行的 三种个性化推荐算法 : 协同过滤、内容过滤和知识发现 ,并对三种推荐算法的优缺点进行了分析。 然后介绍了本系统实现过程中所利用 的关键技术: 正则表达式, Lucene 和 AJAX 技术。 第三章 个性化 礼品 推荐 系统需求分析 任务概述 实现 目标 该系统要实现如下 四 个目标: 北京邮电大学研究生毕业论文 12 1. 礼品 知识库的 构建 礼品 推荐 有其特殊的领域知识, 比如送礼人 的个人信息,收礼者的个人信息 ,送礼人与收礼人 的关系 ,送礼的节日场合等 , 这些因素 决定 适宜 推荐 的礼品。 本系统要调研礼品赠送知识并据此构建礼品知识库。 2. 礼品知识库的初始化和完善 利用礼品专家的知识对知识库进行部分初始化。 然后通过 一定的算法计算礼 品相似度,根据礼品的相似度对礼品知识库进行完善。 3. 礼品知识库推荐 系统要提供一个良好的知识库推荐接口,此接口能够准确描述用户的需求, 并使用户获得准确的 礼品 推荐和良好的用户体验。 4. 用户浏览推荐 用户浏览某一礼品的详细信息时,系统要向用户推荐与此礼品最相关的若干 礼品。 5. 礼品个性化 搜索 系统 要 能够 根据用户日志 提供个性化的 礼品 搜索功能。 系统设计意图 该系统设计的意图是要将符合中国文化的礼品 知识借助数据库进行知识库建模, 通过 礼品专家 对知识库进行初始化 ,然后 计算礼品的综合相似度对知识库进一步完善 ,同时, 系统要提供个性化的礼品搜索功能。 最后 , 设计良好的用户交互推荐接口 提升用户的体验 准确表达用户的需求进而向用户推荐礼品 ,在用户获得系统的推荐的同时,系统要根据用户的反馈信息进行学习从而提高系统的推荐准确度。 假定和约束 为了保证推荐的准确性 和客观性,本系统的假定和约束如下: 1) 从淘宝网上抓取的 40 类 共 3000 个 礼品 在一定时间内不会下架,即用户得到礼品推荐后可以 从网上 买到该礼品。 2) 所有礼品的分类 准确,且商家对 礼品的描述 不含欺诈信息。 需求规定 北京邮电大学研究生毕业论文 13 系统功能的需求规定 1) 基于节日 场合的推荐 基于送礼 节日 场合 推荐 通过用户选择送礼的节日或场合 来获得系统的礼品推荐。 用 户选 择 节 日获 得 节 日 推 荐 u s e s u s e s e x t e n d s 获 得 场 合 推 荐 u s e s 选 择 场 合 e x t e n d s u s e s 图 31 基于 节日场合推荐用例图 如上图所示,基于 节日场合 推荐的用例图,用户根据 自己的需求选择送礼节日或场合,系统调用节日场合推理向用户进行礼品 推荐。 由于送礼的节日和场合 不同,赠送的礼品会有所不同。 如情人节送花和巧克力合适, 中秋节送月饼合适,孩子满月送毛绒玩具,小衣服等合适,朋友生日送毛绒熊合适。 本系统将把礼品赠送 节日 场合分类如下。 送礼的节日有:春节,元宵节,情人节,妇女节,母亲节,儿童节,端午节,父亲节,七夕节,中秋节,教师节,感恩节,圣诞节,元旦等。 送礼的场合有:恋爱,约会,结婚,周年,生日,孩子满月,乔迁新居,升学,毕业,退休,升职,探病,慰问,感谢等。 2) 基于 收礼对象 的推荐 基于收礼对象 推荐 是通 过用户选择收礼者的身份,如性别,年龄,兴趣爱好来获得系统的推荐 礼品。 北京邮电大学研究生毕业论文。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。