[api/compat] PR #465 redefined the language classifier response struct in the API and was casting between incompatible pointer types. Using the exported struct throughout.
This commit is contained in:
@@ -1567,7 +1567,7 @@ cstring_array *expand_address_phrase_option(char *input, libpostal_normalize_opt
|
|||||||
|
|
||||||
size_t len = strlen(input);
|
size_t len = strlen(input);
|
||||||
|
|
||||||
language_classifier_response_t *lang_response = NULL;
|
libpostal_language_classifier_response_t *lang_response = NULL;
|
||||||
|
|
||||||
if (options.num_languages == 0) {
|
if (options.num_languages == 0) {
|
||||||
lang_response = classify_languages(input);
|
lang_response = classify_languages(input);
|
||||||
@@ -1627,7 +1627,7 @@ cstring_array *expand_address_phrase_option(char *input, libpostal_normalize_opt
|
|||||||
kh_destroy(str_set, unique_strings);
|
kh_destroy(str_set, unique_strings);
|
||||||
|
|
||||||
if (lang_response != NULL) {
|
if (lang_response != NULL) {
|
||||||
language_classifier_response_destroy(lang_response);
|
libpostal_language_classifier_response_destroy(lang_response);
|
||||||
}
|
}
|
||||||
|
|
||||||
char_array_destroy(temp_string);
|
char_array_destroy(temp_string);
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ language_classifier_t *get_language_classifier(void) {
|
|||||||
return language_classifier;
|
return language_classifier;
|
||||||
}
|
}
|
||||||
|
|
||||||
void language_classifier_response_destroy(language_classifier_response_t *self) {
|
void language_classifier_response_destroy(libpostal_language_classifier_response_t *self) {
|
||||||
if (self == NULL) return;
|
if (self == NULL) return;
|
||||||
if (self->languages != NULL) {
|
if (self->languages != NULL) {
|
||||||
free(self->languages);
|
free(self->languages);
|
||||||
@@ -59,7 +59,7 @@ void language_classifier_response_destroy(language_classifier_response_t *self)
|
|||||||
free(self);
|
free(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
language_classifier_response_t *classify_languages(char *address) {
|
libpostal_language_classifier_response_t *classify_languages(char *address) {
|
||||||
language_classifier_t *classifier = get_language_classifier();
|
language_classifier_t *classifier = get_language_classifier();
|
||||||
|
|
||||||
if (classifier == NULL) {
|
if (classifier == NULL) {
|
||||||
@@ -88,7 +88,7 @@ language_classifier_response_t *classify_languages(char *address) {
|
|||||||
size_t n = classifier->num_labels;
|
size_t n = classifier->num_labels;
|
||||||
double_matrix_t *p_y = double_matrix_new_zeros(1, n);
|
double_matrix_t *p_y = double_matrix_new_zeros(1, n);
|
||||||
|
|
||||||
language_classifier_response_t *response = NULL;
|
libpostal_language_classifier_response_t *response = NULL;
|
||||||
bool model_exp = false;
|
bool model_exp = false;
|
||||||
if (classifier->weights_type == MATRIX_DENSE) {
|
if (classifier->weights_type == MATRIX_DENSE) {
|
||||||
model_exp = logistic_regression_model_expectation(classifier->weights.dense, x, p_y);
|
model_exp = logistic_regression_model_expectation(classifier->weights.dense, x, p_y);
|
||||||
@@ -129,7 +129,7 @@ language_classifier_response_t *classify_languages(char *address) {
|
|||||||
|
|
||||||
free(indices);
|
free(indices);
|
||||||
|
|
||||||
response = malloc(sizeof(language_classifier_response_t));
|
response = malloc(sizeof(libpostal_language_classifier_response_t));
|
||||||
response->num_languages = num_languages;
|
response->num_languages = num_languages;
|
||||||
response->languages = languages;
|
response->languages = languages;
|
||||||
response->probs = probs;
|
response->probs = probs;
|
||||||
|
|||||||
@@ -6,6 +6,8 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
#include "libpostal.h"
|
||||||
|
|
||||||
#include "collections.h"
|
#include "collections.h"
|
||||||
#include "language_features.h"
|
#include "language_features.h"
|
||||||
#include "logistic_regression.h"
|
#include "logistic_regression.h"
|
||||||
@@ -29,21 +31,14 @@ typedef struct language_classifier {
|
|||||||
} weights;
|
} weights;
|
||||||
} language_classifier_t;
|
} language_classifier_t;
|
||||||
|
|
||||||
|
|
||||||
typedef struct language_classifier_response {
|
|
||||||
size_t num_languages;
|
|
||||||
char **languages;
|
|
||||||
double *probs;
|
|
||||||
} language_classifier_response_t;
|
|
||||||
|
|
||||||
// General usage
|
// General usage
|
||||||
|
|
||||||
language_classifier_t *language_classifier_new(void);
|
language_classifier_t *language_classifier_new(void);
|
||||||
language_classifier_t *get_language_classifier(void);
|
language_classifier_t *get_language_classifier(void);
|
||||||
language_classifier_t *get_language_classifier_country(void);
|
language_classifier_t *get_language_classifier_country(void);
|
||||||
|
|
||||||
language_classifier_response_t *classify_languages(char *address);
|
libpostal_language_classifier_response_t *classify_languages(char *address);
|
||||||
void language_classifier_response_destroy(language_classifier_response_t *self);
|
void language_classifier_response_destroy(libpostal_language_classifier_response_t *self);
|
||||||
|
|
||||||
void language_classifier_destroy(language_classifier_t *self);
|
void language_classifier_destroy(language_classifier_t *self);
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ int main(int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
language_classifier_response_t *response = classify_languages(address);
|
libpostal_language_classifier_response_t *response = classify_languages(address);
|
||||||
if (response == NULL) {
|
if (response == NULL) {
|
||||||
printf("Could not classify language\n");
|
printf("Could not classify language\n");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ double test_accuracy(char *filename) {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
language_classifier_response_t *response = classify_languages(address);
|
libpostal_language_classifier_response_t *response = classify_languages(address);
|
||||||
if (response == NULL || response->num_languages == 0) {
|
if (response == NULL || response->num_languages == 0) {
|
||||||
printf("%s\tNULL\t%s\n", language, address);
|
printf("%s\tNULL\t%s\n", language, address);
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ char **libpostal_near_dupe_hashes_languages(size_t num_components, char **labels
|
|||||||
|
|
||||||
|
|
||||||
char **libpostal_place_languages(size_t num_components, char **labels, char **values, size_t *num_languages) {
|
char **libpostal_place_languages(size_t num_components, char **labels, char **values, size_t *num_languages) {
|
||||||
language_classifier_response_t *lang_response = place_languages(num_components, labels, values);
|
libpostal_language_classifier_response_t *lang_response = place_languages(num_components, labels, values);
|
||||||
if (lang_response == NULL) {
|
if (lang_response == NULL) {
|
||||||
*num_languages = 0;
|
*num_languages = 0;
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|||||||
@@ -670,7 +670,7 @@ cstring_array *near_dupe_hashes_languages(size_t num_components, char **labels,
|
|||||||
|
|
||||||
libpostal_normalize_options_t normalize_options = libpostal_get_default_options();
|
libpostal_normalize_options_t normalize_options = libpostal_get_default_options();
|
||||||
|
|
||||||
language_classifier_response_t *lang_response = NULL;
|
libpostal_language_classifier_response_t *lang_response = NULL;
|
||||||
|
|
||||||
if (num_languages == 0) {
|
if (num_languages == 0) {
|
||||||
lang_response = place_languages(num_components, labels, values);
|
lang_response = place_languages(num_components, labels, values);
|
||||||
|
|||||||
@@ -17,10 +17,10 @@ static inline bool is_address_text_component(char *label) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
language_classifier_response_t *place_languages(size_t num_components, char **labels, char **values) {
|
libpostal_language_classifier_response_t *place_languages(size_t num_components, char **labels, char **values) {
|
||||||
if (num_components == 0 || values == NULL || labels == NULL) return NULL;
|
if (num_components == 0 || values == NULL || labels == NULL) return NULL;
|
||||||
|
|
||||||
language_classifier_response_t *lang_response = NULL;
|
libpostal_language_classifier_response_t *lang_response = NULL;
|
||||||
|
|
||||||
char *label;
|
char *label;
|
||||||
char *value;
|
char *value;
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ typedef struct place {
|
|||||||
char *website;
|
char *website;
|
||||||
} place_t;
|
} place_t;
|
||||||
|
|
||||||
language_classifier_response_t *place_languages(size_t num_components, char **labels, char **values);
|
libpostal_language_classifier_response_t *place_languages(size_t num_components, char **labels, char **values);
|
||||||
|
|
||||||
place_t *place_new(void);
|
place_t *place_new(void);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user