[language_classifier] Language classifier structs, I/O and API

This commit is contained in:
Al
2016-01-10 01:20:17 -05:00
parent b85e454a58
commit 0558475a50
2 changed files with 334 additions and 0 deletions

55
src/language_classifier.h Normal file
View File

@@ -0,0 +1,55 @@
#ifndef LANGUAGE_CLASSIFIER_H
#define LANGUAGE_CLASSIFIER_H
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <stdbool.h>
#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, char *country);
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