#ifndef LANGUAGE_CLASSIFIER_H #define LANGUAGE_CLASSIFIER_H #include #include #include #include #include "collections.h" #include "language_features.h" #include "logistic_regression.h" #include "tokens.h" #include "string_utils.h" #include "trie.h" #define LANGUAGE_CLASSIFIER_FILENAME "language_classifier.dat" #define LANGUAGE_CLASSIFIER_COUNTRY_FILENAME "language_classifier_country.dat" typedef struct language_classifier { size_t num_labels; size_t num_features; trie_t *features; cstring_array *labels; matrix_t *weights; } language_classifier_t; typedef struct language_classifier_response { size_t num_languages; char **languages; double *probs; } language_classifier_response_t; // General usage language_classifier_t *language_classifier_new(void); language_classifier_t *get_language_classifier(void); language_classifier_t *get_language_classifier_country(void); language_classifier_response_t *classify_languages(char *address); void language_classifier_response_destroy(language_classifier_response_t *self); void language_classifier_destroy(language_classifier_t *self); // I/O methods language_classifier_t *language_classifier_load(char *path); bool language_classifier_save(language_classifier_t *self, char *output_dir); // Module setup/teardown bool language_classifier_module_setup(char *dir); void language_classifier_module_teardown(void); #endif