'payload': payload,
            'upload_time': the_time
        }
        time.sleep(0.01)

    shuffledQids = training_queries.keys()[:]
    random.shuffle(shuffledQids)
    while True:
        counter = 0
        time.sleep(0.01)
        for qid in shuffledQids:
            counter += 1
            #print qid, counter, 'of', qlen
            q = training_queries[qid]
            c = user_model.get_clicks(uploads[qid]['ranked_lerot_list'],
                                      q.get_labels(),
                                      query=q,
                                      ranker_list=uploads[qid]['payload'],
                                      upload_time=uploads[qid]['upload_time'])
            if c is not None: break
        if c is not None:
            print c
            break
    s = learner.update_solution(c)
    eval = evaluation.evaluate_all(s, test_queries)
    print eval
    with open('evaluation', 'a') as f:
        f.write(str(eval) + '\n')
    if runid == 1000:
        break
import sys, random
import include
import lerot.retrieval_system, lerot.environment, lerot.evaluation, lerot.query


#learner = lerot.retrieval_system.ListwiseLearningSystem(46, '-w random -c comparison.TeamDraft -r ranker.DeterministicRankingFunction -s 3 -d 0.1 -a 0.01')

learner = lerot.retrieval_system.PairwiseLearningSystem(46,
            "--init_weights random --epsilon 0.0 --eta 0.001 --ranker "
            "ranker.DeterministicRankingFunction --ranker_tie first")

user_model = lerot.environment.CascadeUserModel('--p_click 0:0.0,1:.5,2:1.0 --p_stop 0:0.0,1:0.0,2:0.0')
evaluation = lerot.evaluation.NdcgEval()
training_queries = lerot.query.load_queries(sys.argv[1], 46)
test_queries = lerot.query.load_queries(sys.argv[2], 46)
while True:
    q = training_queries[random.choice(training_queries.keys())]
    l = learner.get_ranked_list(q)
    c = user_model.get_clicks(l, q.get_labels())
    s = learner.update_solution(c)
    print evaluation.evaluate_all(s, test_queries)
            shuffledQids = training_queries.keys()[:]
            random.shuffle(shuffledQids)  #shuffle query ids list
            while True:
                for qid in shuffledQids:
                    q = training_queries[qid]
                    c = user_model.get_clicks(uploads[qid]['current_l'],
                                              q.get_labels())
                    if isinstance(c, np.ndarray): break
                if isinstance(c, np.ndarray):
                    break

            q = training_queries[qid]
            learner.get_ranked_list(q)  #, firstTime
            learner.current_l = uploads[qid]['current_l']
            s = learner.update_solution(c)  #update learner using clicks
            eval = evaluation.evaluate_all(learner.ranker, test_queries)
            out_path = os.path.abspath(
                os.path.join(os.path.dirname(__file__), os.pardir)
            ) + '/output_data/pairwise_local_evaluation_data/fold' + str(
                fold) + '_' + (str(repetition))
            evalString += str(eval)
            evalString += '\n'
            print eval
            if runid >= 100 and runid % 100 == 0:
                with open(out_path, 'a') as f:
                    f.write(str(evalString))
                    evalString = ''
                with open(
                        os.path.abspath(
                            os.path.join(os.path.dirname(__file__), os.pardir))
                        + '/output_data/pairwise_local_evaluation_data/' +
Exemplo n.º 4
0
        #print qid, counter, 'of', qlen
        #['__feature_vectors__', '__docids__', '__labels__', '__qid__', '__comments__']
        q = training_queries[qid]
        l = learner.get_ranked_list(q)
        payload, the_time = user_model.upload_run(q, l, runid)
        uploads[qid] = {'ranked_lerot_list':l, 'payload':payload, 'upload_time':the_time}
        time.sleep(0.01)

    shuffledQids = training_queries.keys()[:]
    random.shuffle(shuffledQids)
    while True:
        counter = 0
        time.sleep(0.01)
        for qid in shuffledQids:
            counter += 1
            #print qid, counter, 'of', qlen
            q = training_queries[qid]
            c = user_model.get_clicks(uploads[qid]['ranked_lerot_list'], q.get_labels(), 
                                      query=q, ranker_list=uploads[qid]['payload'], upload_time=uploads[qid]['upload_time'])
            if c is not None: break
        if c is not None:
            print c
            break     
    s = learner.update_solution(c)
    eval = evaluation.evaluate_all(s, test_queries)
    print eval
    with open('evaluation', 'a') as f:
        f.write(str(eval)+'\n')
    if runid == 1000:
        break
Exemplo n.º 5
0
                                'current_query': q
                                }
                
            shuffledQids = training_queries.keys()[:]
            random.shuffle(shuffledQids)#shuffle query ids list
            while True:
                for qid in shuffledQids:
                    q = training_queries[qid]
                    c = user_model.get_clicks(uploads[qid]['current_l'], q.get_labels())
                    if isinstance(c, np.ndarray):break
                if isinstance(c, np.ndarray):
                    break
        
            q = training_queries[qid]
            learner.get_ranked_list(q)#, firstTime
            learner.current_l = uploads[qid]['current_l']
            s = learner.update_solution(c)#update learner using clicks
            eval = evaluation.evaluate_all(learner.ranker, test_queries)
            out_path = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir))+'/output_data/pairwise_local_evaluation_data/fold'+str(fold)+'_'+(str(repetition))
            evalString += str(eval)
            evalString += '\n'
            print eval
            if runid >= 100 and runid % 100 == 0:
                with open(out_path, 'a') as f:
                    f.write(str(evalString))
                    evalString = ''
                with open(os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir))+'/output_data/pairwise_local_evaluation_data/'+'learnerPickle.c', 'wb') as fp:
                    pickle.dump(learner, fp)
            if runid == 1000:
                break