コード例 #1
0
ファイル: youku.py プロジェクト: lt22063228/youku
 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()
コード例 #2
0
    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')
コード例 #3
0
    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
コード例 #4
0
 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
コード例 #5
0
    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()
コード例 #6
0
ファイル: youku.py プロジェクト: lt22063228/youku
 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'