当前位置:文档之家› 新闻个性化推荐系统

新闻个性化推荐系统

新闻个性化推荐系统(python)
关zhu并回复微信公众号:数据挖掘DW(ID:datadw)可获取源代码
和数据集。
最近参加了一个评测,是关于新闻个性化推荐。说白了就是给你一个人的浏
览记录,预测他下一次的浏览记录。花了一周时间写了一个集成系统,可以一键
推荐新闻,但是准确率比较不理想,所以发到这里希望大家给与一些建议。用到
的分词部分的代码借用的jieba分词。数据集和代码在下面会给出。
1.数据集

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

2.代码部分
先来看下演示图
(1)算法说明
举个例子简单说明下算法,其实也比较简单,不妥的地方希望大家
指正。我们有如下一条数据

[plain]viewplaincopy
1.
57389361006498791394550848MH370航班假护照乘客身份查明(更新)11

5738936这名用户在11号看了“MH370航班假护照乘客...”这
条新闻。我们通过jieba找出11号的热点词如下。
[plain]viewplaincopy
1.
失联311三周年马方偷渡客隐形护照吉隆坡航班护照者

我们发现“航班”、“护照”这两个keywords出现在新闻里。于
是我们就推荐5738936这名用户,11号出现“航班”、“护照”的其
它新闻。同时我们对推荐集做了处理,比如说5738936浏览过的新闻
不会出现,热度非常低的新闻不会出现等。
(2)使用方法
整个系统采用一键式启动,使用起来非常方便。首先建立一个test
文件夹,然后在test里新建三个文件夹,注意命名要和图中的统一,
因为新闻是有时效的,每一天要去分开来计算,要存储每一天的内容做
成文档。test文档如下图,就可以自动生成。

使用的时候,要先在Global_param.py中设置好test文件夹的路径参
数。一切设置完毕,只要找到wordSplite_test包下面的main()函数,
运行程序即可。
Global_param中设置参数说明:
number_jieba:控制提取关键词的数量
number_day:从第一天开始,要预测的天数
hot_rate:预测集预测的新闻热度,数值越大热度越高

(3)代码流程
首先我们从main()看起。
[python]viewplaincopy
1.
importGet_day_data

2.
importGet_keywords

3.
importGet_keynews

4.
importDelete_Repeat

5.
importGet_hot_result

6.
importGlobal_param

7.
defmain():

8.
foriinrange(1,Global_param.number_day):

9.
Get_day_data.TransforData(i)

10.
Get_day_data.TransforDataset(i)

11.
Get_keywords.Get_keywords(i)

12.
Get_keynews.Get_keynews(i)

13.
Delete_Repeat.Delete_Repeat()

14.
Get_hot_result.get_hot_result(Global_param.hot_rate)

15.

16.
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文件每执行一次程序要手动清空,其它文件
都是自动生成不用处理。

相关主题