基于Web数据挖掘的B2C推荐系统的设计
2012-09-17姚天昉
时 睿,姚天昉
0 引言
随着互联网的普及,电子商务在人们日常生活中起着越来越重要的作用。电子商务根据服务提供商和服务对象的不同分为3种:B2B、B2C和C2C,这里的B是Business的简称,代表的是企业,C是Customer的简称,代表的是个人消费者。B2B跟个人消费者以及人们的日常生活关系不大,B2C与C2C相比,具有产品质量和服务有保障的优点,人们慢慢开始从传统购物向B2C转变。在人们使用的比较多的网上购物网站,3C电子类的有京东、新蛋,图书类的有卓越、当当,日常生活用品类的有一号店等等。
在这些众多的购物网站和频繁的交易中,人们已经制造出相当多的数据,这给其他人商业机构或者研究人员无数潜在的机会来洞悉用户体验、商业营销、个人偏好和通常所谓的人类行为[1]。本文试用Web数据挖掘的有关方法,设计了一个可以为B2C用户推荐优惠商品的系统。
1 B2C推荐系统的架构设计
本系统中主要负责4个模块:用户管理系统、信息收集系统、信息监测系统、结果通知系统。4个模块的关系主要根据数据流的处理时间按来划分。首先,用户使用该推荐系统必须先登录该系统,使用完毕需要退出系统,以保证私人的信息不被泄露。其次,用户登录系统后,需要填写其所感兴趣的商品的信息。然后,本系统会根据用户的喜好,周期性地收集该产品的信息,主要用到的技术就是网络爬虫。在然后,收集到的信息由于信息量巨大,会放到一个非关系型的数据库,同时监测模块会检查数据的异常,比如降价促销之类的。最后,一旦有用户期望的行为发生,结果通知系统就会用某种方式通知该用户。整个系统的架构设计,如图1所示:
图1 系统架构
2 用户管理模块
众所周知,一个成功的信息系统会被很多用户使用,这就需要这个系统提供一个管理用户的功能,比如管理用户的密码,记录用户的喜好。本系统根据整个业务流程,将为用户管理模块需要实现以下几个功能:
2.1 注册登录功能
首先,使用该系统需要注册一个用户账号。由于邮件地址的唯一性,和恢复密码的便利性,本系统选择邮箱地址作为用户名。但同时为了与好友联系时候称呼上的方便,也为用户提供了昵称设置。
一旦创建好账号,用户可以方便地登录本系统。在同一浏览器,所有打开本系统的网页,用户所作的行为,都与存储在该用户的名下。如果用户使用完毕,注销登录,该用户或者其他人则不能再原来的浏览器上操作该用户的数据[2]。
2.2 好友关联功能
由于互联网数据的巨大,单个用户的能力往往十分微小,如果能够共享他人的数据和行为,那么每个用户得到的则不仅是自己拥有的。每个用户都在自己关注的商品,同时会对该商品进行某些数据上的操作,如果该用户能够分享其的数据或者行为,他的好友也会得到该商品的信息。
3 信息收集模块
在用户定义好监测目标后,本系统就会周期性地去互联网获取该商品的信息。这里首先要用到的就是网络爬虫,把商品所在的信息页下载到本系统,然后对这一非结构化的数据进行分析。最后将这些信息存储起来,已备系统和用户查用。
3.1 爬虫系统
一般地,网络爬虫分为通用的,限定的和主题的。通用网络爬虫的算法有先进先出(First In Fist Out, FIFO),对应的是宽度优先爬虫(breadth-first crawler)。如果将队列的实现有先进先出队列替换为优先队列,那么我们就获得另外一种爬去策略,即带偏好的爬虫(Preferential Crawler)[3]。这两种爬虫爬取的网页会是一个树形的结构,在本系统中,由于用户已经给定商品的 URL,所以这些网页相对互联网来说都是孤儿节点,也就是限定的爬虫[4]。
3.2 结构化数据抽取系统
在一个完整的网页下载到本地后,接下来的工作就是从网页中抽取目标信息的问题,即从自然语言文本中和网页的结构化数据中抽取信息(Structured Data Extraction)。一个抽取这种数据的程序通常被称作为包装器(Wrapper)。研究人员和互联网公司从20世纪90年代中期开始,着手研究信息抽取的问题,主要采用 3种方法:手工方法(Manual Approach)、包装器归纳(Wrapper Induction)和自动抽取(Automatic Extraction)。本系统采用手工的方法抽取网页的结构化数据。手工方法通过观察网页及其源码,由编程人员找出以下模式(pattern),再根据这些模式编写程序获取目标数据。为了让这一郭晨简单些,人们构建了几种模式规范语言及其用户界面[1]。此外,网页数据往往并不是结构化的,需要容错处理[5]。
3.3 商品信息存储系统
由于商品信息量的巨大,本系统采用非关系型的数据库系统Hadoop保存商品信息。关系型数据库的索引、关系以及事务处理等系统开销会限制系统的横向伸缩性,降低半结构化、非结构化数据的载入和批处理效率。所以 Hadoop刻意舍弃了索引、关系以及事务处理等关系型数据库的特性,按照“Shared Nothing”的架构原则,从底层开始设计了一个全新的分布式文件系统。
在可靠性要求极高的超大规模计算环境中,Hadoop建立了一个清晰的抽象层,解决了大规模数据分析任务和底层系统支撑能力之间存在的矛盾和挑战。使用Hadoop模型,可以非常容易地实现并行数据处理任务,程序员不必考虑诸如同步、并发、硬件失败等底层技术细节。
4 信息监测模块
当商品信息的数据被采集到数据库系统中,本系统后台会运行一个进程,也就是规则引擎,针对用户定义的监测行为进行检查,如果数据符合用户的期望要求,本系统会发一个通知请求给结果通知系统。
在这个模块,程序的主要工作是对非关系型数据库进行查询操作,如果数据收集模块是每半小时执行一次,那么信息监测模块也是每半小时执行一次,而且紧跟着信息收集模块后面进行的。
4.1 监测目标定义功能
一旦用户登录本系统,最需要做的事情就是录入他所关注的商品的信息。本系统让用户输入该商品在B2C购物网站的信息主页,然后自动获得该商品的价格及相关信息。同时,本系统也为用户获取该商品会在其他同类型的购物网站上的信息。
4.2 监测行为定义功能
在用户定义好监测目标后,本系统就会周期性地去互联网获取该商品的信息。互联网上的数据量是巨大的,用户利用这个功能可以得到他所想要的数据。比如,某商品2011年一月份的价格是 150元,然后每个月都会或多或少地降价,降幅在1元到5元不等,该用户希望价格跌倒120元的时候通知他。本系统可以让用户为商品定义是否降价或者价降幅度来监测商品的信息。
5 结果通知模块
当信息检测模块检查到用户定义的商品异常行为,该模块就会给结果通知系统发送一个通知请求。通知系统支持两种形式的通知,即邮件和短信。由于用户使用的是互联网系统,所以本系统的默认通知方式也是最通常的通知方式为邮件通知。但是邮件通知没有及时性,如果用户下班或者网上才看到通知,但是该商品的降价只持续了两个小时之后又取消了,这是用户不希望看到的。所以本系统也提供短信通知的方式。
本系统采用 SMTP协议实现邮件通知系统,只需一个SMTP的服务器,就可以给用户发送邮件通知,现在许多个人邮箱也提供这样的服务。另外一个重要的通知方式是短信,现在许多通信运行商都提供短信平台。如果针对的事中国移动的用户,也可以使用OpenFetion平台。
6 B2C推荐系统的进一步完善
本系统只是利用Web数据挖掘的若干技术为B2C提供优惠商品的推荐系统,但是该系统在许多方面还有待完善。
在数据收集模块中,现在许多购物网站使用图片来显示价格的,主要是为了其他的购物网站或者竞争对手收集他们的商品信息,这也为本系统的信息收集带来了困难。所以,如果要更好地更多地收集商品信息,本系统需要一个数字识别模块,用在网络爬虫中,获取图片形式的商品价格信息。
在收据收集模块中,还有一个问题,就是结构化数据的抽取,如果支持的购物网站很多,就需要一个自动的包装器。Web数据挖掘中,提供另外两种信息提取的办法,第一种是包装器归纳(Wrapper Induction),它是有监督学习方法,是半自动的,这种办法从手工标注的网页或者数据记录中学习一组抽取规则,随后这组规则即被用于从具有类似格式的网页中抽取目标数据项。第二种事自动抽取(Automation Extraction),即无监督方法,给定一张或数张网页,这种方法自动从中寻找模式或语法,一边进行数据抽取。由于这种方法不需要手工标注,所以他可以处理对大量站点和网页的数据抽取工作[1]。
7 结束语
综上所述,本系统使用了 Web数据挖掘的若干技术,实现了一个为 B2C推荐优惠商品的系统。具体使用到的技术有网络爬虫和包装器生成。该系统为 B2C用户完成了自动监测所关注商品的功能,同时提供商品信息收藏和与好友分享的功能。该系统是 Web数据挖掘技术在电子商务中一个非常有用的应用。
[1]基于Hadoop及关系型数据库的海量数据分析研究 程莹,电信科学2010年11期
[2]Python Web Development with Django, Jeff Forcier, Paul Bissex, Wesley Chu, [j]Pearson Education, Inc. 2009.5.Charming Python: Easy Web data collection with mechanize and Beautiful Soup, David Mertz, Ph.D. IBM [j]Developer Works, Nov 24, 2009
[3]Web数据挖掘 Bing Liu著 俞勇等译 清华大学出版社2009年4月第一版
[4]Programming Collective Intelligence, Toby Segaran,O’Reilly Media. Inc, 2009.1