def __init__(self): self.sess = session.MySession() self.req = Request() self.categories = [ '电视剧', '电影', '综艺', '动漫', '音乐', '教育', '纪录片', '资讯', '娱乐', '体育', '汽车', '科技', '游戏', '生活', '时尚', '旅游', '亲子', '搞笑', '微电影', '网剧', '拍客', '创意视频', '自拍', '广告' ] self.video_genre = { '电视剧': [ '古装', '武侠', '警匪', '军事', '神话', '科幻', '悬疑', '历史', '儿童', '农村', '都市', '家庭', '搞笑', '偶像', '言情', '时装', '优酷出品' ], '电影': [ '武侠', '警匪', '犯罪', '科幻', '战争', '恐怖', '惊悚', '纪录片', '西部', '戏曲', '歌舞', '奇幻', '冒险', '悬疑', '历史', '动作', '传记', '动画', '儿童', '喜剧', '爱情', '剧情', '运动', '短片', '优酷出品' ], '综艺': [ '优酷出品', '优酷牛人', '脱口秀', '真人秀', '选秀', '美食', '旅游', '汽车', '访谈', '记实', '搞笑', '时尚', '晚会', '理财', '演唱会', '益智', '音乐', '舞蹈', '体育娱乐', '游戏', '生活' ], '动漫': [ '热血', '格斗', '恋爱', '美少女', '校园', '搞笑', 'LOLI', '神魔', '机战', '科幻', '真人', '青春', '魔法', '神话', '冒险', '运动', '竞技', '童话', '亲子', '教育', '励志', '剧情', '社会', '历史', '战争' ], } self.show_genre = {} self.allVideos = self.sess.get_all_videos() self.allUsers = self.sess.get_all_users()
def compare_result(self, block_path): dirpath = block_path + "/real_output" real_videos, rec_videos = {}, {} s = session.MySession() filenames = [] for _, _, fns in os.walk(dirpath): filenames = fns print filenames comp_dir = block_path + "/comp_output" if not os.path.exists(comp_dir): os.makedirs(comp_dir) for filename in filenames: user = filename in_file = open(dirpath + '/' + user, "r") in_file.readline() temp = [] for line in in_file: video = line.split('\t')[0] temp.append(video) rec_videos[user] = [] for id in temp: rec_videos[user].append(s.get_video_by_video(id)) real_videos[user] = s.get_videos_by_user(user) l = len(real_videos[user]) print user, l out_file = codecs.open(comp_dir + "/" + user, "w", encoding='utf8') for video in rec_videos[user]: if video in real_videos[user]: video.id = video.id if video.id is not None else "" video.title = video.title if video.title is not None else "" video.category = video.category if video.category is not None else "" out_file.write(video.id + "\t" + video.title + '\t' + video.category + '\n') out_file.write('\n\n') for video in rec_videos[user]: video.id = video.id if video.id is not None else "" video.title = video.title if video.title is not None else "" video.category = video.category if video.category is not None else "" out_file.write(video.id + "\t" + video.title + '\t' + video.category + '\n') out_file.write('\n\n') l = len(real_videos[user]) out_file.write(str(l) + '\n') for video in real_videos[user]: video.id = video.id if video.id is not None else "" video.title = video.title if video.title is not None else "" video.category = video.category if video.category is not None else "" out_file.write(video.id + "\t" + video.title + '\t' + video.category + '\n')
def map_real(self, block_path): test_map = {} s = session.MySession() res = s.get_test_user_videos() once = True # unicode for each in res: u, v = each[0].encode("utf-8"), each[1].encode("utf-8") if u not in test_map: test_map[u] = [v] else: test_map[u].append(v) print test_map out_path = block_path + "/real_output" if not os.path.exists(out_path): os.makedirs(out_path) filenames = [] in_path = block_path + "/output" for _, _, fnames in os.walk(in_path): filenames = fnames umapf = open(block_path + "/user.map") vmapf = open(block_path + "/video.map") umap, vmap = {}, {} for line in umapf: id, r_id = line.split(' ')[0], line.split(' ')[1][:-1] umap[id] = r_id for line in vmapf: id, r_id = line.split(' ')[0], line.split(' ')[1][:-1] vmap[id] = r_id count = 0 for name in filenames: in_file_path = in_path + "/" + name in_file = open(in_file_path, "r") user = name[:-4] r_user = umap[user] out_file_path = out_path + "/" + r_user out_file = open(out_file_path, "w") out_file.write(r_user + '\n') for line in in_file: video, score = line.split("\t")[0], line.split("\t")[1] r_video = vmap[video] # print type(r_user) if r_user in test_map and r_video in test_map[r_user]: print r_user count += 1 out_file.write(r_video + '\t' + score[:-1] + ' ***\n') else: out_file.write(r_video + '\t' + score[:-1] + '\n') out_file.close() in_file.close() print "count: ", count
def make_title(self): dir = '/home/lin/workspace/data/youku' file = codecs.open(dir + "/ctrain.dat", encoding='utf8') out = codecs.open(dir + '/ctrain.out', 'w', encoding='utf8') s = session.MySession() idx = 1 for line in file: line.strip() u, v1, v2, delta = line.split(' ') v1 = s.get_video_by_video(v1) v2 = s.get_video_by_video(v2) v1.title = "None" if v1.title is None else v1.title v2.title = "None" if v2.title is None else v2.title out.write(u + "\n" + v1.title + "\n" + v2.title + '\n' + delta + '\n') idx += 1
def get_triple(self, dirpath, sep=' '): def make_dat_file(file, res): for idx in range(len(res)): delt = 0 user, video, time = res[idx] file.write(user + sep + video + sep + time.strftime("%s") + "\n") s = session.MySession() if not os.path.exists(dirpath): os.makedirs(dirpath) res = s.get_data("train") file = codecs.open(dirpath + "/train.dat", "w", encoding='utf8') make_dat_file(file, res) file.close() res = s.get_data("test") file = codecs.open(dirpath + "/test.dat", "w", encoding='utf8') make_dat_file(file, res) file.close()
def __init__(self): self.sess = session.MySession() self.req = Request() self.categories = [ '电视剧', '电影', '综艺', '动漫', '音乐', '教育', '纪录片', '资讯', '娱乐', '体育', '汽车', '科技', '游戏', '生活', '时尚', '旅游', '亲子', '搞笑', '微电影', '网剧', '拍客', '创意视频', '自拍', '广告' ] self.video_genre = { '电视剧': [ '古装', '武侠', '警匪', '军事', '神话', '科幻', '悬疑', '历史', '儿童', '农村', '都市', '家庭', '搞笑', '偶像', '言情', '时装', '优酷出品' ], '电影': [ '武侠', '警匪', '犯罪', '科幻', '战争', '恐怖', '惊悚', '纪录片', '西部', '戏曲', '歌舞', '奇幻', '冒险', '悬疑', '历史', '动作', '传记', '动画', '儿童', '喜剧', '爱情', '剧情', '运动', '短片', '优酷出品' ], '综艺': [ '优酷出品', '优酷牛人', '脱口秀', '真人秀', '选秀', '美食', '旅游', '汽车', '访谈', '记实', '搞笑', '时尚', '晚会', '理财', '演唱会', '益智', '音乐', '舞蹈', '体育娱乐', '游戏', '生活' ], '动漫': [ '热血', '格斗', '恋爱', '美少女', '校园', '搞笑', 'LOLI', '神魔', '机战', '科幻', '真人', '青春', '魔法', '神话', '冒险', '运动', '竞技', '童话', '亲子', '教育', '励志', '剧情', '社会', '历史', '战争' ], '资讯': ['社会资讯', '科技资讯', '生活资讯', '时政资讯', '军事资讯', '财经资讯', '法制'], '娱乐': ['娱乐资讯', '电视资讯', '电影资讯', '音乐资讯', '颁奖礼', '戏剧', '曲艺', '艺术', '魔术'], '体育': [ '世界杯', '体育资讯', '篮球', 'CBA', '足球', '英超', '极限运动', '跑酷', '自行车', '轮滑', '滑板', '武术', '格斗', '赛车', '大球运动', '小球运动', '网球', '田径', '水上项目', '力量项目', '冰雪项目', '射击', '健身', '体育舞蹈', '技巧', '棋牌', '模型', '其他', '奥运会', '欧洲杯' ], '汽车': [ '车讯', '购车', '试驾', '新车', '国产车', '欧洲', '美国', '日韩', '其他地区', '宝马', '通用', '丰田', '福特', '大众', '戴勒姆-克莱斯勒', '现代-起亚', '日产', '标致-雪铁龙', '本田', '雷诺', '养车', '修车', '改装', '装饰', '赛车', '二手车', '名车', '车女郎', '车广告', '学车', '飙车', '车友会', '摩托车', 'F1' ], '科技': [ '数码', 'App', '游戏机', 'GPS', '数字家电', 'MP3/MP4', 'DC/DV', '笔记本', '手机', 'IT', '平板' ], '游戏': ['游戏资讯', '网络游戏', '游戏音乐', '电子竞技', '单机游戏', '魔兽世界', '地下城与勇士', '手机游戏'], '生活': ['休闲', '潮品', '婚恋', '女性', '家居', '健康', '居家', '宠物', '聚会', '美食', '记录'], '时尚': ['美容', '修身', '服装服饰', '时尚购物', '潮人', '情感星座'], '旅游': [ '城市', '户外运动', '节庆活动', '自然景点', '人文景点', '游轮岛屿', '乡村古镇', '旅游用品', '交通住宿', '旅游业界', '出境游', '国内游', '攻略指南' ], '亲子': ['育儿', '宝宝秀', '妈妈', '早教', '怀孕', '搞笑儿童'], '搞笑': ['恶搞短片', '搞笑自拍', '搞笑动物'], '微电影': [], '网剧': [], '拍客': [], '创意视频': [], '自拍': [], '广告': [] } self.show_genre = { '音乐': ['音乐MV', '现场版', '演唱会', '电影原声', '电视剧原声', '动漫音乐', '游戏音乐', '广告音乐'], '教育': [ '公开课', '名人名嘴', '文化', '艺术', '伦理社会', '理工', '历史', '心理学', '经济', '政治', '管理学', '外语', '法律', '计算机', '哲学', '职业培训', '家庭教育' ], '纪录片': ['人物', '军事', '历史', '自然', '古迹', '探险', '科技', '文化', '刑侦', '社会', '旅游'], } self.show_genre = {} print '1' self.allVideos = self.sess.get_all_videos() print '2' self.allUsers = self.sess.get_all_users() print '3'