def create_character_classification_count_matrix(): ''' This function do the following: 1. Creates a character classifier with 90 training examples 2. Runs a test with 10 test examples for every character. The results are put in a matrix M so element M[i][j] contains the number of test examples for the character with index i that are classified to be the character with index j. ''' extracor = SimpleImageFeatureExtractor(nr_of_divisions=11, size_classification_factor=3.4) training_examples, test_examples = extracor.extract_training_and_test_examples(File(File(File(".."),".."),"character_examples").getCanonicalPath(), nr_of_training_examples=90, nr_of_test_examples=10) classifier = CharacterClassifier(training_examples, nr_of_hmms_to_try=1, fraction_of_examples_for_test=0, train_with_examples=False, initialisation_method=SpecializedHMM.InitMethod.count_based) alphabet = get_example_alphabet() classification_count_matrix = zeros(len(alphabet),len(alphabet)) for label, examples in test_examples: character = label.lower() character_index = alphabet.index(character) for example in examples: classified_character = classifier.classify_character_string(example).lower() classified_character_index = alphabet.index(classified_character) count = classification_count_matrix[character_index][classified_character_index] classification_count_matrix[character_index][classified_character_index] = count + 1 return classification_count_matrix
def create_character_classification_count_matrix(): ''' This function do the following: 1. Creates a character classifier with 90 training examples 2. Runs a test with 10 test examples for every character. The results are put in a matrix M so element M[i][j] contains the number of test examples for the character with index i that are classified to be the character with index j. ''' extracor = SimpleImageFeatureExtractor(nr_of_divisions=11, size_classification_factor=3.4) training_examples, test_examples = extracor.extract_training_and_test_examples( File(File(File(".."), ".."), "character_examples").getCanonicalPath(), nr_of_training_examples=90, nr_of_test_examples=10) classifier = CharacterClassifier( training_examples, nr_of_hmms_to_try=1, fraction_of_examples_for_test=0, train_with_examples=False, initialisation_method=SpecializedHMM.InitMethod.count_based) alphabet = get_example_alphabet() classification_count_matrix = zeros(len(alphabet), len(alphabet)) for label, examples in test_examples: character = label.lower() character_index = alphabet.index(character) for example in examples: classified_character = classifier.classify_character_string( example).lower() classified_character_index = alphabet.index(classified_character) count = classification_count_matrix[character_index][ classified_character_index] classification_count_matrix[character_index][ classified_character_index] = count + 1 return classification_count_matrix
def add_matricis(m1,m2): ''' Returns r = m1 + m2, where m1 and m2 are two matrices of the same size. The following will property will hold: r(i,j) = m1(i,j) + m2(i,j) ''' r = zeros(len(m1), len(m1[0])) for i in range(len(m1)): for j in range(len(m1[0])): r[i][j] = m1[i][j] + m2[i][j] return r
def add_matricis(m1, m2): ''' Returns r = m1 + m2, where m1 and m2 are two matrices of the same size. The following will property will hold: r(i,j) = m1(i,j) + m2(i,j) ''' r = zeros(len(m1), len(m1[0])) for i in range(len(m1)): for j in range(len(m1[0])): r[i][j] = m1[i][j] + m2[i][j] return r
def create_character_classification_count_matrix_from_several_tests(nr_of_tests=10): ''' This function runs the function create_character_classification_count_matrix nr_of_tests times. The sum of all resulting matrices is returned. The test examples are selected randomly so create_character_classification_count_matrix does not return the same result every time. ''' alphabet_size = len(get_example_alphabet()) result_sum = zeros(alphabet_size, alphabet_size) for i in range(nr_of_tests): result = create_character_classification_count_matrix() result_sum = add_matricis(result_sum, result) return result_sum
def create_character_classification_count_matrix_from_several_tests( nr_of_tests=10): ''' This function runs the function create_character_classification_count_matrix nr_of_tests times. The sum of all resulting matrices is returned. The test examples are selected randomly so create_character_classification_count_matrix does not return the same result every time. ''' alphabet_size = len(get_example_alphabet()) result_sum = zeros(alphabet_size, alphabet_size) for i in range(nr_of_tests): result = create_character_classification_count_matrix() result_sum = add_matricis(result_sum, result) return result_sum