Beispiel #1
0
def make_colorizer():
    from csc.divisi2 import examples
    log.info('Loading ConceptNet matrix')
    sa = examples.spreading_activation()
    log.info('Loading color matrix')
    colors = make_color_matrix()
    log.info('Building colorizer')
    return Colorizer(sa, colors)
Beispiel #2
0
def run_leave_n_out():
    from csc.divisi2 import examples
    import colors
    log.info('Loading ConceptNet matrix')
    sa = examples.spreading_activation()
    log.info('Loading test input')
    train_input, test_input = training_and_test_data()
    log.info('Loading test data')
    test = make_test_data()
    log.info('Building colorizer')
    cmatrix = make_color_matrix()
    colorizer = Colorizer(sa, cmatrix)

    dist_dict = {}
    baseline_dict = {}
    distances = {
        'baseline': [],
        'weighted': [],
        'inter_annotator': [],
    }

    test_concepts = set(test.keys()) & set(sa.row_labels)
    for colorname in test_concepts:
        try:
            labout = tuple(colorizer.lab_color_for_concept(colorname)[:3])
        except TypeError:
            continue


        labact = test[colorname]
        rgbact = lab_to_rgb(labact)
        dist = euclid(labout,labact)
        
        distances['weighted'].append(dist)

        baseline = euclid([50, 0, 0], labact)
        distances['baseline'].append(baseline)
        
        #try:
        #    wnout = tuple(colorizer.lab_color_for_concept_wordnet(colorname)[:3])
        #    wndist = euclid(wnout, labact)
        #    distances['wordnet'].append(wndist)
        #    rgbwnout = lab_to_rgb(wnout)
        #    print colorname, '(wordnet)', rgbact, rgbwnout, str(wndist)
        #except TypeError:
        #    pass

        #try:
        #    prismdata = [rgb_to_lab([color.__r, color.__g, color.__b]) for color in colors.prism(colorname)]
        #    prism_avg = numpy.mean(numpy.array(prismdata), axis=0)
        #    prism_dist = euclid(prism_avg, labact)
        #    distances['nodebox_prism'].append(prism_dist)
        #except ZeroDivisionError:
        #    pass

        inter_annotator = euclid(rgb_to_lab(test_input[colorname][0]), 
                                 labact)
        if inter_annotator == 0:
            inter_annotator = euclid(rgb_to_lab(test_input[colorname][1]), 
                                     labact)
        distances['inter_annotator'].append(inter_annotator)
        
        rgbout = lab_to_rgb(labout)

        print colorname, rgbact, rgbout, str(dist)
    
    totals = {}
    for key, values in distances.items():
        totals[key] = sum(values)/len(values)
    totals['total'] = len(distances['weighted'])
    print totals
    return totals