新闻个性化推荐系统(python)-(附源码 数据集)

最近参加了一个评测,是关于新闻个性化推荐。说白了就是给你一个人的浏览记录,预测他下一次的浏览记录。花了一周时间写了一个集成系统,可以一键推荐新闻,但是准确率比较不理想,所以发到这里希望大家加以改进。用到的分词部分的代码借用的jieba分词。数据集和代码在下面会给出。

数据集

一共五个字段,以tab隔开。分别是user编号,news编号,时间编号,新闻标题,对应当前月份的日(3就是3号)。

代码部分

先来看下演示图

(1)算法说明

举个例子简单说明下算法,其实也比较简单,不妥的地方希望大家指正。我们有如下一条数据

[plain] view plaincopy

  1. 5738936 100649879 1394550848 MH370航班假护照乘客身份查明(更新) 11

5738936这名用户在11号看了“MH370航班假护照乘客...”这条新闻。我们通过jieba找出11号的热点词如下。

[plain] view plaincopy

  1. 失联 311 三周年 马方 偷渡客 隐形 护照 吉隆坡 航班 护照者

我们发现“航班”、“护照”这两个keywords出现在新闻里。于是我们就推荐5738936这名用户,11号出现“航班”、“护照”的其它新闻。同时我们对推荐集做了处理,比如说5738936浏览过的新闻不会出现,热度非常低的新闻不会出现等。

(2)使用方法

整个系统采用一键式启动,使用起来非常方便。首先建立一个test文件夹,然后在test里新建三个文件夹,注意命名要和图中的统一,因为新闻是有时效的,每一天要去分开来计算,要存储每一天的内容做成文档。test文档如下图,就可以自动生成。(代码文件夹提供了完整的test文档结构)

使用的时候,要先在Global_param.py中设置好test文件夹的路径参数。一切设置完毕,只要找到wordSplite_test包下面的main()函数,运行程序即可。

Global_param中设置参数说明:

number_jieba:控制提取关键词的数量

number_day:从第一天开始,要预测的天数

hot_rate:预测集预测的新闻热度,数值越大热度越高

(3)代码流程

首先我们从main()看起。

[python] view plaincopy

import Get_day_data  
import Get_keywords  
import Get_keynews  
import Delete_Repeat  
import Get_hot_result  
import Global_param  
def main():  
 for i in range(1,Global_param.number_day):  
        Get_day_data.TransforData(i)  
        Get_day_data.TransforDataset(i)  
        Get_keywords.Get_keywords(i)  
        Get_keynews.Get_keynews(i)  
    Delete_Repeat.Delete_Repeat()  
    Get_hot_result.get_hot_result(Global_param.hot_rate)  
main()      

1.首先Get_day_data.TransforData(i)函数,找到最后一次浏览的是第i天的新闻的用户行为,存放在test/train_lastday_set目录下。

2.Get_day_data.TransforDataset(i)函数,区分每一天的新闻,存放在test/train_date_set1目录下

3.Get_keywords.Get_keywords(i)函数,调用jieba库,挑出每一天最火的keywords,存放在test/key_words下

4.Get_keynews.Get_keynews(i)函数,通过每一个用户最后一次浏览的新闻,比对看有没有出现当天的热门keywords。如果出现,就推荐当天包含这个keywords的其它新闻。循环Global_param.number_day天,生成test/result.txt文件

5. Delete_Repeat.Delete_Repeat()函数,去除result中的重复项,生成test/result_no_repeat.txt

6.Get_hot_result.get_hot_result(Global_param.hot_rate)函数,因为上面生成的result_no_repeat函数可能出现,每个用户推荐过多的情况,影响准确率。所以用这个函数控制数量,每个用户只推荐新闻热度相对高的候选项。最终结果集

test/result_no_repeat_hot.txt

注意:test下的result.txt文件每执行一次程序要手动清空,其它文件都是自动生成不用处理。

(本文发布于http://blog.csdn.net/buptgshengod)

原文发布于微信公众号 - 大数据挖掘DT数据分析(datadw)

原文发表时间:2015-06-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据小魔方

条件格式小技巧——图表集!

今天跟大家分享条件格式的另一个贴心小技巧——图表集! ▽▼▽ 也许大家用的不多,不过这个小技巧之所以要跟大家分享,是因为它采用的迷你小图标的形式,非常细致的刻画...

3095
来自专栏企鹅号快讯

如何用Python读取开放数据?

当你开始接触丰富多彩的开放数据集时,CSV、JSON和XML等格式名词就会奔涌而来。如何用Python高效地读取它们,为后续的整理和分析做准备呢?本文为你一步步...

4468
来自专栏追不上乌龟的兔子

[BDD in Python]使用behave框架在Python中实践行为驱动开发

诞生于上世纪末的测试驱动开发(TDD)已经算是很深入人心了,一定程度上来说它通过既有的约定(测试)减少了开发人员间的沟通成本。但这些测试也只是开发人员自己对需求...

1353
来自专栏无原型不设计

Mockplus是如何节省你的原型时间的?

还在用老牌原型工具一点点绘制产品原型吗?还在为实现一个满意的交互而绞尽脑汁吗?还在为无法和用户高效沟通而发愁吗?朋友,现在是快速原型的时代了。时间不等人,当你...

2463
来自专栏IT派

50行代码教你打造一个公众号文章采集器

Alfred的女票是一枚数据科学领域的新媒体运营官(是的,Alfred是一名程序员,Alfred有女票

321
来自专栏王鹤的专栏

vuejs + ts + webpack 2 框架的项目实践

没有什么框架是全能的,都有其适用场景。我们的最初的定位一定要围绕我们的业务来选择。我们个性化业务是基于移动端的多页面应用。我们综合考虑之后,决定使用vuejs+...

4231
来自专栏人人都是极客

4.训练模型之准备训练数据

终于要开始训练识别熊猫的模型了, 第一步是准备好训练数据,这里有三件事情要做: 收集一定数量的熊猫图片。 将图片中的熊猫用矩形框标注出来。 将原始图片和标注文件...

3678
来自专栏用户2442861的专栏

关于Python杂七杂八的小东西(搭建Pycharm+Anaconda、删除文档首行小程序、皮尔逊相关系数小程序)

  好久没有回来更新博客了,良心难安啊!最近要做脑电信号的分析,由于导出的数据都是文本格式的,就下定决心放弃Matlab,用Python做分析,确实是挺好用的...

481
来自专栏玉树芝兰

如何用Python读取开放数据?

当你开始接触丰富多彩的开放数据集时,CSV、JSON和XML等格式名词就会奔涌而来。如何用Python高效地读取它们,为后续的整理和分析做准备呢?本文为你一步步...

572
来自专栏大数据挖掘DT机器学习

用Python统计新浪微博各种表情使用频率

用新浪微博API积累了微博广场的1.4万条数据,我选择了21个字段输出为TXT文件,想用Python稍微处理一下,统计一下这1.4万条微博里面表情使用情况,统计...

2314

扫描关注云+社区