[parser] remove geodb from address_parser_test, sort confusion matrix
This commit is contained in:
@@ -89,7 +89,6 @@ bool address_parser_test(address_parser_t *parser, char *filename, address_parse
|
|||||||
uint32_t truth_index = get_class_index(parser, truth);
|
uint32_t truth_index = get_class_index(parser, truth);
|
||||||
|
|
||||||
result->confusion[predicted_index * num_classes + truth_index]++;
|
result->confusion[predicted_index * num_classes + truth_index]++;
|
||||||
|
|
||||||
}
|
}
|
||||||
result->num_predictions++;
|
result->num_predictions++;
|
||||||
|
|
||||||
@@ -150,13 +149,6 @@ int main(int argc, char **argv) {
|
|||||||
|
|
||||||
log_info("transliteration module loaded\n");
|
log_info("transliteration module loaded\n");
|
||||||
|
|
||||||
if (!geodb_module_setup(NULL)) {
|
|
||||||
log_error("Could not load geodb dictionaries\n");
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
log_info("geodb module loaded\n");
|
|
||||||
|
|
||||||
if (!address_parser_load(address_parser_dir)) {
|
if (!address_parser_load(address_parser_dir)) {
|
||||||
log_error("Could not initialize parser\n");
|
log_error("Could not initialize parser\n");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
@@ -179,20 +171,26 @@ int main(int argc, char **argv) {
|
|||||||
|
|
||||||
printf("Confusion matrix:\n\n");
|
printf("Confusion matrix:\n\n");
|
||||||
uint32_t num_classes = parser->model->num_classes;
|
uint32_t num_classes = parser->model->num_classes;
|
||||||
for (uint32_t i = 0; i < num_classes; i++) {
|
|
||||||
for (uint32_t j = 0; j < num_classes; j++) {
|
|
||||||
if (i == j) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
uint32_t class_errors = results.confusion[i * num_classes + j];
|
|
||||||
|
|
||||||
if (class_errors > 0) {
|
size_t *confusion_sorted = uint32_array_argsort(results.confusion, num_classes * num_classes);
|
||||||
char *predicted = cstring_array_get_string(parser->model->classes, i);
|
|
||||||
char *truth = cstring_array_get_string(parser->model->classes, j);
|
|
||||||
|
|
||||||
printf("(%s, %s): %d\n", predicted, truth, class_errors);
|
for (ssize_t k = num_classes * num_classes - 1; k >= 0; k--) {
|
||||||
}
|
uint32_t idx = confusion_sorted[k];
|
||||||
|
|
||||||
|
uint32_t i = idx / num_classes;
|
||||||
|
uint32_t j = idx % num_classes;
|
||||||
|
|
||||||
|
uint32_t class_errors = results.confusion[idx];
|
||||||
|
|
||||||
|
if (i == j) continue;
|
||||||
|
|
||||||
|
if (class_errors > 0) {
|
||||||
|
char *predicted = cstring_array_get_string(parser->model->classes, i);
|
||||||
|
char *truth = cstring_array_get_string(parser->model->classes, j);
|
||||||
|
|
||||||
|
printf("(%s, %s): %d\n", predicted, truth, class_errors);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
free(results.confusion);
|
free(results.confusion);
|
||||||
@@ -200,5 +198,4 @@ int main(int argc, char **argv) {
|
|||||||
address_parser_module_teardown();
|
address_parser_module_teardown();
|
||||||
|
|
||||||
address_dictionary_module_teardown();
|
address_dictionary_module_teardown();
|
||||||
geodb_module_teardown();
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user