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
Beispiel #2
0
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
Beispiel #4
0
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
Beispiel #6
0
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