一种细粒度电台音频内容个性化组织推荐方法与流程

文档序号:11732127阅读:356来源:国知局
一种细粒度电台音频内容个性化组织推荐方法与流程
本发明专利涉及一种细粒度的电台音频内容个性化组织推荐方法,依据语义将电台的音频节目自动切分标注,并基于互联网大数据挖掘用户喜好,自动编排个性化节目单以及进行实时节目推送,涉及音频处理、机器学习、大数据分析、推荐系统、数据挖掘等领域。
背景技术
:广播的优势在于声音,用声音传递信息,用声音传递价值。传统广播电台通过采、编、制作的工作模式,利用无线电波向一定区域的受众传送声音节目;受限于传播机制,在传统媒体转型的巨大浪潮中,受到了前所未有的冲击。然而,借助大数据、新媒体技术,又给广播电台提供了前所未有的空间与潜力。就目前国内较热门的手机电台app而言:蜻蜓fm,打破了地域限制,通过新闻、音乐、经济等不同风格的分类,用户可以通过手机收听大陆、香港、台湾等几乎所有主要电台,但就其节目内容而言,仅仅是各电台的聚合,并没有内容上的创新;考拉fm,在线电台按照不同方式分类,如类型(新闻/搞笑/相声等)、艺人(周杰伦/孙燕姿等)、流派(民谣/校园等),可以根据用户的喜好自动编排推荐节目,但节目内容并非来自传统广播台,而多是网络播客;豆瓣fm,外观简洁,用户互操作简单,但该电台的播放源为音乐,并非广播节目。而部分国内传统电台提供互联网或手机广播,但大多数是直接将传统电台am/fm的节目内容平移到互联网和手机上。目前电台在制作节目或录制直播节目时,通常一段独立的音频长度较大,内容标记和查找极为不便。例如一个时长30分钟的新闻节目,是由十几条独立的新闻组成,类型包括国内新闻、国际新闻、体育新闻、社会新闻、娱乐新闻等等,然而想为用户推荐一段有关于“cba总决赛”的体育新闻,则很难查找到精确的音频内容段落。使用人工对音频打散标注的方式耗时耗力,限制了音频媒体资产的重组利用。同时,现有的手机音频电台app虽然各有侧重,但用户的体验还仅限于:收听同一频道的同类节目,简单连播同主题节目,或者电台的实时直播等。如何在节目单编排上面,既保留传统广播节目的形式,又能针对不同用户的个性化需求,在不同的时间,为用户播放用户该时段感兴趣的节目内容或片段,即结合现有app的长处,并体现传统广播电台节目的优势,盘活珍贵的用户数据,设置切实合理的用户兴趣采集方式及用户行为建模方式,并最终体现在节目单编排组织上面,亟待研究解决。技术实现要素:本发明给出一种将传统广播音频节目按语义自动切分并标注的算法过程,并给出基于互联网大数据进行个性化内容推荐的技术方案,从而实现细粒度的音频内容个性化组织推荐方法。本发明综合考虑了冷启动问题、结合用户收听时间的节目单组织生成、实时节目切换以及实时推送节目等因素,创新一种广播业务模式,改变当下电台地将fm直播移植到互联网流媒体播出的简单模式,从受众用户角度而言,满足了用户在恰当的时间收听到自己感兴趣节目额内容。本发明首先给出一种对给定语音类节目音频分析自动切分标注的技术方案。本发明综合语音类节目的特点以及音频的特征规律,采用基于阈值的端点检测方法、svm分类器以及说话人分割聚类的技术方案进行自动切分,并通过文本分析实现相似内容的聚类以及标注。该技术方案系统框图如附图1所示。系统将音频首先经过端点检测,找到静音段。然后通过svm把音频分为男性声音、女性声音、现场报道(嘉宾采访)、噪声、音乐、静音六种不同的类别。再通过说话人分割聚类技术将男性声音、女性声音、现场报道(嘉宾采访)进行分割聚类。然后对每个说话人的内容进行语音识别,将识别的结果进行文本分析,对内容相似的说话人段进行合并,这一段就是具有具体意义的一段。最后通过文本分析对段进行标注。本发明的训练数据均为电台实际播出的音频,标注为专业人员进行标注。首先,对音频进行分帧,分帧可使用的窗函数有矩形窗、海宁窗、汉明窗。第二步,进行预处理,消除趋势项和直流分量,在采集语音信号数据的过程中,由于测试系统的某些原因在时间序列中会产生的一个线性的或者慢变的趋势误差,例如放大器随温度变化产生的零漂移,传声器低频性能的不稳定或传声器周围的环境干扰。,总之使语音信号的零线偏离基线,甚至偏离基线的大小还会随时间变化。零线随时间的偏离极限被称为信号的趋势项。趋势项误差的存在,会使相关函数、功率谱函数在处理计算中出现变形,甚至可能使低频段的谱估计完全失去真实性和正确性,所以必须去除。第三步,进行降噪,由于广播音频的噪声大多为外出采访的噪音,所以本发明使用多窗谱估计的改进谱减法进行新闻音频的降噪。第四步,进行预加重,声门脉冲的频率响应曲线接近于一个二阶低通滤波器,而口腔的辐射相应也接近于一个一阶高通滤波器。预加重的目的是为了补偿高频分量的损失,提升高频分量。第五步,然后进行特征提取,特征提取是基于帧处理的。第六步,采用端点检测方法检测出语音的端点,从包含语音的一段信号中确定出语音的起始点和结束点的位置。通过端点检测,把音频切分成一个个句子。本发明中端点检测中的阈值选取要较大,目的为快速找到句子之间的停顿点。第七步,经过端点检测的音频首先经过svm1,将帧分为语音/非语音/静音,对语音帧通过svm1分成纯语音帧以及带噪语音帧,对纯语音帧再通过svm3分为男声/女声。对非语音帧通过svm4分为音乐以及噪声。第八步,对纯人声分离出的男声/女声以及现场报道(带噪语音)通过说话人分割与聚类技术,将说话人相同的顺序音频段进行合并。分析出最多音频段的男性声音和女性声音,即为男主持人和女主持人。第九步,对分离完成的说话人段进行语音识别并存储。最后,构建广播语义网,使用文本分析技术对相邻的说话人段进行分析处理,对有相似语义的说话人段进行合并并提取摘要进行标注。该技术方案的优点在于(1)可以快速对语音类节目音频进行基于语义的自动切分;(2)构建广播语义网,可提高文本分析精准度(3)对于细粒度的音频内容个性化组织推荐起到关键性作用。本发明中个性化节目组织推荐系统的节目推荐方法分为四大类:(1)提出一种解决冷启动的新用户节目推荐方法:采集登录用户的新浪微博内容构建“博文内容-兴趣主题-节目”模型,并结合注册信息进行用户画像,生成新用户的节目单;(2)提出一种结合时间上下文的个性化节目单推荐生成方法:采集电台用户的显式和隐式行为数据构建“用户-时间上下文-节目偏好”模型和“用户-节目-评分矩阵”模型,结合时间上下文和基于物品的协同过滤算法进行个性化节目单生成;(3)实时节目切换功能:对正在收听的节目提供“换一换”机制,根据用户兴趣进行实时节目切换;(4)节目实时推送功能:利用storm技术实现基于在线节目收听量等进行实时节目推送提醒。进一步的,方法(1)为解决新用户的冷启动问题,需要建立如下两种用户模型:(1.1)“博文内容-兴趣主题-节目”模型;(1.2)基于注册信息的用户初始画像模型。更进一步的,为构建(1.1)中的用户模型,步骤如下:(1.1.1)用户选择社交账号登录方式,输入新浪微博账号密码进行认证并授权登录;(1.1.2)调用新浪微博的用户接口api获取该用户的微博uid,该uid对于微博用户唯一;(1.1.3)利用微博用户的uid从http://www.weibo.cn网站上爬取该用户的微博博文内容,经预处理后,保存在以uid命名的文件中;(1.1.4)对(1.1.3)处理后的文件内容分条调用腾讯文智的文本分类api,获取内容的主题分类。对所有微博内容的兴趣主题进行过滤后汇总,以[主题:次数]的形式标识该用户该兴趣主题的偏好值。更进一步的,为构建(1.2)中的基于注册信息的用户初始画像模型,首先需要确定系统需要用户填写的注册信息包括哪些,在该个性化电台系统中,为了能够获取到用户对节目类型的显式偏好,以及通过用户信息进行用户群体聚类,需要填写的注册信息包括:选择偏好收听的节目类型,用户的性别,年龄和职业类型,共四部分。进一步的,方法(2)结合时间上下文的个性化节目单推荐生成方法,包括如下几个模块:(2.1)电台用户显式和隐式行为数据的采集;(2.2)“用户-时间上下文-节目偏好”模型的构建;(2.3)“用户-节目-评分矩阵”模型的构建;(2.4)结合时间上下文和基于物品的协同过滤算法产生用户的个性化节目单。更进一步的,模块(2.1)要采集的显式和隐式行为包括如下内容:(2.1.1)显式行为:用户对节目的操作信息,包括收藏、评分(1颗星到5颗星)、分享;(2.1.2)隐式行为:收听时长(用户id,节目id,收听开始时间,收听结束时间),收听次数(用户id,节目id,收听次数)。更进一步的,模块(2.2)“用户-时间上下文-节目偏好”模型的构建步骤如下:(2.2.1)采集用户收听的隐式行为,收集指标主要是某用户u对某节目p的收听时长。对于某用户u对于某节目p的某次收听行为表示为:{(u,p,start_time,end_time,id,no.),num=1,2,......}(1)其中id标识表达式(1)属于某节目p的第几次收听,no.表示id次收听的第几段收听记录,id和no.均从1递增;(2.2.2)根据表达式(1)来进行统计,得出用户u对于节目p的单次收听的收听时长占比表示如下:n为no.的最大值(2)其中duration是节目p的总时长;(2.2.3)综合表达式(1)和(2),将用户u在时间上下文(某时段t)对于节目p的偏好表示为:(2.2.4)节目的特征包括类型(如交通、新闻等)和主题(如科技、历史等)。用户对于单个节目的偏好程度即表达式(3)计算出来后,依据该节目所属的类型或主题,便可以得到用户在某时段对于某节目类型或者主题的偏好程度,即完成“用户-时间上下文-节目偏好”模型的构建。更进一步的,模块(2.3)“用户-节目-评分矩阵”模型表示如下:其中,矩阵中的每个元素rmn表示第m个用户对第n个项目的评分。更进一步的,模块(2.4)结合时间上下文的基于物品的协同过滤推荐算法生成个性化节目单的步骤如下:(2.4.1)获取模块(2.2)的“用户-时间上下文-节目偏好”模型,得到某用户u在某时段p内偏好的节目类型和主题列表。(2.4.2)选取(2.4.1)节目类型和主题列表中偏好值最大的topk节目类型和主题,k可根据推荐效果调整设置,如将k设为3。(2.4.3)利用mahout提供的基于物品的协同过滤算法itemcf生成对未收听过的节目的预测评分。其中相似性度量方法采用pearson相关系数,表示如下:(2.4.4)根据用户对节目的预测评分,按照评分值降序,取topk个节目,k值需要测试调整,一般情况下可取k值为200。(2.4.5)将(2.4.2)得到的用户在某时段下最喜欢的节目类型和主题,与(2.4.4)步骤中节目预测评分最高的节目所属的类型和主题相匹配,得到符合的节目,即可安排在对应的时间段进行播出。进一步的,方法(3)中实时节目切换功能的实现步骤如下:(3.1)用户对于个性化节目单中正在直播的节目点击“换一换”按钮。(3.2)根据模块(2.2)已完成的“用户-时间上下文-节目偏好”模型,获取用户在该时段偏好的节目类型和主题,从数据库中随机选取节目音频显示在节目单并播放。进一步的,方法(4)中节目实时推送功能的实现包括三个模块:(4.1)实时统计模块:主要包括实时热播节目统计和在线收听人数统计,统计结果将发送给检测模块和推送模块;(4.2)实时监测模块:监控节目收听相关的关键指标,包括在线收听人数和节目收听次数,首先采用移动平均法对数据处理,然后判断是否超过或低于某阈值,若满足条件,则发送节目推送指令给节目推送模块告知其可以进行节目消息推送;(4.3)节目推送模块:接收来自实时统计和实时监测模块的数据流。当收到节目推送指令后,立即推送节目存入电台业务数据库,客户端将会从数据库中获取推送节目以推送消息的形式发送给用户或者插入用户的个性化节目单中。更进一步的,模块(4.1)实时统计的指标分为两部分:(4.1.1)实时热播节目统计。(4.1.2)在线收听人数统计。再进一步的,指标(4.1.1)中的实时热播节目(当前时段收听率比较高的节目)统计,即实时topn问题。其统计步骤如下:(4.1.1.1)接收电台用户行为日志,并解析所需要统计的字段,主要包括:当前收听的节目id,用户的行为类型;(4.1.1.2)采用滑动窗口技术统计实时热播节目,得到当前收听节目的topn。(4.1.1.3)将统计结果写入mysql数据库并发给实时监测模块和实时推送模块。统计结果字段包括:时间,节目id,收听次数。再进一步的,指标(4.1.2)中的在线收听人数统计,其统计步骤如下:(4.1.2.1)接收电台用户行为日志,并解析所需要统计的字段,主要包括:用户id,用户的行为类型;(4.1.2.2)当用户的行为类型为“播放”时,将其添加到在线用户列表中;当行为类型为“暂停/停止”时,从在线用户列表中移除。基于storm的实时统计可以实现统计频率为1秒;(4.1.2.3)将统计结果写入mysql数据库并发给实时监测模块和实时推送模块。统计结果字段包括:时间,收听人数。更进一步的,模块(4.2)实时监测模块要监测的指标分为如下两种:(4.2.1)节目收听次数监测。(4.2.2)在线收听人数监测。再进一步的,(4.2.1)节目收听次数监测的处理步骤如下:(4.2.1.1)从实时统计模块中获取实时热播节目的topn列表。(4.2.1.2)监测热播节目列表中的收听次数,若top1远超过其他节目,说明该节目内容可能属于时事热点,需要推送,则针对这一节目发送节目推送指令,将该节目打上标注,告知节目推送模块。再进一步的,(4.2.2)在线收听人数监测的处理步骤如下:(4.2.2.1)从实时统计模块中获取实时在线收听人数。(4.2.2.2)采用指数移动平均法计算在线收听人数的变化趋势。(4.2.2.3)监测平均值,当平均值低于阈值时,向节目推送模块发送推送指令,此刻节目的推送用以吸引用户,提高节目收听率。更进一步的,(4.1)节目推送模块的实施步骤如下:(4.1.1)从实时统计模块获取实时热播节目的topn节目列表,进行预处理。预处理包括:对相同的节目id进行去重,保留最新的统计数据。(4.1.2)接收实时监测模块发送的节目推送指令。(4.1.3)判断指令类型,如果是通过在线收听人数监测发出的推送指令,则将预处理后的节目推送列表推送给用户;如果是通过节目收听次数监测发送的推送指令,则直接将推送指令中指定的节目进行推送。以上步骤中涉及阈值的设定都是可以通过现有数据根据经验进行设定,而且不是固定不变可以进行调整的,所以没有必要限定。与现有技术相比,本发明的优点在于:a.采集以新浪微博账号登录的用户的微博内容,爬取并挖掘用户已有的社交账号的内容动态,并结合在用户初次使用本系统时完成必要的注册信息(性别、年龄、职业、节目类型偏好)的方式,在一定程度上解决了冷启动问题,使新用户在初次使用本系统时,即可获得符合个人兴趣的节目单推荐。b.本发明面向传统广播电台,提出在保留电台直播形式的前提下,基于大数据平台的运算优势,通过离线推荐、实时推送等方式,将制作好的节目以更细粒度的形式,按照节目类型或主题将其在每个用户最喜欢收听的时刻进行推荐并播放,创新了一种个性化定制电台的业务模式。附图说明图1本发明所述自动切分标注系统的系统框架图2本发明中多窗谱估计改进谱减法运算流程示意图图3本发明所述个性化节目组织推荐系统的功能模块图图4本发明所述微博数据采集流程示意图图5本发明所述的结合时间上下文和物品协同过滤算法的用户节目单生成示意图图6本发明所述的节目实时推送模块间关系示意图具体实施方式下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清晰、完整的描述。图1是本发明所述自动切分标注系统的系统框架首先是分帧窗函数选择汉明窗,汉明窗的定义如下:本发明采用最小二乘法拟合消除趋势项。本发明采用多窗谱估计的改进谱减法进行降噪。本发明的预加重的滤波器设为h(z)=1-αz-1本发明提取的特征可以包括但不限于表1的特征:表1提取特征本发明采用evolutive-hmm方法进行说话人分割与聚类。本发明采用科大讯飞的语音识别sdk进行语音识别。本发明使用电台真实播出的新闻稿构建广播本体语义网。本发明的训练与分类的具体实现还取决于计算机系统,在多核或集群计算机系统上,上述许多步骤可以并行进行。图2是本发明的多窗谱估计的改进谱减法运算流程示意图。其中,多窗谱的定义如下:上式中,l为数据窗个数;smt为第k个数据窗的谱,定义如下:上式中,x(n)为数据序列;n为序列长度;ak(n)为第k个数据窗,它满足多个数据窗之间相互正交:数据窗是一组相互正交的离散椭球序列。对分帧后的信号进行fft,分别求其幅度谱|xi(k)|和相位谱θi(k),在相邻帧之间做平滑处理,计算平均幅度谱以i帧为中心前后各取m帧,共有2m+1帧进行平均。本发明中取m为1,即在3帧中进行平均。把分帧后的信号xi(m)进行多窗谱估计,得到多窗谱功率谱密度p(k,i):p(k,i)=pmtm[xi(m)]式中,pmtm表示进行多窗谱功率谱密度估计。对多窗谱功率谱密度估计值也进行相邻帧之间的平滑处理,计算平滑功率谱密度py(k,i):以i帧为中心前后各取m帧,共有2m+1帧进行平均。本发明中取m为1,即在3帧中进行平均。已知前导无话段占有nis帧,可以计算出噪声的平均功率谱密度值pn(k):利用谱减关系计算增益因子:上式中,α为过减因子;β为增益补偿因子。通过增益因子g(k,i)和平均幅度谱可求得谱减后的幅度谱:用谱减后的幅度谱结合θi(k)进行ifft,将频域还原到时域,就得到降噪后的语音信号图3为本发明所述个性化节目组织推荐系统的功能模块图,主要包括四层:(1)存储层:分为三部分:mysql数据库属于个性化电台的业务数据库,客户端所需要的信息均来自该数据库;hadoop分布式文件系统用于持久化存储用户的显式和隐式行为数据及离线分析的结果;flume日志收集系统用以将数据写入hdfs,也可以传递给kafka供storm消费;(2)计算层:基于mapreduce和hive实现离线的指标统计,基于storm进行实时流式计算统计;(3)推荐层:对计算后的用户模型应用推荐算法产生个性化节目单,并推送到mysql数据库供客户端调用显示;(4)应用层:提供个性化电台节目单收听、国内电台直播节目收听和实时热播节目推送等功能。另外,系统提供数据采集接口,接入电台的用户信息和登录用户的微博信息,写入存储层。一种基于大数据的互联网个性化电台节目推荐方法,该系统的节目推荐方法分为四大类:(1)提出一种解决冷启动的新用户节目推荐方法为解决新用户的冷启动问题,需要建立如下两种用户模型:“博文内容-兴趣主题-节目”模型和基于注册信息的用户初始画像模型。其中前者可以获得用户对于兴趣主题的偏好,后者可以获得用户对于节目类型的偏好,并且可以根据用户的其他注册信息得到相同属性的用户的节目收听情况(如某节目的播放次数),基于此进行新用户节目单生成。其中,“博文内容-兴趣主题-节目”模型的构建分两大步:博文内容采集和兴趣主题生成。图4为个性化电台用户采用新浪微博账号登录后,系统对微博内容的爬取步骤,如下:1.1用户选择社交账号登录方式,输入新浪微博账号密码进行认证并授权登录;1.2调用新浪微博的用户接口api获取该用户的微博uid,该uid对于微博用户唯一;1.3利用微博用户的uid从http://www.weibo.cn网站上爬取该用户的微博博文内容,经预处理后,保存在以uid命名的文件中;预处理内容包括:去除微博内容中的http链接、@某人、表情这三种内容,因为这些对于主题分析没有正面作用。基于上述三步爬取的微博内容,分条调用腾讯文智的文本分类api,获取内容的主题分类。对所有微博内容的兴趣主题进行过滤后汇总,以[主题:次数]的形式标识该用户该兴趣主题的偏好值。对微博内容兴趣主题的过滤操作目的在于:有些微博博文内容所表达出来的含义很不明确,通过文本分类算法极有可能无法得到主题类型(此时该文本类型范围:未分类100%),或者得到的主题类型占比很少(如:[未分类:95%,健康:5%]),对于这种情况的主题类型应该过滤掉。即当某主题的占比超过一定的阈值时,如20%,该主题才会被统计到主题列表中,否则不予统计。(2)提出一种结合时间上下文的个性化节目单推荐生成方法该节目单生成方法的实现包括如下步骤:2.1电台用户显式和隐式行为数据的采集;显式行为:用户对节目的操作信息,包括收藏、评分(1颗星到5颗星)、分享;隐式行为:收听时长(用户id,节目id,收听开始时间,收听结束时间),收听次数(用户id,节目id,收听次数)。2.2“用户-时间上下文-节目偏好”模型的构建;采集用户收听的隐式行为,收集指标主要是某用户u对某节目p的收听时长。对于某用户u对于某节目p的某次收听行为表示为:{(u,p,start_time,end_time,id,no.),num=1,2,......}(1)用户节目收听记录用id来标识这些记录属于某节目p的一次收听(如暂停、播放、暂停)还是多次播放,id从1开始递增。例如,id为1,表示用户u对节目p的第1次收听;id为2,表示第2次收听;max(id)作为id的最大值,表示用户u对节目p的收听总次数。no.表示id次收听的第几段收听记录,从1递增。根据表达式(1)来进行统计,得出用户u对于节目p的单次收听的收听时长占比表示如下:n为no.的最大值(2)其中duration是节目p的总时长;综合表达式(1)和(2),将用户u在时间上下文(某时段t)对于节目p的偏好表示为:节目的特征包括类型(如交通、新闻等)和主题(如科技、历史等)。用户对于单个节目的偏好程度即表达式(3)计算出来后,依据该节目所属的类型或主题,便可以得到用户在某时段对于某节目类型或者主题的偏好程度,即完成“用户-时间上下文-节目偏好”模型的构建。统计后的模型存储在mysql数据库的表中,字段如下:表2用户-时间上下文-节目偏好表2.3“用户-节目-评分矩阵”模型的构建;用户u对某节目p的评分需要综合三种显式行为(评分、收藏、分享)以及的隐式行为(用户收听节目的时长),将行为通过数值量化,并采取合适的加权方案,来确定用户对节目的最终评分。其中,评分标准形式化定义如表2。需要说明的是,分享行为的评分范围为[0,1,2],虽然单个用户可以对节目分享1到多次,但为了量化标准,将分享1次,记1;分享2次或2次以上,均记为2。表3评分标准定义根据表2中用户行为的形式化表示,将用户u对某节目p的评分定义如下:其中,maxshare表示分享行为的最大值,即为2。表示所有收听第i个节目的用户中偏好值最大的值。另外,将用户对节目的隐式收听偏好和星级评分作为一个部分来计算,因为用户只有对播放收听过的节目才可以进行星级评分,该评分起到对公式(3)的修正作用,如表4所示。如果某用户u收听了节目p进行播放,但是并没有进行星级评分,则默认该节目的星级评分为3星,即值等于1,对公式(3)没有修正作用。如果星级评分为5星,则修正因子等于2,收听偏好占比将双倍放大;而如果星级为1星,修正因子等于0,在该情况下,若用户对该节目并没有其他的显式行为,即按照公式(4)计算出用户对节目的总评分为0,需要对总评分再加上0.1进行修正,用来和未评价或收听的节目进行区分。表4星级评分对应的修正因子说明星级评分1星2星3星4星5星修正因子00.511.522.4结合时间上下文的基于物品的协同过滤推荐算法生成个性化节目单;该算法的实现步骤如图5所示。具体描述如下:获取2.2步已经构建的“用户-时间上下文-节目偏好”模型,得到某用户u在某时段p内偏好的节目类型和主题列表。选取节目类型和主题列表中偏好值最大的topk节目类型和主题,k可根据推荐效果调整设置,如将k设为3。利用mahout提供的基于物品的协同过滤算法itemcf,利用itemsimilarity模块计算节目之间的相似度,并生成对未收听过的节目的预测评分。其中相似性度量方法采用pearson相关系数,表示如下:根据用户对节目的预测评分,按照评分值降序,取topk1个节目,k1值需要测试调整,一般情况下可取k1值为200。将得到的用户在某时段下最喜欢的节目类型和主题,与节目预测评分最高的节目所属的类型和主题相匹配,得到符合的节目,即可安排在对应的时间段进行播出。(3)实时节目切换功能对正在收听的节目提供“换一换”机制,根据用户兴趣进行实时节目切换,步骤如下:3.1用户对于个性化节目单中正在直播的节目点击“换一换”按钮。3.2根据2.2已完成的“用户-时间上下文-节目偏好”模型,获取用户在该时段偏好的节目类型和主题,从数据库中随机选取节目音频显示在节目单并播放。(4)节目实时推送功能利用storm技术实现基于在线节目收听量等进行实时节目推送提醒,该功能包括三个模块:实时统计、实时监测和节目推送,各模块间的关系如图6所示,具体描述如下:4.1实时统计模块:包括实时热播节目统计和在线收听人数统计。实时热播节目(当前时段收听率比较高的节目)统计,即实时topn问题。其统计步骤如下:接收电台用户行为日志,并解析所需要统计的字段,主要包括:当前收听的节目id,用户的行为类型。其中用户行为日志由日志收集系统收集,收集的用户行为数据结构如表5所示。表5用户行为日志结构采用滑动窗口技术统计热播节目,得到当前收听节目的topn。滑动窗口技术简要描述为:在数据流上维持一个窗口,只关心这个窗口内的数据,当新项到来时,窗口向前滑动。将统计结果写入mysql数据库并发给实时监测模块和实时推送模块。统计结果字段包括:时间,节目id,收听次数。在线收听人数统计,其统计步骤如下:接收电台用户行为日志,并解析所需要统计的字段,主要包括:用户id,用户的行为类型;当用户的行为类型为“播放”时,将其添加到在线用户列表中;当行为类型为“暂停/停止”时,从在线用户列表中移除。基于storm的实时统计可以实现统计频率为1秒;将统计结果写入mysql数据库并发给实时监测模块和实时推送模块。统计结果字段包括:时间,收听人数。4.2实时监测模块:监测指标包括节目收听次数和在线收听人数。节目收听次数监测的处理步骤如下:从实时统计模块中获取实时热播节目的topn列表。监测热播节目列表中的收听次数,若top1远超过其他节目,说明该节目内容可能属于时事热点,需要推送,则针对这一节目发送节目推送指令,将该节目打上标注,告知节目推送模块。在线收听人数监测的处理步骤如下:从实时统计模块中获取实时在线收听人数。采用指数移动平均法计算在线收听人数的变化趋势。监测平均值,当平均值低于阈值时,向节目推送模块发送推送指令,例如当低于当前注册用户的5%时说明此时收听率相对较低,此刻节目的推送用以吸引用户,提高节目收听率。4.3节目推送模块,实施步骤如下:从实时统计模块获取实时热播节目的topn节目列表,进行预处理。预处理包括:对相同的节目id进行去重,保留最新的统计数据。接收实时监测模块发送的节目推送指令。判断指令类型,如果是通过在线收听人数监测发出的推送指令,则将预处理后的节目推送列表推送给用户;如果是通过节目收听次数监测发送的推送指令,则直接将推送指令中指定的节目进行推送。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1