数据清洗完成之后,可以来构建推荐系统了,但是构建推荐系统的前提是要有用户数据,没有用户数据,是没有办法基于协同过滤来进行文章的推荐的,所以我需要用批量注册一些用户,然后用脚本模拟用户进行文章的浏览。
批量注册用户
#伪造2000个用户信息
for i in range(0,2000):
name = "test_"+str(i)
sql = "insert into user (name,password,email,is_admin) value ('{}','{}','{}',0)".format(name,"0000",name+"@gmail.com")
cursor.execute(sql)
db.commit()
构造用户的浏览行为
模拟用户随机浏览行为,遍历用户列表,给每个用户一个随机的浏览次数,然后让用户岁久浏览文章,插入数据库之中。
import time
import random
#用户随机浏览文章
import random
fr = open("article.csv","r")
datas = fr.readlines()
article_id_list = []
for i in datas:
article_id_list.append(i.split(",")[0])
fr2 = open("test_user.csv","r")
user_list = fr2.readlines()
user_id_list = []
for i in user_list:
user_id_list.append(i.split(",")[0])
user_id_list = user_id_list[1:]
article_id_list = article_id_list[1:]
for user_id in user_id_list:
brower_count = random.randint(10, 200) # 给每个用户随机一个浏览次数 10~200
for j in range(0, brower_count):
brower_article_id = random.randint(165, 2036) # 每次随机选一篇文章
now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) # 当前时间
# 插入用户的浏览记录
sql = "insert into user_browsing_history (user_id,article_id,browse_time) values ('{}','{}','{}')".format(
user_id, brower_article_id, now)
cursor.execute(sql)
db.commit()
# 将此文章的阅读量+1
sql = "update article set rating_count = rating_count + 1 where id = {}".format(brower_article_id)
cursor.execute(sql)
db.commit()
print("用户", user_id, "浏览了", brower_count, "篇文章")
共构造了二十多万条浏览记录。
有了用户浏览记录,明天开始踩坑推荐系统了