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

标签: 新闻推荐 python
12615人阅读 评论(20) 收藏 举报
分类:

1.背景


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

2.数据集




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

3.代码部分


先来看下演示图  


     (1)算法说明

    
     举个例子简单说明下算法,其实也比较简单,不妥的地方希望大家指正。我们有如下一条数据
5738936	100649879	1394550848	MH370航班假护照乘客身份查明(更新)	11

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

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

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


 (2)使用方法

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


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

Global_param中设置参数说明:
      number_jieba:控制提取关键词的数量
      number_day:从第一天开始,要预测的天数
      hot_rate:预测集预测的新闻热度,数值越大热度越高

(3)代码流程


     首先我们从main()看起。
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文件每执行一次程序要手动清空,其它文件都是自动生成不用处理。
项目地址:https://github.com/X-Brain/News-Recommend-System(src文件夹下是代码,test下是数据、和文档结构)

希望大家有什么建议,可以在博客留言,或者在github上发issue,希望有更多的人参与贡献。

/********************************

* 本文来自博客  “李博Garvin“

* 转载请标明出处:http://blog.csdn.net/buptgshengod

******************************************/




查看评论

VCL中消息处理初探

TObject是基类,所以我们先看一下TObject的DISPATCH方法。Dispatch根据传入的message来寻找相应的消息处理方法,如果找不到的话,就继续向上到父类的消息处理方法表中寻找响应...
  • nisky
  • nisky
  • 2001-09-16 18:49:00
  • 1126

《推荐系统》基于标签的用户推荐系统

1:联系用户兴趣和物品的方式 2:标签系统的典型代表 3:用户如何打标签 4:基于标签的推荐系统 5:算法的改进 源代码查看地址:github查看 一:联系用户兴趣和物品的方式     ...
  • Gamer_gyt
  • Gamer_gyt
  • 2016-06-16 11:17:30
  • 23239

谈谈国内几款个性化推荐系统插件

首先了解,什么是个性化推荐?个性化阅读?       个性化推荐是根据用户的兴趣特点和需求行为,向用户推荐用户感兴趣的信息和商品。随着电子商务规模的不断扩大,商品个数和种类快速增长,顾客需要花费大量...
  • lzm18064126848
  • lzm18064126848
  • 2016-11-17 20:07:54
  • 2147

如何搭建一套个性化推荐系统?

关于Apsara Clouder大数据专项技能认证系统 Apsara Clouder大数据专项技能认证:搭建个性化推荐系统 本认证系统的讲解了推荐系统的概念、应用、算法原理,并详细介绍了阿...
  • lsj960922
  • lsj960922
  • 2018-02-01 16:17:48
  • 391

个性化推荐系统

  • 2015年10月06日 12:18
  • 1.62MB
  • 下载

4个方面,系统总结个性化推荐系统

作者:Placeless 全文共 7393 字 13 图,阅读需要 16 分钟 ———— / BEGIN / ———— 现在的人们面对信息过载问题日益严重,好的个性化推荐将能够很...
  • k7Jz78GeJJ
  • k7Jz78GeJJ
  • 2017-12-10 00:00:00
  • 1145

推荐系统源码

  • 2015年07月01日 15:12
  • 27.98MB
  • 下载

推荐系统--开源代码

最近这两年推荐系统特别火,本文搜集整理了一些比较好的开源推荐系统,即有轻量级的适用于做研究的SVDFeature、LibMF、LibFM等,也有重量级的适用于工业系统的 Mahout、Oryx、Eas...
  • yimingsilence
  • yimingsilence
  • 2017-02-17 18:29:14
  • 1949

实现音乐推荐系统(源代码)

  • 2018年03月01日 17:12
  • 195KB
  • 下载

不到100行代码实现一个简单的推荐系统

一个好的推荐系统推荐的精度必然很高,能够真的发现用户的潜在需求或喜好,提高购物网詀的销量,让视频网站发现用户喜欢的收费电影… 可是要实现一个高精度的推荐系统不是那么容易的,netflix曾经悬赏高额奖...
  • zkl99999
  • zkl99999
  • 2015-06-12 21:32:07
  • 1246
    统计

    主要讲述算法和业务的结合,适合初学者

    机器学习实践应用

    京东地址

    作者公众号:凡人机器学习

    凡人机器学习

    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 89万+
    积分: 1万+
    排名: 1621
    博客专栏