感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。🍅
1、项目介绍
技术栈:
Python语言、Django框架、requests爬虫模块、网易头条新闻、 itemBasedCF 基于物品协同过滤推荐算法
本文系统基于Python3语言开发环境,通过requests爬虫框架爬取新闻网站相关新闻信息并对其进行存储、清洗,后端存储在MySQL数据库,采用Django框架以web界面的方式为用户提供了新闻信息浏览查看功能、新闻阅读、新闻收藏以及新闻查询、新闻采集功能,并且基于协同过滤推荐算法把新闻信息定向推荐给用户。
2、项目界面
(1)不同类型新闻浏览
(2)新闻详情页
(3)注册登录界面
(4)新闻推荐
(5)后台数据管理
3、项目说明
在很多领域,推荐系统近些年被广泛运用于向用户推荐符合其兴趣偏好的信息服务或内容,是解决当今信息超载问题的有效方法。基于网络爬虫技术和推荐算法实现的基于协同过滤推荐算法的新闻推荐系统,通过研究和对比用户的兴趣偏好进行个性化的计算,由系统发现用户的兴趣点,从而引导用户发现自己的信息需求,让推荐系统和用户之间建立密切关系,让用户对推荐系统产生依赖。本新闻推荐系统可以有效提高新闻效率和新闻匹配度,通过用户的浏览记录和收藏列表为用户定向推荐与其需求相似的新闻。本文系统基于Python3语言开发环境,通过requests爬虫框架爬取新闻网站相关新闻信息并对其进行存储、清洗,后端存储在MySQL数据库,采用Django框架以web界面的方式为用户提供了新闻信息浏览查看功能、新闻阅读、新闻收藏以及新闻查询、新闻采集功能,并且基于协同过滤推荐算法把新闻信息定向推荐给用户。
关键词:新闻信息推荐;Python;数据爬虫;协同过滤推荐算法
- 前台页面模块及用户功能:分为游客登录与用户登录两种登录状态,已登录用户可以查看首页、推荐页、热点新闻、个人中心,未登录访客只能可以看到首页、热点新闻。已登录用户包含的具体功能有:注册、登录、注销、信息修改、密码修改、新闻评论、新闻浏览记录查看、热点推荐查看、个性化推荐新闻查看等功能。未登录用户包含的具体功能有:注册、登录、首页中热点新闻推荐查看等功能。
- 后台数据管理模块:管理员可登录后台管理系统,具体功能有:用户管理、新闻管理、评论管理、浏览记录管理等。
- 数据获取模块:利用python网络爬虫,抓取相关新闻网站的新闻资源,包括新闻标题、发布时间、发布内容等。然后使用JieBa库进行中文分词、计算分词的TF-IDF值,得到相应关键字写入数据库中。
- 新闻推荐模块:用户在注册时需要选择标签,计算新闻关键词与用户选择标签的相似度,相似度高者推荐给用户。显示在推荐页面内供用户浏览。
4、核心代码
#!/usr/bin/env python
#-*-coding:utf-8-*-
import math
import pdb
class KNN:
def __init__(self,train):
self.train = train
# def readData(self):
# #读取文件,并生成用户-物品的评分表和测试集
# self.train = dict()
# #用户-物品的评分表
# for line in open(self.train_file):
# user,score,item = line.strip().split(",")
# self.train.setdefault(user,{})
# self.train[user][item] = int(float(score))
def ItemSimilarity(self):
#建立物品-物品的共现矩阵
cooccur = dict() #物品-物品的共现矩阵
buy = dict() #物品被多少个不同用户购买N
for user,items in self.train.items():
for i in items.keys():
buy.setdefault(i,0)
buy[i] += 1
cooccur.setdefault(i,{})
for j in items.keys():
if i == j : continue
cooccur[i].setdefault(j,0)
cooccur[i][j] += 1
#计算相似度矩阵
self.similar = dict()
for i,related_items in cooccur.items():
self.similar.setdefault(i,{})
for j,cij in related_items.items():
self.similar[i][j] = cij / (math.sqrt(buy[i] * buy[j]))
return self.similar
#给用户user推荐,前K个相关用户,前N个物品
def Recommend(self,user,K=10,N=10):
rank = dict()
action_item = self.train[user]
#用户user产生过行为的item和评分
for item,score in action_item.items():
sortedItems = sorted(self.similar[item].items(),key=lambda x:x[1],reverse=True)[0:K]
for j,wj in sortedItems:
if j in action_item.keys():
continue
rank.setdefault(j,0)
rank[j] += score * wj
return dict(sorted(rank.items(),key=lambda x:x[1],reverse=True)[0:N])
5、源码获取方式
🍅由于篇幅限制,获取完整文章或源码、代做项目的,查看我的【用户名】、【专栏名称】、【顶部选题链接】就可以找到我啦🍅
感兴趣的可以先收藏起来,点赞、关注不迷路,下方查看👇🏻获取联系方式👇🏻