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