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)
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