互动电视收集用户行为信息研究
孙涵亮 陆伟 朱雯卿
(上海文广互动电视有限公司)
【摘要】 本文以互动电视用户行为的传统收集方式及其弊端作为背景,引出互动电视用户行为收集的新方式及其优势。首先介绍现有收集方式的系统的工作原理,由于受到互联网网站统计的启发,想到要引入新的收集方式,从而提高所收集的信息的广度、深度和精度,并且可以随意改变收集方式、收集内容以及最终的日志文件格式的同时不影响EPG正常工作。新的收集方式,从不同的软硬件功能、性能角度出发,提供了多套解决方案。本文还简单介绍了互动电视的工作原理。
【关键字】 互动电视 收视率 用户行为分析 商业智能 数据挖掘 信息采集 数据收集
1. 引言
2001年12月31日SiTV(上海文广互动电视)在万众瞩目的期待中带着“电视新看法”的光环,从SMG这个大家庭诞生了。互动电视,让观众从此有了选择电视节目的权利,从“我被看”变成“我要看”。从被动变成主动不仅仅是观众看电视方式的改变,更是传统媒体的一个质的飞跃。很快一系列的问题困扰着互动电视人:哪些节目备受观众喜爱?观众要看什么?如何才能让观众以最少的遥控器操作获得最想收看的节目?互动电视人很快意识到收视行为的采集和分析将是互动电视成长发展的必经之路。很快,通过收集服务器日志,对比节目编排清单,可以获取收视率,但是无法获取观众的用户行为,也无法精确获取到节目更深层次的信息,此时互动电视人又意识到,一种新的采集方式如大旱之后的甘露般急需被发掘。 2. 互动电视用户行为信息传统收集方式在了解互动电视用户行为信息的传统收集方式前,我们有必要简单的介绍一下互动电视的工作原理。2.1 互动电视工作原理如图1所示区域机顶盒会以HTTP方式向该区域的负载均衡服务器发送请求,负载均衡服务器会根据当前服务器集群的负载情况,选择相对空闲的服务器作为处理请求的对象。获图1
得处理权的服务器,向EPG发出请求,EPG再向EPG数据库发出请求,从而获得对应的数据,结合模板文件反馈给负载均衡服务器,负载均衡服务器再将处理完请求的页面发送给区域机顶盒,最后由机顶盒将丰富多彩的画面展现给观众。当观众在EPG页面产生点播动作时,EPG会向区域BO发出请求,要求审核观众是否具有播放该节目的权限,若审核通过即从视频服务器调出该节目进行播放,若审核不通过将在EPG界面上展现出拒绝信息。刚才我们是从用户请求角度来阐述互动电视工作原理的,接下来我们将从后台部署角度阐述其工作原理,这能解释EPG界面的数据及其模板从何而来。当一个新版本的EPG界面被开发完成后,他的模板文件(图片,背景等等)会被dCMS同步到EPG服务器集群的每台服务器上,而他的数据会被发布到EPG中心数据库,再由中心数据库发布到区域数据库,最后发布到EPG服务器集群的每台数据库服务器上。2.2 互动电视用户行为信息传统收集方式图2
接下来让我们忽略掉图1的dCMS数据发布以及负载均衡,同时展开EPG部分的详细内容来看一下,如图2所示:EPG中有一个日志输出的模块。传统的收集方式就是将这一部分的日志采集后与EPG数据库中的dCMS编排信息进行配对后的出节目收视率。这样采集信息的缺点很多。日志的广度、深度和精度直接影响到产出的收视率的广度、深度和精度。例如:同一个节目被多个可供观众选择的热区连接,此时传统收集方式将无法区分来源。再如:由于需求的变更,要求对日志进行格式或者内容的调整,这将耗费大量人力物力,并且需要重新启动EPG服务器,其灵活性十分差。由于日志输出是在EPG服务器上进行的,因此EPG服务器的性能直接影响到日志的质量,数据的失真或者丢失时有发生,这使得日志和EPG自身功能彼此影响。 3. 网站统计技术由于机顶盒向EPG提出的是HTTP请求,这让我们联想到了英特网上的网站。一般情况下网站被访问时,使用的也是HTTP的请求。那么,我们是否可以借鉴网站统计的方法来采集EPG的访问信息呢?3.1 网站统计技术的概述首先,用户的行为会触发浏览器对被统计页面的一个http请求,这里姑且先认为行为就是打开网页。当网页被打开,页面中的埋点javascript片段会被执行。一般网站统计工具都会要求用户在网页中加入一小段javascript代码,这个代码片段一般会动态创建一个script标签,并将src指向一个单独的js文件,此时这个单独的js文件(图3中橙色节点)会被浏览器请求到并执行,这个js往往就是真正的数据收集脚本。数据收集完成后,js会请求一个后端的数据收集脚本(图3中的“backend”),这个脚本一般是一个伪装成图片的动态脚本程序,可能由php、python或其它服务端语言编写,js会将收集到的数据通过http参数的方式传递给后端脚本,后端脚本解析参数并按固定格式记录到访问日志,同时可能会在http响应中给客户端种植一些用于追踪的cookie。图3
3.2 数据收集脚本执行阶段介绍数据收集脚本被请求后会被执行,这个脚本一般要做如下几件事:1) 通过浏览器内置javascript对象收集信息,如页面title(通过document.title)、referrer(上一跳url,通过document.referrer)、用户显示器分辨率(通过windows.screen)cookie信息(通过document.cookie)等等一些信息。2) 解析并收集配置信息。这里面可能会包括用户自定义的事件跟踪、业务数据(如电子商务网站的商品编号等)等。3) 将上面两步收集的数据按预定义格式解析并拼接。4) 请求一个后端脚本,将信息放在http request参数中携带给后端脚本。这里唯一的问题是步骤4,javascript请求后端脚本常用的方法是ajax,但是ajax是不能跨域请求的。这里js在被统计网站的域内执行,而后端脚本在另外的域,ajax行不通。一种通用的方法是js脚本创建一个Image对象,将Image对象的src属性指向后端脚本并携带参数,此时即实现了跨域请求后端。这也是后端脚本为什么通常伪装成gif文件的原因。3.3 后端脚本执行阶段介绍后端脚本是一个伪装成gif的脚本。这种后端脚本一般要完成以下几件事情:1) 解析http请求参数的到信息。2) 从服务器(WebServer)中获取一些客户端无法获取的信息,如访客ip等。3) 将信息按格式写入log。4) 生成一副1×1的空gif图片作为响应内容并将响应头的Content-type设为image/gif。5) 在响应头中通过Set-cookie设置一些需要的cookie信息。之所以要设置cookie是因为如果要跟踪唯一访客,通常做法是如果在请求时发现客户端没有指定的跟踪cookie,则根据规则生成一个全局唯一的cookie并种植给用户,否则Set-cookie中放置获取到的跟踪cookie以保持同一用户cookie不变(见图4)。这种做法虽然不是完美的(例如用户清掉cookie或更换浏览器会被认为是两个用户),但是是目前被广泛使用的手段。图4
4. 互动电视用户行为信息新型收集方式结合网站统计技术,互动电视用户行为信息新型收集方式如图5所示,下面介绍收集流程。图5
4.1 互动电视用户行为信息新型收集方式收集流程首先,观众对遥控器的操作会触发EPG界面对被统计界面的一个http请求,先假设是观众进入另一个界面。当新界面被打开,界面中的埋点javascript片段会被执行。我们事先在所有界面的头嵌入一个script标签,并将src指向一个单独的js文件,此时这个单独的js文件(图5中橙色节点)会被EPG界面请求到并执行,这个js就是真正的数据收集脚本。数据收集完成后,js会请求一个后端的数据收集脚本(图5中的“后台”),这个脚本一般是一个伪装成图片的动态脚本程序,可能由php、python或其它服务端语言编写,js会将收集到的数据通过http参数的方式传递给后端脚本,后端脚本解析参数并按固定格式记录到访问日志(图5中的“log”)。至此,整过收集流程结束。由于新的收集方式需要额外的硬件支持,并且考虑到软硬件的协作的性能发挥,所以提出三种解决方案,可以视具体的情况而定。1)收集方案一:一体式收集方案该方案如图6所示,考虑到现有EPG驻地众多,实施困难,经费有限等问题。在负载平衡用的服务器集群外,仅用一台BI监测服务器部署埋点js,监测收集界面信息,将收集到的最终数据以文件方式记录到BI监测服务器上。也就是说仅有一台服务器,它既是埋点js的所在处,又是log文件的存放地。优点:改动少,每个驻地仅需一台额外BI监控服务器。缺点:所受负荷大,若崩溃将有丢失所有数据,并无法收集之后观众操作行为的数据。2)收集方案二:监控、存放分离式收集方案该方案如图7所示,在收集方案二的基础上增加一台文件服务器用以降低服务器崩溃带来的风险以及灾难恢复的时间。在负载平衡用的服务器集群外,用一台BI监测服务器部署埋点js,监测收集界面信息,用另一台服务器作为文件服务器,用来以文件方式记录收集到的最终数据。换句话说,使用两台服务器,一台是埋点js的所在处,另一台是log文件的存放地。优点:改动较少,每个驻地仅需2台额外BI监控服务器。缺点:所受负荷大,若监控服务器崩溃,将无法再收集之后观众操作行为的数据,若文件服务器崩溃,将有可能丢失所有数据。3)收集方案三:分散式收集方案该方案如图8所示,该从收集信息为重的角度出发,为每一台EPG服务器配备一台BI监测服务器及其对应的文件服务器。可以理解成一套BI服务器组,每套由两台服务器组成,一台部署埋点js,监测收集界面信息,另一台服务器用来以文件方式记录收集到的最终数据。换句话说,每套BI监测服务器组,一台是埋点js的所在处,另一台是log文件的存放地。优点:压力平衡,崩溃风险小。缺点:投入大,升级不易。4.2新型收集方式与原有系统的兼容性在几乎所有的升级项目中,大家最关心的莫过于升级后是否对原有系统有影响,对之前系统的兼容性是否强。下面来简单的回答一下这两个问题。第一,由于仅仅是在EPG界面上插入一行script标签,指向一个埋点的js,因此它的语言与原有系统语言是一致不冲突的。其次在操作上也仅仅是在头文件一次插入即可让所有调用改头文件的EPG界面全部执行,没有很大的工作量和冲突性可言。第二,由于埋点js及其记录日志的后台脚本均在BI监测服务器(组)上执行,所以不会对EPG服务器造成较大的额外负担。图6
第三,由于BI监测系统的监测服务是在BI监测服务器上执行,因此若有收集方式、收集内容以及最终的日志文件格式需要改变,也可以随时调配变更,不需要像原来系统那样修改整个EPG界面后重新部署后并重新启动服务。当需求变更时,新型收集方式只需按新需求更改js,观众在浏览EPG界面的时候跳转到下一个页面时,新的js就被自动重新加载到EPG界面上开始工作。综上所述,新型收集方式不但兼容性强而且解决了原来系统发生需求变更时的窘境,就更不用说会对原有系统产生不良影响了。图7
图8
参考文献[1] Usama Fayyad, Gregory Piatetsky-Shapiro, and Padhraic Smyth.《Data Mining to Knowledge Discovery in Databases》.AI Magazine 17(3) : Fall 1996, 37-54.[2] W.H.Inmon.《Building the Data Warehouse》.John Wiley & Sons,INC.[3] Harjinder S.Gill.《数据仓库——客户/服务器计算指南》.清华大学出版社[4] 陈文伟.《智能决策技术》.电子工业出版社[5] Joyce bischoff Ted Alexander.《数据仓库技术》.电子工业出版社[6] Herb Edelstein.《浅说数据挖掘》.计算机系统应用:98年:第4期[7] 高文.《KDD——数据库中的知识发现》.计算机世界:98/9/28[8] 歌华有线.《互动电视项目-EPG系统设计说明书》.2011年第一版[9] 东方有线.《EPG模板开发规范》.2011年第一版[10]上海成思信息科技有限公司.《EPG Tag 说明》.2010年第一版[11]薛毅 等.《统计建模与R软件》.清华大学出版社[12]易丹辉.《时间序列分析方法与应用》.中国人名大学出版社 编辑:中国新闻技术工作者联合会
评论 点击评论