def usercf_commend(self, start_time, end_time, userlist=[], corr_user=10, num=50): mysql_server = mysqlserver(conf.get('mysqldatabase', 'server'), int(conf.get('mysqldatabase', 'port')), conf.get('mysqldatabase', 'user'), conf.get('mysqldatabase', 'pwd'), conf.get('mysqldatabase', 'db')) oss_server = ossdataserver(conf.get('ossaccess', 'endpoint'), conf.get('ossaccess', 'accessKeyId'), conf.get('ossaccess', 'accessKey'), conf.get("ossdatabase", 'basename'), conf.get("ossdatabase", 'tablename')) #协同过滤,扫全量用户,做分组推荐 collaborate = CollaborateHandler(mysql_server, oss_server) coll_data = collaborate.Collaborate_info(corr_user, userlist, start_time, end_time) usercf = UserCf(coll_data) recommandList = usercf.recomand('1475735', 2) print(recommandList) userList = usercf.nearstUser('1475735', 2) print(userList) # id链接商品标题 # coll_data= return coll_data
def tag_commend(self, start_time, end_time, num=10): mysql_server = mysqlserver(conf.get('mysqldatabase', 'server'), int(conf.get('mysqldatabase', 'port')), conf.get('mysqldatabase', 'user'), conf.get('mysqldatabase', 'pwd'), conf.get('mysqldatabase', 'db')) oss_server = ossdataserver(conf.get('ossaccess', 'endpoint'), conf.get('ossaccess', 'accessKeyId'), conf.get('ossaccess', 'accessKey'), conf.get("ossdatabase", 'basename'), conf.get("ossdatabase", 'tablename')) Collaborate = CollaborateHandler(mysql_server, oss_server) #productinfo=Collaborate.Collaborate_info(start_time,end_time) mysql_server.close() return ""
def group_commend(self, userlist, start_time, end_time, num=50): # 一个分组推送一次50个 mysql_server = mysqlserver(conf.get('mysqldatabase', 'server'), int(conf.get('mysqldatabase', 'port')), conf.get('mysqldatabase', 'user'), conf.get('mysqldatabase', 'pwd'), conf.get('mysqldatabase', 'db')) oss_server = ossdataserver(conf.get('ossaccess', 'endpoint'), conf.get('ossaccess', 'accessKeyId'), conf.get('ossaccess', 'accessKey'), conf.get("ossdatabase", 'basename'), conf.get("ossdatabase", 'tablename')) prohandler = ProductHandler(mysql_server) handler = UserHandler(mysql_server, oss_server) mysql_server.close() return num
def single_commend(self, userlist, start_time, end_time, num=50): mysql_server = mysqlserver(conf.get('mysqldatabase', 'server'), int(conf.get('mysqldatabase', 'port')), conf.get('mysqldatabase', 'user'), conf.get('mysqldatabase', 'pwd'), conf.get('mysqldatabase', 'db')) oss_server = ossdataserver(conf.get('ossaccess', 'endpoint'), conf.get('ossaccess', 'accessKeyId'), conf.get('ossaccess', 'accessKey'), conf.get("ossdatabase", 'basename'), conf.get("ossdatabase", 'tablename')) prohandler = ProductHandler(mysql_server) handler = UserHandler(mysql_server, oss_server) order = handler.user_info(userlist, start_time, end_time) product = prohandler.product_info() mysql_server.close() return product
def group_info(self, userlist, start_time, end_time): # 需要把userid连成成一个组id,算作一个用户 self.userhelper.get_order_data(userlist) self.userhelper.get_behavior_data(userlist, start_time, end_time) return userlist def all_user_info(self, start_time, end_time): orderdata, userlist = self.userhelper.get_order_user_data( start_time, end_time) self.userhelper.get_behavior_data(userlist, start_time, end_time) return userlist if __name__ == "__main__": mysql_server = mysqlserver(conf.get('mysqldatabase', 'server'), int(conf.get('mysqldatabase', 'port')), conf.get('mysqldatabase', 'user'), conf.get('mysqldatabase', 'pwd'), conf.get('mysqldatabase', 'db')) oss_server = ossdataserver(conf.get('access', 'endpoint'), conf.get('access', 'accessKeyId'), conf.get('access', 'accessKey'), conf.get("ossdatabase", 'basename'), conf.get("ossdatabase", 'tablename')) handler = UserHandler(mysql_server, oss_server) userlist = [ '"11648742"', '"14883478"', '"15895419"', '"5872187"', '"16607035"' ]
def cold_commend(self, num=50): # 冷启动,新用户 mysql_server = mysqlserver(conf.get('mysqldatabase', 'server'), int(conf.get('mysqldatabase', 'port')), conf.get('mysqldatabase', 'user'), conf.get('mysqldatabase', 'pwd'), conf.get('mysqldatabase', 'db')) prohandler = ProductHandler(mysql_server) pro = prohandler.product_info() mysql_server.close() # xk_pro=pro[pro['mp_alias']=='gh212565199e78'] # qs_pro=pro[pro['mp_alias']==''] # import jieba # jieba.load_userdict("./resources/dict/expendword.txt") # xk_str=' '.join(xk_pro['product_title']) # text_word=Counter(jieba.lcut(xk_str)) # xk_k=[] # xk_v=[] # for k in text_word.keys(): # xk_k.append(k) # for v in text_word.values(): # xk_v.append(v) # xk_obj={ # 'word':xk_k, # 'count':xk_v # } # xk_pd=pd.DataFrame(xk_obj,index=None) # xk_pd.to_csv('qingshe_word.csv',index=None) ss = StandardScaler() std_sort = ss.fit_transform([[i] for i in pro['sort']]) pro['sort'] = [i[0] for i in std_sort] std_buynum = ss.fit_transform([[i] for i in pro['product_buy_num']]) pro['product_buy_num'] = [i[0] for i in std_buynum] std_collnum = ss.fit_transform([[i] for i in pro['product_collect_num']]) pro['product_collect_num'] = [i[0] for i in std_collnum] std_safe = ss.fit_transform([[i] for i in pro['safeguard_radtio']]) pro['safeguard_radtio'] = [i[0] for i in std_safe] std_pv = ss.fit_transform([[i] for i in pro['pv']]) pro['pv'] = [i[0] for i in std_pv] pro['score'] = pro['sort'] * 0.1 + pro['product_buy_num'] * 3 + pro[ 'product_collect_num'] * 2 + pro['pv'] * 1 - pro[ 'safeguard_radtio'] * 0.5 pro.sort_values(by="score", ascending=False, inplace=True) return pro.iloc[0:num] # #标签推荐 # qs_id=[] # qs_name=[] # qs_key=[] # xk_id=[] # xk_name=[] # xk_key=[] # qs=pro[pro['mp_alias']=='gh212565199e78'] # import jieba # import jieba.posseg as pseg # 词性标注 # #from jieba.analyse import ChineseAnalyzer # from jieba.analyse import extract_tags # jieba.load_userdict("./resources/dict/expendword.txt") # for i,item in enumerate(qs['product_title']): # #seg_list=#,cut_all=False) # qs_id.append(qs['product_id'][qs['product_id'].index[i]]) # qs_name.append(item) # seg_obj={} # seg_list=jieba.lcut(item)#pseg.cut(item)#,cut_all=False) # qs_key+=seg_list # print(Counter(qs_key)) # key=[] # val=[] # for io in sorted(Counter(qs_key).items(), key = lambda kv:(kv[1], kv[0]),reverse=True): # (i,o)=io # key.append(i) # val.append(o) # xk_obj={ # 'key':key, # 'val':val # } # xk_pd=pd.DataFrame(xk_obj,index=None) # xk_pd.to_csv('./kv.csv',index=None) # qs_obj={ # 'id':qs_id, # 'name':qs_name, # 'key':qs_key # } # qs_pd=pd.DataFrame(qs_obj,index=None) # qs_pd.to_csv('./qs_key.csv',index=None) # for i,item in enumerate(xk['product_title']): # #seg_list=pseg.cut(item)#,cut_all=False) # xk_id.append(xk['product_id'][xk['product_id'].index[i]]) # seg_obj={} # #item=''.join(re.findall(u'[a-zA-Z\d\u4e00-\u9fff]+', item)) # seg_list=pseg.cut(item)#,cut_all=False) # for word in seg_list: # if word.flag in list(seg_obj.keys()): # seg_obj[word.flag].append(word.word) # else: # seg_obj[word.flag]=[] # seg_obj[word.flag].append(word.word) # xk_key.append(seg_obj) # xk_obj={ # 'id':xk_id, # 'name':xk_name, # 'key':xk_key # } # xk_pd=pd.DataFrame(xk_obj,index=None) # xk_pd.to_csv('./xk_key.csv',index=None) # for i,pic in enumerate(pro['details']): # res=requests.get('https://html.weidiango.com/{0}'.format(pic),{},headers={'token':get_token()}) # print(pro['product_id'][pro['product_id'].index[i]]) # for detail in re.findall(r'data-src="([\w]+)"',res.text,re.M|re.I): # #image = io.imread('https://img.weidiango.com/{0}?imageMogr2/gravity/center/thumbnail/828x/format/jpeg'.format(detail)) # url = requests.get('https://img.weidiango.com/{0}?imageMogr2/gravity/center/thumbnail/828x/format/jpeg'.format(detail),{},headers={'token':get_token()}) # image = Image.open(BytesIO(url.content)) # #image = Image.open('https://img.weidiango.com/{0}?imageMogr2/gravity/center/thumbnail/828x/format/jpeg'.format(detail)) # 打开图片 # text = pytesseract.image_to_string(image,lang='chi_sim').replace(' ','') #使用简体中文解析图片 # print(text) return prohandler.product_info(num)