一种海量数字信息的分布式推荐方法
技术领域
本发明涉及海量信息处理技术领域,具体涉及一种海量数字信息的分布式推荐方法。
背景技术
21世纪的科技与信息技术高速发展,尤其随着互联网技术的发展与普及,网络信息资源迅速增长,如今已经进入了一个数字信息爆炸的时代。所谓数字信息是指在互联网中发布的文章、图片,声音、影像等资讯内容。随着 Web 2.0 取代Web 1.0,Web 2.0已经成为数字信息分享的平台。由于Web 2.0 更注重用户的交互作用,用户既是网站内容的浏览者,也是网站内容的制造者,因而,数字信息剧增。在海量的数字信息中,人们要找到确切需要的信息将变得越来越难。
获取数字信息最普遍的方式有三种:第一种是常规的网页信息链接,例如门户网站的热门帖子推荐、新闻链接等;第二种是用户通过搜索引擎搜索想要的信息,常用的搜索引擎一般包括Google、Bing、百度等;第三种是通过朋友的介绍,发链接或信息关键词的方式向用户推荐信息。上述三种方式中,搜索引擎是快速找到目标信息的最好途径。在用户对自己需求的信息相对明确的时候,用搜索引擎可以很方便地通过关键字搜索找到自己需要的信息。但搜索引擎并不能完全满足用户对信息发现的需求,因为在很多情况下,用户其实并不明确自己的需要,或者他们的需求很难用简单的关键字来表述,又或者他们需要更加符合他们个人口味和喜好的信息。因此,推荐系统便应运而生。与搜索引擎对应,人们也习惯称之为推荐引擎。现有的推荐引擎有一些相关的算法,但现有推荐引擎向用户推荐数字信息的准确度不高,而且在用户历史数据量较大的情况下反应速度较慢。
发明内容
本发明的目的在于针对现有技术的不足,提供一种海量数字信息的分布式推荐方法,本发明所提供的分布式推荐方法向用户推荐数字信息的准确度较高,而且在用户历史数据量较大的情况下反应速度较快。
为了实现上述目的,本发明采用如下技术方案:
一种海量数字信息的分布式推荐方法,所述分布式推荐方法包括以下步骤:
第一步,建立对等的分布式局域网络,网络中每台计算机可直接相互通讯,网络中计算机的数量至少为10台;
第二步,收集当前用户行为的数字信息,存入面向文档的分布式数据库mongodb中;所述将当前用户行为的数字信息存入mongodb中的格式为:<当前用户标示,数字信息标示,当前用户对数字信息的打分值>,其中,所述打分值统一默认为数字1;
其中,当前用户行为的数字信息可以是各种行业的有效数据,包括用户看过的新闻网站的新闻和用户购买过的商品的信息;
第三步,将第二步中收集的数字信息进行预处理,所述预处理为将垃圾信息进行过滤;
第四步,统计与当前用户有关系的数字信息的集合:通过Hadoop的Map和Reduce两个阶段并行统计与当前用户有关系的数字信息的集合;其中,将数据库mongodb中的当前用户行为的数字信息作为Map阶段的输入数据源;Map 阶段完成后开始 Reduce阶段的并行运算, Reduce阶段的输入数据源为Map阶段的输出结果,将与当前用户有关系的数字信息集合进行汇总;
所述第四步中Map阶段输出结果的格式为:<用户标示,(数字信息,1)>;所述第四步中数字信息集合汇总的格式为:<用户标示,有关系的数字信息集合向量>;其中,所述< 用户标示,(数字信息,1)>中的数字1代表当前用户与数字信息有关系;
第五步,构建数字信息之间的相似度关系矩阵:运行并行的Map阶段运算,将第四步中Reduce阶段的输出结果作为本步骤中Map阶段运算的输入数据源,进而构建数字信息之间的相似度矩阵;
其中,所述第五步中Map阶段运算的规则为:若当前用户有关系的数字信息集合中同时包含第一数字信息和第二数字信息,则第一数字信息和第二数字信息发生一次关系,结果格式为<(第一数字信息,第二数字信息),1>;
第六步,统计数字信息之间相似度的总数矩阵:运行并行的Reduce阶段运算,将第五步中Map阶段的输出结果作为本步骤中Reduce阶段运算的输入数据源,进而统计数字信息之间相似度的总数矩阵;
所述第六步中Reduce阶段运算的规则为:若第一数字信息和第二数字信息发生一次关系就在关系总数上累加1;结果格式为:<第一数字信息,(第二数字信息,第一数字信息和第二数字信息的关系总数)>;
第七步,统计向当前用户候选推荐的数字信息的评分值的Map阶段运算:运行并行的Map阶段运算,将第四步中Reduce阶段的输出结果作为本步骤中Map阶段运算的输入数据源,进而统计向当前用户候选推荐的数字信息的评分值;
所述第七步中Map阶段运算的规则为:循环每一个用户的有关系的数字信息集合向量,然后建立结果集合,其格式为:<数字信息标示,(用户标识,1)>;
第八步,统计向当前用户候选推荐的数字信息的评分值的Reduce阶段运算:第七步中Map阶段运算完成后,开始Reduce阶段的并行运算,将第六步的运算结果和第七步中Map阶段运算的输出结果作为本步骤中Reduce阶段运算的输入数据源;
所述第八步中Reduce阶段运算的过程为:循环数字信息之间相似度总数矩阵的每一行,然后结合第七步中Map阶段运算结果,在数字信息之间相似度总数矩阵中加入当前用户对每个数字信息的打分值,最后统计当前用户对每个数字信息的总评分值,结果格式为:<用户标示,(数字信息标示,总评分值)>;
其中,所述总评分值的算法包括以下步骤:
a、根据第六步中所得的数字信息之间相似度的总数矩阵,设置用户数字信息打分值列和总评分值列,从而形成最终运算结果矩阵;
b、将总评分值列均赋值为零;用户数字信息打分值的值默认为1,若用户与该项数字信息没有发生关系则为0;
c、循环第六步中所得的数字信息之间相似度的总数矩阵中数字信息相似度值的每一列中每一行的值;
d、步骤c中第k列中第n行值分别与用户数字信息打分值列中第k行的值做乘法,每次相乘的结果累加到总评分值列中第n行的值;其中,第k列指最终运算结果矩阵中除打分值列和总评分值列外的任何一列,第n行指最终运算结果矩阵中的任何一行;
e、步骤d中若第k行用户数字信息打分值列的值为零则跳过第k列数字信息的计算;
f、全部循环计算完成后,总评分值列的值即为向当前用户推荐对应行为的数字信息的总评分值;
第九步,为当前用户推荐数字信息的Map阶段运算:运行并行的Map阶段运算,将第八步中Reduce阶段的输出结果作为本步骤中Map阶段运算的输入数据源,运算规则为直接输出第八步中Reduce阶段的输出结果;
第十步,为当前用户推荐数字信息的Reduce阶段运算:第九步中Map阶段运算完成后开始Reduce阶段的并行运算,将第九步中Map阶段运算的结果作为本步骤中Reduce阶段运算的输入数据源,运算规则为:排序比较与用户没有发生过关系的数字信息的总评分值,按总评分值的高低依次选择前N 项数字信息作为最终的推荐结果;结果格式为:<用户标示,推荐的数字信息项集合>;其中,所述N为设定的正整数;
第十一步,根据向当前用户推荐的数字信息项集合,进入mongodb数字信息库中获取作为推荐结果的数字信息的详细内容,最后将所获取的数字信息的详细内容返回给当前用户。
以上步骤中,所述Map阶段指Hadoop中MapReduce模式中分割数据,然后多台分布式网络中的计算机并行执行Map(映射)函数阶段, 把键值对(key/value)映射成新的键值对(key/value),形成一系列中间结果形式的(key/value)对,然后把(key/value)对传给Reduce阶段作为输入数据源。
以上步骤中,所述Reduce阶段指Hadoop中MapReduce模式中合并数据,然后多台分布式网络中的计算机并行执行Reduce(规约)函数阶段, 把具有相同中间形式key 和value 合并在一起,然后执行某种运算。
本发明与现有技术相比较,有益效果在于:
1)在改进了现有的协同过滤推荐算法的基础上加入Hadoop多台计算机并行运算,在海量数字信息的情况下向用户推荐数字信息的速度更快,准确度更高;
2)本发明的分布式推荐方法适用于各种数字信息;
3)由于数据存储采用了面向文档的分布式数据库mongodb,为海量数字信息的快速、可伸缩存储提供了保障。
具体实施方式
下面结合实施例对本发明作进一步的说明。
本实施例中,通过分布式并行分析用户浏览、收藏、分享过的海量新闻类数字信息,为用户快速、准确地推荐当前用户可能喜欢的新闻,具体实施步骤包括以下步骤。新闻信息是数字信息中的一种,以下使用新闻信息进行举例说明。
第一步,通过TCP/IP协议建设对等的分布式局域网络,网络中每台计算机可直接相互通讯,网络中计算机的数量为10台;在建立好网络中部署Hadoop集群。
第二步,在面向文档的分布式数据库mongodb中建立存储用户浏览、收藏、分享过的历史新闻的数据库;当用户浏览、收藏,分享过新闻后把该条历史记录保存到历史新闻的数据库中;所述将历史新闻信息存入mongodb中的格式为:<当前用户标示,新闻信息标示,1>,其中,1为当前用户默认为该新闻的打分值。
第三步,将第二步中收集的新闻信息进行预处理,所述预处理为将垃圾信息进行过滤。
第四步,统计与当前用户有关系的数字信息的集合:通过Hadoop的Map和Reduce两个阶段并行统计与当前用户有关系的新闻信息的集合;其中,将数据库mongodb中的当前用户的新闻信息作为Map阶段的输入数据源;Map 阶段完成后开始 Reduce阶段的并行运算,输入数据源为Map阶段的输出结果,将与当前用户有关系的新闻信息集合进行汇总;
第四步中Map阶段输出结果的格式为:< 用户标示,(新闻信息,1)>;第四步中新闻信息集合汇总的格式为:<用户标示,有关系的新闻信息集合向量>;其中,所述<用户标示,(新闻信息,1)>中的数字1代表当前用户与新闻信息有关系。
第五步,构建数字信息之间的相似度关系矩阵:运行并行的Map阶段运算,将第四步中Reduce阶段的输出结果作为本步骤中Map阶段运算的输入数据源,进而构建新闻信息之间的相似度矩阵;
其中,所述第五步中Map阶段运算的规则为:若当前用户有关系的新闻信息集合中同时包含第一新闻信息和第二新闻信息,则第一新闻信息和第二新闻信息发生一次关系,结果格式为<(第一新闻信息,第二新闻信息),1>。
其中,用矩阵表示新闻信息的关系,本实施例中,假设只有三个新闻信息,关系矩阵如表1所示。
表1 新闻信息的关系矩阵
|
D1 |
D2 |
D3 |
D1 |
1 |
1 |
1 |
D2 |
1 |
1 |
1 |
D3 |
1 |
1 |
1 |
其中,表1中D1指第一新闻信息,D2指第二新闻信息,D3指第三新闻信息。
第六步,统计数字信息之间相似度的总数矩阵:运行并行的Reduce阶段运算,将第五步中Map阶段的输出结果作为本步骤中Reduce阶段运算的输入数据源,统计新闻信息之间相似度的总数矩阵;
第六步中Reduce阶段运算的规则为:若第一新闻信息和第二新闻信息发生一次关系就在关系总数上累加1;结果格式为:<第一新闻信息,(第二新闻信息,第一新闻信息和第二新闻信息的关系总数)>。
其中,用矩阵表示新闻信息的关系总数,本实施例中,假设只有三个新闻信息,关系总数矩阵如表2所示。
表2新闻信息的关系总数矩阵
|
D1 |
D2 |
D3 |
D1 |
1 |
2 |
3 |
D2 |
2 |
1 |
6 |
D3 |
3 |
6 |
1 |
其中,表2中D1指第一新闻信息,D2指第二新闻信息,D3指第三新闻信息。
第七步,统计向当前用户候选推荐的数字信息的评分值的Map阶段运算:运行并行的Map阶段运算,将第四步中Reduce阶段的输出结果作为本步骤中Map阶段运算的输入数据源,统计向当前用户候选推荐的新闻信息的评分值;
所述第七步中Map阶段运算的规则为:循环每一个用户的有关系的新闻信息集合向量,然后建立结果集合,其格式为:<新闻信息标示,(用户标识,1)>。
第八步,统计向当前用户候选推荐的数字信息的评分值的Reduce阶段运算:第七步中Map阶段运算完成后,开始Reduce阶段的并行运算,将第六步的运算结果和第七步中Map阶段运算的输出结果作为本步骤中Reduce阶段运算的输入数据源;
第八步中Reduce阶段运算的过程为:循环新闻信息之间相似度总数矩阵的每一行,然后结合第七步中Map阶段运算结果,在新闻信息之间相似度总数矩阵中加入当前用户对每个新闻信息的打分值,最后统计当前用户对每个新闻信息的总评分值,结果格式为:<用户标示,(新闻信息标示,总评分值)>;
其中,用矩阵表示此步骤中的最终运算结果,本实施例中,假设只有三个新闻信息,最终运算结果矩阵如表3所示。
表3 最终运算结果矩阵
|
D1 |
D2 |
D3 |
U |
R |
D1 |
1 |
2 |
3 |
1 |
4 |
D2 |
2 |
1 |
6 |
0 |
8 |
D3 |
3 |
6 |
1 |
1 |
4 |
其中,表3中D1指第一新闻信息,D2指第二新闻信息,D3指第三新闻信息;
U指用户对该项新闻信息的打分值,其中,U的值默认为1,若与该项新闻信息没有发生关系则为0;
R指向当前用户推荐对应行为的新闻信息的总评分值。
其中,所述总评分值的算法包括以下步骤:
a、将最终运算结果矩阵中每行R的值赋值为零;
b、循环最终运算结果矩阵中新闻信息相似度值的每一列中每一行的值;
c、步骤b中第k列中第n行值分别与用户新闻信息打分值U列中第k行的值做乘法,每次相乘的结果累加到R列中第n行的值;其中,本实施例中,第k列指D1列、D2列和D3列中的任何一列,第n行指D1行、D2行和D3行中的任何一行;
d、步骤c中若第k行用户新闻信息打分值列的值为零则跳过第k列数字信息的计算;
f、全部循环计算完成后,R列的值即为向当前用户推荐对应行为的新闻信息的总评分值。
第九步,为当前用户推荐数字信息的Map阶段运算:运行并行的Map阶段运算,将第八步中Reduce阶段的输出结果作为本步骤中Map阶段运算的输入数据源,运算规则为直接输出第八步中Reduce阶段的输出结果。
第十步,为当前用户推荐数字信息的Reduce阶段运算:第九步中Map阶段运算完成后开始Reduce阶段的并行运算,将第九步中Map阶段运算的结果作为本步骤中Reduce阶段运算的输入数据源,运算规则为:排序比较与用户没有发生过关系的新闻信息的总评分值,按总评分值的高低依次选择前20 项新闻信息作为最终的推荐结果;结果格式为:<用户标示,推荐的新闻信息项集合>。
第十一步,根据向当前用户推荐的新闻信息项集合,进入mongodb新闻信息库中获取新闻信息的详细内容,最后将所获取的新闻信息的详细内容返回给当前用户。
本发明应用于海量信息处理技术领域,上述的十一步中,采用了符合自然规律的技术手段,解决了向用户推荐数字信息的技术问题;获得了向用户推荐数字信息的准确度较高,在用户历史数据量较大的情况下反应速度较快的技术效果。
最后应当说明的是,以上实施例仅用以说明本发明的技术方案,而非对本发明保护范围的限制,尽管参照较佳实施例对本发明作了详细地说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的实质和范围。