Esempio n. 1
0
    def experiment10(cls):
        alike_distances = []
        for median_num in range(0, 30):
            metrics = lambda x, y: PictureMetrics.dameray_levenstein_distance_sum(x, y, median_num=median_num)
            fontFamilies = FontFamily.get_all_families()
            alike_distance = 0
            for fontFamily in fontFamilies:
                print "--new font family---"
                signes = fontFamily.get_signes(30)
                for pair_of_signes in signes:
                    distance = metrics(pair_of_signes[0], pair_of_signes[1])
                    alike_distance += distance
            alike_distances.append(alike_distance)
        diff_distances = []
        for median_num in range(0, 30):
            metrics = lambda x, y: PictureMetrics.dameray_levenstein_distance_sum(x, y, median_num=median_num)
            fontFamilies = FontFamily.get_all_families()
            diff_distance = 0
            for fontFamily in fontFamilies:
                print "--new font family---"
                signes = fontFamily.get_signes(15)
                for pair_of_signes in signes:
                    for j, sign in enumerate(pair_of_signes):
                        ind = random_but_not_this(j, len(signes))
                        distance = metrics(sign, signes[ind][j])
                        diff_distance += distance

            diff_distances.append(diff_distance)
        substaction = []
        for alike, diff in zip(alike_distances, diff_distances):
            substaction.append(diff - alike)
        plt.plot(range(0, 30), substaction, 'ro')
        plt.show()
Esempio n. 2
0
 def optimize_weights(cls, weights, num_of_signes=100):
     print weights
     metrics = lambda x, y: PictureMetrics.dameray_levenstein_distance_sum(x, y, weights=weights)
     fontFamilies = FontFamily.get_all_families()
     alike_distance = 0
     alike_num = 0
     for fontFamily in fontFamilies:
         signes = fontFamily.get_signes(num_of_signes)
         for pair_of_signes in signes:
             distance = metrics(pair_of_signes[0], pair_of_signes[1])
             alike_distance += distance
             alike_num += 1
     print "alike distance=", alike_distance
     #print "alike num=", alike_num
     diff_distance = 0
     diff_num = 0
     for fontFamily in fontFamilies:
         signes = fontFamily.get_signes(num_of_signes / 2)
         for pair_of_signes in signes:
             for j, sign in enumerate(pair_of_signes):
                 ind = random_but_not_this(j, len(signes))
                 distance = metrics(sign, signes[ind][j])
                 diff_distance += max(25 - distance, 0)
                 diff_num += 1
     print "diff distance=", diff_distance
     #print "diff num=", diff_num
     result = alike_distance + diff_distance
     print "total=", result
     return result
Esempio n. 3
0
 def experiment3(cls):
     metrics = lambda x, y: PictureMetrics.dameray_levenstein_distance_v(x, y)
     fontFamilies = FontFamily.get_all_families()
     alikes = []
     for fontFamily in fontFamilies:
         signes = fontFamily.get_signes(1000)
         for pair_of_signes in signes:
             distance = metrics(pair_of_signes[0], pair_of_signes[1])
             alikes.append(distance)
     plt.hist(alikes)
     plt.show()
Esempio n. 4
0
    def experiment7(cls):
        metrics = lambda x, y: PictureMetrics.dameray_levenstein_distance_sum(x, y)
        fontFamilies = FontFamily.get_all_families()
        differences = []
        for fontFamily in fontFamilies:
            signes = fontFamily.get_signes(1000)
            for i, sign_array in enumerate(signes):
                for j, sign in enumerate(sign_array):
                    ind = random_but_not_this(j, len(signes))
                    distance = metrics(sign, signes[ind][j])
                    differences.append(distance)

        plt.hist(differences)
        plt.show()
Esempio n. 5
0
    def experiment8(cls):
        alike_distances = []
        for median_num in range(0, 30):
            metrics = lambda x, y: PictureMetrics.dameray_levenstein_distance_sum(x, y, median_num=median_num)
            fontFamilies = FontFamily.get_all_families()
            alike_distance = 0
            for fontFamily in fontFamilies:
                print "--new font family---"
                signes = fontFamily.get_signes(50)
                for pair_of_signes in signes:
                    distance = metrics(pair_of_signes[0], pair_of_signes[1])
                    alike_distance += distance
            alike_distances.append(alike_distance)

        plt.plot(range(0, 30), alike_distances, 'ro')
        plt.show()
Esempio n. 6
0
    def experiment9(cls):
        diff_distances = []
        for median_num in range(0, 30):
            metrics = lambda x, y: PictureMetrics.dameray_levenstein_distance_sum(x, y, median_num=median_num)
            fontFamilies = FontFamily.get_all_families()
            diff_distance = 0
            for fontFamily in fontFamilies:
                print "--new font family---"
                signes = fontFamily.get_signes(50)
                for pair_of_signes in signes:
                    for j, sign in enumerate(pair_of_signes):
                        ind = random_but_not_this(j, len(signes))
                        distance = metrics(sign, signes[ind][j])
                        diff_distance += distance

            diff_distances.append(diff_distance)

        plt.plot(range(0, 30), diff_distances, 'ro')
        plt.show()
Esempio n. 7
0
    def count_penalty(cls, metrics):
        fontFamilies = FontFamily.get_all_families()
        penalty = 0
        alikes = []
        print "----getting signes from family----"
        for fontFamily in fontFamilies:
            signes = fontFamily.get_signes(1000)
            family_penalty = 0
            family_penalty_alike = 0
            sum_alike = 0
            sum_dif = 0
            family_penalty_different = 0
            diffs = []
            alikes = []
            for i, sign_set in enumerate(signes):
                for j, sign in enumerate(sign_set):
                    for k, sign2 in enumerate(sign_set[j + 1:]):
                        alike = metrics(sign, sign2)
                        family_penalty_alike += alike
                        sum_alike += 1
                        alikes.append(alike)

                    if i < len(signes) and i != (len(signes) - i) % len(signes):
                        diff = metrics(sign, signes[-i][j])
                        family_penalty_different += max(18 - diff, 0)
                        sum_dif += 1
                        diffs.append(diff)
            dif_to_alike = sum_dif / float(sum_alike)
            family_penalty = family_penalty_alike * dif_to_alike + family_penalty_different
            print "Family penalty alike:", family_penalty_alike, "sum_alike", sum_alike
            print "Family penalty different:", family_penalty_different, "sum_dif", sum_dif
            print "Family penalty total:", family_penalty
            penalty += family_penalty
        plt.hist(alikes)
        plt.show()
        print "Total penalty: ", penalty