示例#1
0
def perform_eval(eid, data):
    global word_classifiers
    global relation_word_classifiers
    global results_outfile
    
    target_dist = Distribution(data['objects'])
    landmark_dist = Distribution(data['objects'])
    target = data['target']
    increment_data = []
    relation = None

    relation_is_negated = False
    inc = 1
    prev_rank = len(data['objects'])
    for w,tags in [(w['word'],w['tags']) for w in data['speech']]:
        utt = {}
        word = None
        c_rank = None
        relation_dist = None
        prepare_word(utt, w, tags)
        objects = data['objects']
        if 't' in utt:
            word = utt['t'][0]
            target_dist.update(logreg.classify(word, word_classifiers, objects))
        if 'l' in utt:
            word = utt['l'][0]
            landmark_dist.update(logreg.classify(word, word_classifiers, objects))
        if 'r' in utt:
            word = utt['r'][0]
            if relation is not None: relation += '_' + word 
            else: relation = word
        if 'r-' in utt:
            word = utt['r-'][0]
            if relation is not None: relation += '_' + word 
            else: relation = word
            relation_is_negated = True            
                
        if relation is not None: # indent this with above for loop to make it incremental
            tdist = target_dist.copy()
            ldist = landmark_dist.copy()
            relation_dist = apply_relation(tdist, ldist, relation, relation_is_negated, objects)
            
    if relation_dist is not None:      
        return relation_dist.rank(target)
    else:
        target_dist.normalise()
        return target_dist.rank(target)