life‘s_a_struggle

导航

4.推荐系统 之 内容召回1——基于内容的

推荐系统之内容召回1——基于内容的

  1.  基于内容的召回
  2.  基于行为的召回
  3.  多路召回
  4.  热点召回

一、基于内容的召回

文章召回文章 

基于文章相同关键词得分做排序推荐

 1 import json
 2 
 3 
 4 with open("article_keywords") as f:
 5         lines=f.readlines()
 6 keyword_title_scores={}
 7 for line in lines:
 8         data=json.loads(line)
 9         title=data['title']
10         keywords=data['keywords']
11         for [keyword,score] in keywords:
12                 if keyword not in keyword_title_scores:
13                         keyword_title_scores[keyword]=[]
14                 keyword_title_scores[keyword].append([title,score])
15 title_similar={}
16 for title_scores in keyword_title_scores.values():
17         for t1,score1 in title_scores:
18                 if t1 not in title_similar:
19                         title_similar[t1]={}
20                 for t2,score2 in title_scores:
21                         if t1==t2:
22                                 continue
23                         title_similar[t1][t2]=title_similar[t1].get(t2,0.0)+score1*score2
24 results=[]
25 for t1,t2_similar in title_similar.items():
26         t2_similar=sorted(t2_similar.items(),key=lambda s:s[1],reverse=True)[0:5]
27         results.append(json.dumps({"title":t1,"similar":t2_similar},ensure_ascii=False))
28 with open("title_recall","w") as f:
29         f.writelines("\n".join(results))
文章召回文章

 

 关键词召回文章

用户日志:用户看了哪些文章代表用户对这些文章的关键词感兴趣。生成用户画像   : 用户 | 关键词,根据用户画像推荐

用户日志
user1 1 3 5
user2 4 7 9
user3 8 10 11

 用户画像分短时和长时两种,像在电商邻域,预测用户实时购买可能,用短时是画像。双十一则用长时用户画像。

 

 

 

关键词召回文章 
 1 import json
 2 
 3 
 4 with open("article_keywords") as f:
 5         lines=f.readlines()
 6 keyword_title_scores={}
 7 for line in lines:
 8         data=json.loads(line)
 9         title=data['title']
10         keywords=data['keywords']
11         for [keyword,score] in keywords:
12                 if keyword not in keyword_title_scores:
13                         keyword_title_scores[keyword]=[]
14                 keyword_title_scores[keyword].append([title,score])
15 results=[]
16 for keyword,recall in keyword_title_scores.items():
17         recall=sorted(recall,key=lambda s:s[1],reverse=True)
18         results.append(json.dumps({"keyword":keyword,"similar":recall},ensure_ascii=False))
19 with open("word_recall","w") as f:
20         f.writelines("\n".join(results))
View Code

 

 

 

posted on 2021-05-14 10:06  life‘s_a_struggle  阅读(98)  评论(0编辑  收藏  举报