专利名称:一种自适应视频广告投放方法及装置的制作方法
技术领域:
本发明涉及网络视频广告投放技术领域,尤其涉及一种根据广告投放量和广告容量自适应地调整一次性反馈给用户的视频广告个数的视频广告投放方法。
背景技术:
目前视频网站上的视频广告投放常常会遇到这样的问题有时需要投放的广告(即广告商要求投放的广告总量,简称为待投放量)非常多而广告容量(即通过广告投放系统能够投放的广告总量,简称为可投放量)又不足,有时候可投放量充足,而待投放量又比较小。例如,某部电视剧近期比较热门,每天有200万次的播放量,如果在每次播放电视据前只播放一个视频前贴广告(正规视频播放前播放的一段视频广告),那么这部电视剧对应的每日广告可投放量是200万,如果使用双前贴或三前贴机制,那么这部电视剧对应的 每日广告可投放量就是400万或600万。由于这部电视剧是近期的热播剧,可能会有多个广告商要求在这部电视剧中投放广告,且这些广告商要求的每日广告待投放量之和可能已经达到300万,如果使用单前贴机制,那么每天就会有100万次投放没法完成,这时如果开通双前贴机制,则不仅可以完成300万的待投放量,还能有100万次的剩余可投放量。如果后期又有新的广告商加入,要求也在这部热播剧中投放广告,导致每日要投放在这部剧中的广告次数达到580万次,那么只需开通三前贴机制即可。面对上述需求,就需要对广告投放系统做出调整,比如某段时间前贴广告的可投放量不足,就需要开通双前贴或三前贴机制,即在一段视频播放前让用户看2个或3个前贴广告。然而在设置多前贴机制后,会由此而产生一个问题,S卩如果固定每次广告请求时投放的前贴个数,当广告的待投放量很少时,用户在前面一段时间内会看到大量双前贴或更多前贴广告,而过了这段时间后,由于前面投放广告过快,后面一段时间就一个广告都看不到了。例如,某分钟要求完成10万次的广告投放,如果固定了要求每次请求广告都返回2个前贴,那么可能可能在这一分钟的前若干秒内,对每次广告请求都会投出双前贴,导致10万次广告在第45秒的时候全部释放完毕,那么剩下的15秒钟里面,如果再有广告请求过来,就一个广告也投不出去了,因为这一分钟的任务已经由于前45秒的大量投放而提前完成了。一直等到下一分钟开始后,又开始一个10万次的广告投放任务,然后再有40多秒的连续双前贴投放,过了 40多秒后,又一个广告都看不到了。显然,这样会严重影响用户体验。因此,如何及时调整用户一次广告请求所返回的广告个数就成了一个非常重要的问题。目前的在线视频网站一般采取下面几种方法来完成广告个数的调整第一种方法最原始的方式,即直接在广告系统中固化投放的前贴个数和投放逻辑,当广告可投放量紧张时只能通过不断地系统升级来修改前贴投放个数。这种方式维护工作量大、调整速度慢、灵活性差,不能及时应对市场的需求。另外一种方法是在第一种方法的基础上进行改进,设置一个投放前贴广告个数的配置参数或称为“开关”,在广告投放较为密集的时期,将投放前贴广告个数参数设置为多个,非密集时期,则设置为I个,这样虽然比第一种方法灵活了一些,但其缺陷也很明显,因为需要人工去估算某段时期内的广告待投放量和可投放量之间的关系,根据人为估算结果来确定配置参数中需要设置的前贴广告个数,而人为估算难免会与实际需求出现较大偏差,甚至出现与实际需求严重不符的情况,从而影响广告投放效果和效率。此外,通过上述两种方式,由于人为调整不能保证与实际需求的平稳过渡,容易使调整前后使用户观看到的广告个数出现较大起伏,从而影响用户体验。
发明内容
有鉴于此,本发明的主要目的在于提供一种自适应的视频广告投放方法,用于解决现有视频广告投放方法不能依据实际需求实时调整广告投放个数,灵活性差,无法保证用户观看广告个数平稳地变化等技术问题。为达到上述目的,本发明的技术方案是这样实现的 一种自适应视频广告投放方法,该方法包括按预设的周期T获取当前周期T内需要投放的广告投放任务,生成广告投放任务集合AdTaskSet,并将生成的AdTaskSet添加到广告任务集合列表AdTaskSetList中;在接收到广告请求时,逐一在AdTaskSetList的每个AdTaskSet中匹配符合条件的广告,并将匹配所得的广告一次性返回给广告请求方;检查AdTaskSetList中的广告投放完成情况,当某个AdTaskSet中的广告已经全部投放完毕时,从AdTaskSetList中移除该AdTaskSet。进一步地,根据系统预设的一次广告请求最多允许投放的广告个数设定AdTaskSetList 的中 AdTaskSet 的最大个数 η,当 AdTaskSetList 列表中 AdTaskSet 个数达到上限值η时,需要在插入新生成的AdTaskSet之前,删除列表末尾的AdTaskSet。进一步地,所述逐一在AdTaskSetList的每个AdTaskSet中匹配符合投放条件的广告时,在每个AdTaskSet中最多只取一个广告,匹配的过程具体为建立一个临时列表,在对每个AdTaskSet进行匹配时,将所述临时列表作为参数传入匹配函数,在获得一个符合条件的广告时,首先将其与临时列表中已获得的广告进行比较,如果临时列表中已经存在相同的广告,则继续匹配其它符合条件的广告,在每个AdTaskSet中最多只取一个广告;如果临时列表中不包含相同的广告,则将该广告添加到所述临时列表中,然后执行下一个AdTaskSet的匹配;在匹配完所有的AdTaskSct后所得的临时列表即包含了所有要向广告请求方反馈的广告。进一步地,所述AdTaskSet由广告投放条件树CondTree和广告实体映射表AdEnt i tyMap两部分组成;所述CondTree用于存储广告投放条件,AdEnt i tyMap用于存放待投放广告的具体属性;所述在AdTaskSet中匹配符合条件的广告时,基于CondTree所反映的广告投放条件树从AdTaskSet中查找满足广告请求的广告。进一步地,通过独立进程广告任务集合生成模块AdTaskAssigner来实现AdTaskSet的生成、AdTaskSetList中广告投放完成情况的检查;所述AdTaskAssigner作为独立的进程在系统后台运行,每间隔一个生成周期T自动运行一次;通过另一独立进程广告匹配引擎AdMatcher来实现广告请求的接收、广告匹配及反馈。
本发明还提供一种自适应视频广告投放装置,该装置包括广告任务集合生成模块AdTaskAssigner,用于按预设的周期T获取当前周期T内需要投放的广告投放任务,生成广告投放任务集合AdTaskSet,并将生成的AdTaskSet添加到广告任务集合列表AdTaskSetList中;该模块还用于检查AdTaskSetList中的广告投放完成情况,当某个AdTaskSet中的广告已经全部投放完毕时,从AdTaskSetList中移除该AdTaskSet ;广告任务集合列表模块AdTaskSetList,用于存放当前正在投放的广告任务集合;广告匹配引擎AdMatcher,用于根据视频播放器发来的广告请求,逐一在AdTaskSetList的每个AdTaskSet中匹配符合条件的视频广告,并将匹配获得的广告一次性返回给广告请求方。
进一步地,所述AdTaskSetList中AdTaskSet的最大个数η根据系统预设的一次广告请求最多允许投放的广告个数设定;所述AdTaskAssigner还用于在插入AdTaskSet时判断所述AdTaskSetList的AdTaskSet个数是否达到最大值η,当达到时,则需在插入新生成的AdTaskSet之前删除列表末尾的AdTaskSet。进一步地,所述AdMatcher逐一在AdTaskSetList的每个AdTaskSet中匹配符合条件的广告时,首先建立一个临时列表,在对每个AdTaskSet进行匹配时,将所述临时列表作为参数传入匹配函数,在获得一个符合条件的广告时,首先将其与临时列表中已获得的广告进行比较,如果临时列表中已经存在相同的广告,则继续匹配其它符合条件的广告,在每个AdTaskSet中最多只取一个广告;如果临时列表中不包含相同的广告,则将该广告添加到所述临时列表中,然后执行下一个AdTaskSet的匹配;在匹配完所有的AdTaskSet后,将所述临时列表反馈给广告请求方。
进一步地,所述AdTaskSet由广告投放条件树CondTree和广告实体映射表AdEntityMap两部分组成;所述CondTree用于存储广告投放条件,AdEntityMap用于存放待投放广告的具体属性;所述AdMatcher基于CondTree所反映的广告投放条件树从AdTaskSet中查找满足广告请求的广告。进一步地,所述AdTaskAssigner和AdMatcher为两个相互独立的进程,所述AdTaskAssigner作为独立的进程在系统后台运行,每间隔一个生成周期T自动运行一次。本发明将广告任务分配进程和广告匹配进程互相独立,并利用缓冲池机制,使得广告系统能够根据当前广告投放进程自动调整用户看到的前贴广告个数,整个调整过程完全由系统来实现,无需任何人工估算和对系统的人工操作,用户观看到的广告个数保持平稳,且调整迅速、灵活、准确性高。
图I为本发明实施例提供的自适应的视频广告投放方法实现原理图;图2为本发明实施例提供的CondTree的结构示意图;图3为本发明实施例提供的AdEntity的结构示意图;图4为本发明实施例提供的AdTaskAssigner实现广告任务分配的示意图;图5为现有技术的视频广告投放方法的投放效果示意图6为本发明实施例提供的视频广告投放方法的投放效果示意图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚明白,以下举实施例并参照附图,对本发明进一步详细说明。图I为本发明实施例提供的用于实现本发明提出的自适应的视频广告投放方法的系统结构原理图,该系统主要包括自适应的视频广告投放装置、广告数据库AdDatabase、视频播放器VideoPlayer ;自适应的视频广告投放装置进一步包括广告任务集合生成模块AdTaskAssigner、广告任务集合列表模块AdTaskSetList、广告匹配引擎AdMatcher0 广告数据库AdDatabase :用于存放广告投放任务信息,以及广告属性;所述的视频广告投放任务信息指依据广告商的要求定制的广告投放时间、广告投放量、广告投放条件、待投放的广告标识等信息;所述的广告属性指广告本身的一些信息,例如广告标识、广告素材存放的URL、广告素材的播放时长、曝光监测地址、点击跳转地址等;广告任务集合列表模块AdTaskSetList :用于存放当前正在投放的广告任务集合;本发明优选实施例中,配置有一个广告任务集合生成周期参数T,用于控制由AdTaskAssigner生成广告任务集合的时间间隔;例如,当广告任务集合生成周期T设置为I分钟时,AdTaskSetl表示当前这一分钟的广告投放任务集合,后面的AdTaskSeti (i = 2,3, ... η)依次表不i-Ι分钟前未完成的广告投放任务集合。广告任务集合生成模块AdTaskAssigner :用于周期性地从广告数据库获取当前广告任务集合生成周期内需要投放的广告投放任务,生成广告投放任务集合,并将所生成的广告投放任务集合添加到AdTaskSetList的列表中;以及负责从AdTaskSetList的列表中删除已经投放完毕的AdTaskSet ;优选地,AdTaskAssigner设计为一个定时任务,系统启动后将其作为独立的进程在系统后台运行,每间隔一个生成周期T自动运行一次。AdTaskAssigner的任务之一是定时从AdDatabase中取得当前广告任务集合生成周期T内的所有广告投放任务,将这一批任务组织成为一个广告任务集合即一个AdTaskSet,再将生成的 AdTaskSet 插入到 AdTaskSetList 的最前端,原来 AdTaskSetList列表中的AdTaskSet则依次后移。优选地,为了防止在广告可投放量严重不足的情况下,让用户看到过多的广告,可预先设置AdTaskSetList中AdTaskSet的最大个数η,即设定一次广告请求最多允许投放的广告个数,当列表中元素个数达到系统设置的上限值η后,如果继续在前面插入AdTaskSet,则列表末尾的元素会被自动丢弃。AdTaskAssigner的任务之二是检查AdTaskSetList中的广告投放完成情况,如果某个AdTaskSet中的广告已经全部投放完毕,则该AdTaskSet就会被从AdTaskSetList中移除;广告匹配引擎AdMatcher :用于根据视频播放器VideoPlayer发来的广告请求,逐一在AdTaskSetList的每个AdTaskSet中匹配符合条件的视频广告,并将匹配获得的广告一次性返回给VideoPlayer ;优选地,从AdTaskSetList中获取广告的方法可以为依次从各个AdTaskSet中查找广告,每个AdTaskSet中最多只取一个广告,且返回的多个广告不允许相同,即不能连续2次重复播放同一个广告。视频播放器VideoPlayer :用于向AdMatcher发送广告请求,接收AdMatcher返回的广告,依次向用户播放广告内容; 本发明不限定视频播放器的类型以及视频广告的格式类型,当用户打开某个视频播放页观看视频前,VideoPlayer会自动向AdMatcher发送广告请求,得到AdMatcher的返回的广告后,依次向用户播放广告内容。基于图I所示的实现自适应的视频广告投放方法的系统,从VideoPlayer发起广告请求到获得反馈结果的过程如下步骤I、VideoPlayer 向 AdMather 发送广告请求;所述广告请求中应当包含当前视频的id、视频所属的分类和二级分类、当前浏览用户的ip和cookie、关键字等信息。步骤2、AdMatcher 从 AdTaskSetList 中的第一个 AdTaskSet 开始到最后一个AdTaskSet,依次判断每个AdTaskSet中是否有满足本次广告请求的广告,如果有则AdMatcher从对应的AdTaskSet中获取一个满足条件的广告,最后形成一个广告反馈列表,将广告反馈列表返回给播放器进行播放;优选地,针对一次广告请求,在开始匹配时AdMatcher都会新建一个临时列表,AdMatcher到每一个AdTaskSet中查找广告,都会把找到的符合投放条件的广告放到这个列表中,当开始对下一个AdTaskSet进行查找时,会将这个临时列表作为参数传入查找函数,AdMatchcr在AdTaskSet的CondTree树中遍历时,每找到一个广告后,都会拿这个广告和临时列表中已经取得的所有广告进行比对,如果临时列表中已经包括了当前广告,则AdMatcher不会添加这个广告,而是继续在当前AdTaskSet中查找其它满足条件的广告,直到找到合适的广告,才将这个广告添加到上述临时列表中,如果遍历完整个CondTree都没找到,则不必向上述临时列表中添加广告。在查找完所有的AdTaskSet后,AdMatcher将所述临时列表做为广告反馈列表返回给播放器。例如AdMatcher从AdTaskSetList中的AdTaskSetl中查找可满足本次请求的广告,若AdTaskSetl中有符合广告请求所给定条件的广告,则AdMatcher从AdTaskSetI中取得一个广告,作为第一前贴广告;然后AdMatcher依次从AdTaskSetList中的AdTaskSet2、AdTaskSet3、· · ·、AdTaskSetn中查找可满足本次请求的广告,若对应的AdTaskSet中有符合广告请求所给定条件的广告,贝1J AdMatcher从对应的AdTaskSet中取得
第二个、第三个.....第η个广告,作为第二前贴广告、第三前贴广告.....第η前贴广告。
最后,AdMatcher将前面找到的所有可投放的前贴广告组合起来(总个数可能会小于η),一次性返回给播放器进行播放。步骤3、VideoPlayer接收到AdMatcher反馈的前贴广告播放列表后,按顺序依次播放列表中的广告。可以看出,AdTaskSetList所起的作用为 AdTaskAssigner 和 AdMatcher 之间的一个缓冲池。当广告待投放量大、可投放量不足的时候,当前周期T的投放任务集合AdTaskSetl就无法完成,等到下一周期T后,随着新的AdTaskSet的插入,老的AdTaskSetl就成为AdTaskSet2, AdTaskSetList中的AdTaskSet个数就会自动增加,用户看到的前贴广告个数也随之自动增加;反之,当广告待投放量变小后,AdTaskSetList中的AdTaskSet个数就会自动减少,用户看到的前贴广告个数也随之自动减少。用户如果看到多个广告,那么他看到的第一个广告可能来自于当前周期T内的投放任务,第二个广告可能来自于之前的某个周期T内未投放完成的任务,其余可依次类推。用户看到的前贴广告个数η的取值范围为n e [O, N],其中 N 为 AdTaskSetList 中的 AdTaskSet 最大个数,对 AdTaskSetList 中的AdTaskSet个数进行限制是为了避免广告可投放容量严重不足时,AdTaskSetList中的AdTaskSet个数无限制增长,导致用户没完没了地看广告。通过上述方法实现了广告个数根据当前投放进度自动调整,无需人工进行干预。以下结合附图对本发明一优选实施例提供的AdTaskSet的组成结构进行详细说 明AdTaskSet为广告投放系统在设定周期T内生成的广告投放任务的集合,它由AdTaskAssigner 根据 AdDatabase 中的广告数据定时创建。AdTaskSet 由 CondTree (广告投放条件树)和AdEntityMap (广告实体映射表,为HashMap类型)两部分组成,图2为CondTree的结构示意图,CondTree是一个用于存储广告投放条件的树型数据结构,AdMatcher正是基于CondTree所反映的广告投放条件树从AdTaskSet中查找可满足广告请求的广告的。CondTree树形结构的描述如下(I)根节点cO为AdMatcher进行广告匹配时的初始访问节点;(2)每个叶子节点,例如c21、c22、c23下的子节点,为一个待投放的广告ID的列表,一个列表中的所有广告ID具有相同的投放条件;(3)根与叶子之间的中间层的节点,如ell、c21、cl2、c25等,对应于不同维度的广告投放条件,中间层的层数等于广告投放条件的维度,层次越高表示这个维度的权重越高,投放的优先级越高;在同一个层次内部,越靠左边的节点权重越高,投放优先级越高。投放条件的维度,可以解释为投放条件的分类,比如第一维度为客户级别维度,客户的级别不同,他们的广告投放的先后顺序也不同;第二维度为广告定向投放的方式如视频组定向、分类定向、关键字定向等,如视频组定投的广告要优先于分类定投的广告。AdEntityMap用于存放待投放的广告的具体属性,其通过广告ID与叶子节点中广告ID列表中的广告ID对应,其结构用Java语言可定义为HashMap〈Integer, AdEntity〉,HashMap中的key是整形数,表示广告ID, value是广告实体AdEntity类型的对象,用于表示一个广告的具体属性。AdEntity对象的结构如图3所示,其中“广告ID”是一个广告的唯一标识,它与图2中的CondTree树中叶子节点中的ID相对应;当前周期内剩余投放次数”为广告当前周期要投放的总次数减去当前周期内已经完成的投放次数之差。一个AdEntity被创建并初始化的时候,其“当前周期内剩余投放次数”和“广告当前周期要投放的总次数”相等,每完成一次投放,则“当前周期内剩余投放次数”自动减一,当前周期应投放的总次数则由AdTaskAssigner在相应的AdTaskSet生成周期T执行时计算出来。首先,假设AdTaskSet生成周期T为I分钟,一个小时之内的每分钟广告可投放量是均匀分布的,下面的公式可计算出一个广告在当前分钟应投放的次数Ti = (S-Sok) *rate[i])/60/SN。其中,Ti表示广告在当前小时每分钟要投放的次数;S表示广告预设的要投放的总次数;Sok表示当日已经投放完毕的总次数,该数据由广告系统根据相关日志汇总而来;rate[i]表示当前小时的广告可投放量占剩余的要投放广告的全部小时的广告可投放量的比例;SN表示用于广告投放的服务器数量,次数会被均分到每台服务器上。rate[i] = r[i]/(r[i ]+r[i+1]+r[i+2]+. . . +r[m])其中r是一个常量数组,存放的是一天24个小时中每小时的广告容量的比例,r[i]表示第i小时的比值,m表示广告投放结束的小时。r数组具体值如下{530,352,263,207,168,144,125,132,211,303,443,461,537,617,671,694,681,627,610,480,500,500,450,300} 其中各个数字的大小反映出其所对应小时的广告可投放量大小,一般来说每天各个小时之间的广告可投放容量比值是相对固定的,所以此处是一组常数。以下结合附图4对本发明如何通过AdTaskAssigner来实现广告投放任务的定时分配进行详细说明,具体步骤如下步骤401、在当前定时周期T到时,仓Il建一个只含根节点的CondTree ;步骤402、从数据库取出待投放的广告列表adList ;步骤403、根据CondTree定义的规则依次将广告列表adList中的广告ID加入到CondTree中,完成CondTree的构造;步骤404、将adList中的所有广告属性封装成AdEntity,并将AdEntity装入AdEntityMap 中;步骤405、将 CondTree 和 AdEntityMap 封装为一个 AdTaskSet ;步骤406、将AdTaskSetList中的元素顺次向右平移一位,如果末尾元素超出最大长度,则丢弃末尾元素;步骤407、将新创建的AdTaskSet加入到AdTaskSetList的最前端;通过上述描述可知,本发明中AdTaskAssigner的广告任务分配进程和AdMatcher的广告匹配进程互相独立,这种异步并行的工作模式提高了广告的投放效率。以下以实际应用中的实例来说明本发明提供的自适应的视频广告投放方法的实现过程,该实施例中,某视频网站的前贴广告投放要求为(I)最多允许前贴广告个数为5个;(2)广告客户根据重要性划分为I 7共7个等级,数字越小级别越高,越优先投放;(3)定向投放条件包括视频组定投、用户定投、城市定投、关键字定投、分类定投
坐寸ο首先,需要在后台设置一次广告请求最多允许投放的广告个数,即广告缓冲池AdTaskSetList的容量,然后,设置要投放的广告相关属性,包括AdEntity中的相关属性,以及所使用的定向投放方式和内容,比如定投方式为分类定投,定投内容为电视剧分类。开始广告投放后,AdTaskAssigner按周期T定时产生新的投放任务AdTaskSet,并将所生成的AdTaskSet插入到AdTaskSetList中,AdTaskSetList相当于一个缓冲池,其中的AdTaskSet个数会随着当前广告投放任务的完成进度而不断波动,理论波动区间为[O,5],而其实际波动曲线类似于图6中的情况,用户看到的前贴广告个数总是以I为步长,均匀变化的,如2- > 2- > 3- > 2- > 3,而不会出现跳跃,如1- > 3- > O- > 2- > O。
某用户打开某个内嵌VideoPlayer的视频播放页播放视频时,触发一次前贴广告请求,然后AdMatcher接受到该请求,到缓冲池AdTaskSetList中查找广告,此时AdTaskSetList中有2个AdTaskSet,分别表示当前分钟的投放任务集合,和上一分钟未投放完成的任务集合。AdMatcher先到AdTaskSetl中查找第一前贴广告,找到一个广告Al,然后再到AdTaskSet2中查找第二前贴,找到一个广告A2,最后将Al和A2的内容按照与播放器之间的协议格式返回,然后播放器根据得到的内容依次播放广告Al和A2。为了说明本发明效果,以图5和图6对照说明采用现有技术中人工调整方法和本发明提供的自适应的视频广告投放方法在广告投放效果上的区别,两个附图的横坐标都为用户请求广告的次数序号,纵坐标都为本次请求返回的广告个数。图5中,由于人工无法准确预估需要投放的前贴数,只能不断进行人工调整前贴个数,从而导致用户观看到的广告个数波动非常剧烈,比如第7次广告请求时,看到了 3个广告,第8、9次只看到I个,而第10次又一下看到4个,继而增加到5个之多,用户体验非常糟糕。图6的广告个数则波动非常平稳,两个相邻的广告请求之间返回的广告个数差值不超过1,用户看到的广告个数一直维持在2到3之间,基本处于可以用户可以接受的范围内。可见通过该本发明提供的方法,用户看到的广告个数能够比较平稳地波动,原因就在于本发明采用AdTaskSetList作为缓冲池,当某分钟出现广告容量不足的时候,下一分钟AdTaskSetList中的AdTaskSet个数就会增加一个,那么前贴广告个数也会立即增加上去,而不是等到人工检查出容量不足后,再去匆忙调整前贴广告个数。当投放的前贴个数增加之后,AdTaskSetList中原来积压的AdTaskSet也会更快地消耗掉,那么前贴个数又会自动减少,正是由于有了这个缓冲池,广告系统就能够非常灵敏地感知当前容量是否足够,迅速作出增加或减少前贴个数的调整。相比人工调整的方式来说,本发明大大提高了用户体验。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
权利要求
1.一种自适应视频广告投放方法,其特征在于,该方法包括 按预设的周期T获取当前周期T内需要投放的广告投放任务,生成广告投放任务集合AdTaskSet,并将生成的AdTaskSet添加到广告任务集合列表AdTaskSetList中; 在接收到广告请求时,逐一在AdTaskSetList的每个AdTaskSet中匹配符合条件的广告,并将匹配所得的广告一次性返回给广告请求方; 检查AdTaskSetList中的广告投放完成情况,当某个AdTaskSet中的广告已经全部投放完毕时,从AdTaskSetList中移除该AdTaskSet。
2.根据权利要求I所述的方法,其特征在于,根据系统预设的一次广告请求最多允许投放的广告个数设定AdTaskSetList中的AdTaskSet的最大个数n,当AdTaskSetList列表中AdTaskSet个数达到上限值n时,需要在插入新生成的AdTaskSet之前,删除列表末尾的AdTaskSet。
3.根据权利要求I所述的方法,其特征在于,所述逐一在AdTaskSetList的每个AdTaskSet中匹配符合投放条件的广告时,在每个AdTaskSet中最多只取一个广告,匹配的过程具体为 建立一个临时列表,在对每个AdTaskSet进行匹配时,将所述临时列表作为参数传入匹配函数,在获得一个符合条件的广告时,首先将其与临时列表中已获得的广告进行比较,如果临时列表中已经存在相同的广告,则继续匹配其它符合条件的广告,在每个AdTaskSet中最多只取一个广告;如果临时列表中不包含相同的广告,则将该广告添加到所述临时列表中,然后执行下一个AdTaskSet的匹配;在匹配完所有的AdTaskSet后所得的临时列表即包含了所有要向广告请求方反馈的广告。
4.根据权利要求I所述的方法,其特征在于,所述AdTaskSet由广告投放条件树CondTree和广告实体映射表AdEntityMap两部分组成;所述CondTree用于存储广告投放条件,AdEntityMap用于存放待投放广告的具体属性; 所述在AdTaskSet中匹配符合条件的广告时,基于CondTree所反映的广告投放条件树从AdTaskSet中查找满足广告请求的广告。
5.根据权利要求I所述的方法,其特征在于, 通过独立进程广告任务集合生成模块AdTaskAssigner来实现AdTaskSet的生成、AdTaskSetList中广告投放完成情况的检查;所述AdTaskAssigner作为独立的进程在系统后台运行,每间隔一个生成周期T自动运行一次; 通过另一独立进程广告匹配引擎AdMatcher来实现广告请求的接收、广告匹配及反馈。
6.一种自适应视频广告投放装置,其特征在于,该装置包括 广告任务集合生成模块AdTaskAssigner,用于按预设的周期T获取当前周期T内需要投放的广告投放任务,生成广告投放任务集合AdTaskSet,并将生成的AdTaskSet添加到广告任务集合列表AdTaskSetList中;该模块还用于检查AdTaskSetList中的广告投放完成情况,当某个AdTaskSet中的广告已经全部投放完毕时,从AdTaskSetList中移除该AdTaskSet; 广告任务集合列表模块AdTaskSetList,用于存放当前正在投放的广告任务集合; 广告匹配引擎AdMatcher,用于根据视频播放器发来的广告请求,逐一在AdTaskSetList的每个AdTaskSet中匹配符合条件的视频广告,并将匹配获得的广告一次性返回给广告请求方。
7.根据权利要求6所述的装置,其特征在于,所述AdTaskSetList中AdTaskSet的最大个数n根据系统预设的一次广告请求最多允许投放的广告个数设定; 所述AdTaskAssigner还用于在插入AdTaskSet时判断所述AdTaskSetList的AdTaskSet个数是否达到最大值n,当达到时,则需在插入新生成的AdTaskSet之前删除列表末尾的AdTaskSet。
8.根据权利要求6所述的装置,其特征在于,所述AdMatcher逐一在AdTaskSetList的每个AdTaskSet中匹配符合条件的广告时,首先建立一个临时列表,在对每个AdTaskSet进行匹配时,将所述临时列表作为参数传入匹配函数,在获得一个符合条件的广告时,首先将其与临时列表中已获得的广告进行比较,如果临时列表中已经存在相同的广告,则继续匹配其它符合条件的广告,在每个AdTaskSet中最多只取一个广告;如果临时列表中不包含相同的广告,则将该广告添加到所述临时列表中,然后执行下一个AdTaskSet的匹配;在匹配完所有的AdTaskSet后,将所述临时列表反馈给广告请求方。
9.根据权利要求6所述的装置,其特征在于,所述AdTaskSet由广告投放条件树CondTree和广告实体映射表AdEntityMap两部分组成;所述CondTree用于存储广告投放条件,AdEntityMap用于存放待投放广告的具体属性; 所述AdMatcher基于CondTree所反映的广告投放条件树从AdTaskSet中查找满足广告请求的广告。
10.根据权利要求6所述的装置,其特征在于, 所述AdTaskAssigner和AdMatcher为两个相互独立的进程,所述AdTaskAssigner作为独立的进程在系统后台运行,每间隔一个生成周期T自动运行一次。
全文摘要
本发明公开了一种自适应视频广告投放方法及装置,用于解决现有视频广告投放方法不能依据实际需求实时调整广告投放个数,灵活性差,无法保证用户观看广告个数平稳地变化等技术问题。本发明将广告任务分配进程和广告匹配进程互相独立,并利用缓冲池机制,使得广告系统能够根据当前广告投放进程自动调整用户看到的前贴广告个数,整个调整过程完全由系统来实现,无需任何人工估算和对系统的人工操作,用户观看到的广告个数能够保持平稳过渡,且调整迅速、灵活、准确性高。
文档编号G06Q30/02GK102708496SQ201210006320
公开日2012年10月3日 申请日期2012年1月9日 优先权日2012年1月9日
发明者卢述奇, 姚键, 尹玉宗, 张云锋, 张缓迅, 潘柏宇 申请人:合一网络技术(北京)有限公司