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

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

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

时间: 2024-08-03 23:28:49

新闻个性化推荐系统(python)-(附源码 数据集)的相关文章

Flash+XML滚动新闻代码 无图片 附源码下载_广告代码

用flash实现读取新闻连接的代码,方便一个50高度的地方显示外部连接,不错的黑色效果index.html 复制代码 代码如下: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <meta name="Copyright" content=" http://www.jb51.

(转)干货|这篇TensorFlow实例教程文章告诉你GANs为何引爆机器学习?(附源码)

干货|这篇TensorFlow实例教程文章告诉你GANs为何引爆机器学习?(附源码)   该博客来源自:https://mp.weixin.qq.com/s?__biz=MzA4NzE1NzYyMw==&mid=2247492203&idx=5&sn=3020c3a43bd4dd678782d8aa24996745&chksm=903f1c73a74895652ee688d070fd807771e3fe6a8947f77f3a15a44a65557da0313ac5ad59

javaweb异常提示信息统一处理(使用springmvc,附源码)

版权声明:本文为博主原创文章,转载注明出处http://blog.csdn.net/u013142781 目录(?)[+] 一.前言 后台出现异常如何友好而又高效地回显到前端呢?直接将一堆的错误信息抛给用户界面,显然不合适. 先不考虑代码实现,我们希望是这样的: (1)如果是页面跳转的请求,出现异常了,我们希望跳转到一个异常显示页面,如下: 当然,这里的界面不够美观,但是理论是这样的. (2)如果是ajax请求,那么我们,希望后台将合理的错误显示返回到ajax的回调函数里面,如下: $.ajax

从Python的源码来解析Python下的freeblock

  这篇文章主要介绍了从Python的源码来解析Python下的freeblock,包括内存空间分配等知识,需要的朋友可以参考下 1 引言 在python内存管理中,有一个block的概念.它比较类似于SGI次级空间配置器. 首先申请一块大的空间(4KB),然后把它切割成一小份(8, 16 一直到512). 当有内存申请的请求时候,简单的流程是:根据大小找到对应的block,然后在freeblock 上给它一份. 2 问题 整个过程是一种比较自然的slab分配方式.但当我读到这段代码时,却感到疑

ASP.NET程序读取二代身份证(附源码)

原文:ASP.NET程序读取二代身份证(附源码)  一般来说winform应用程序解决这个问题起来时很容易的,web应用程序就麻烦一点了. 这里我说说我的解决思路: 一.你必要有联机型居民身份证阅读器一个(带驱动光盘),这里我用的是精伦电子公司的iDR200,并有这个阅读器的开发接口说明. 二.新建一个winform控件项目ReadCardControl,添加一个主类ReadCard 1.  声明dll入口         [DllImport("Sdtapi.dll")]      

2款不同样式的CSS3 Loading加载动画 附源码

原文:2款不同样式的CSS3 Loading加载动画 附源码 我们经常看到的Loading加载很多都是转圈圈的那种,今天我们来换一种有创意的CSS3 Loading加载动画,一种是声波形状的动画,另一种是折线弯曲的动画,它们实现起来也非常简单,先来看看效果图: 看起来还挺特别的吧.. 另外你也可以在这里看到这个Loading动画的DEMO演示 接下来我们来看看如何用CSS3来实现这2款特别的Loading动画的. 首先是HTML代码,构造了2个Loading容器: 这是第一个: <div sty

图解DevExpress RichEditControl富文本的使用,附源码及官方API

原文:图解DevExpress RichEditControl富文本的使用,附源码及官方API   9点半了,刚写到1.2.   该回家了,明天继续写完. 大家还需要什么操作,留言说一下,没有的我明天继续加.     好久没有玩DevExpress了,今天下载了一个玩玩,发现竟然更新到14.2.5了..我去. 本章主题: 创建项目,窗体搭建 给RichEditControl添加工具条 创建自定义的工具条按钮项 图片解析操作 修正文档字体 内容搜索功能 导入导出功能(文本/HTML/Word) 官

构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(2)-easyui构建前端页面框架[附源码]

原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(2)-easyui构建前端页面框架[附源码] 开始,我们有了一系列的解决方案,我们将动手搭建新系统吧. 用户的体验已经需要越来越注重,这次我们是左右分栏,左边是系统菜单,右边是一个以tabs页组成的页面集合,每一个tab都可以单独刷新和关闭,因为他们会是一个iframe 工欲善其事必先利其器.需要用到以下工具. Visual Studio 2012 您可以安装MVC4 for vs2010用VS2010

仿酷狗音乐播放器开发日志二十一 开发动态调色板控件(附源码)

转载请说明原出处,谢谢~~           上一篇仿酷狗日志结束后,整个换肤功能就只剩下调色板功能没有做了,我本以为会很简单,但是研究了酷狗的调色板功能后发现不是那么简单的事情.首先看一下酷狗的调色板的样子:         我原本以为酷狗的主界面只是一张图片,然后通过鼠标坐标来选择颜色,简单粗暴.等我开始做这部分时发现情况不一样.         可以看到,酷狗的调色板分为两部分,上半部分是调色板的主界面,下半部分是调整亮度的工具栏,我这里分别给他们起名为Pallet和Bar方便说明.这个