Merge pull request #186 from openvenues/degree_symbol_ordinal_suffix

Degree symbol ordinal suffix
This commit is contained in:
Al Barrentine
2017-04-19 20:39:22 -04:00
committed by GitHub
24 changed files with 76 additions and 37 deletions

View File

@@ -1,3 +1,3 @@
federico|fco|fcº
francisco|fco|fcº|franc
federico|fco|fcº|fc°
francisco|fco|fcº|franc|fc°
maria|mª|m.a|m.ª

View File

@@ -1,2 +1,2 @@
exterior|ext|ex
número exterior|no ext|# ext|nº ext|n ext|núm ext|númr ext|numr ext|númro ext|numro ext|núm.ro ext|nr ext|num.ro ext|nro ext|n.ro ext|no ex|# ex|nº ex|n.º ex|núm ex|númr ex|numr ex|númro ex|numro ex|núm.ro ex|nr ex|num.ro ex|nro ex|n.ro ex
número exterior|no ext|# ext|nº ext|n° ext|n.º ext|n.° ext|núm ext|númr ext|numr ext|númro ext|numro ext|núm.ro ext|nr ext|num.ro ext|nro ext|n.ro ext|no ex|# ex|nº ex|n.º ex|n.° ex|núm ex|númr ex|numr ex|númro ex|numro ex|núm.ro ex|nr ex|num.ro ex|nro ex|n.ro ex

View File

@@ -1,4 +1,4 @@
bajo|bjo|bo|bº
bajo|bjo|bo|bº|b°
bajos|bjos|bjs
planta baja|pb|pl baja
planta primera|pl primera

View File

@@ -1 +1 @@
sin número|s / n|sin numero|s.n.|s.n|s n|sn|s / nº|s.nº|snº|s / no
sin número|s / n|sin numero|s.n.|s.n|s n|sn|s / nº|s / n°|s.nº|s.n°|snº|sn°|s / no

View File

@@ -1 +1 @@
número|#|num|núm|no|numero|№|nº|n|númr|numr|númro|numro|núm.ro|nr|num.ro|nro|n.ro|nr.º|nmro|nmr.o|nmrº|nmr
número|#|num|núm|no|numero|№|nº|n°|n.º|n.°|númr|numr|númro|numro|núm.ro|nr|num.ro|nro|n.ro|nrº|nr°|nr.º|nr.°|nmro|nmr.o|nmrº|nmr°|nmr.º|nmr.°

View File

@@ -105,7 +105,7 @@ reyes
san|s
santa|stª|st.ª|sta|st.a
sant|st
santo|stº|sto|st.o|st.º
santo|stº|st°|sto|st.o|st.º|st.°
sargento|sarg|sgto|sargto
sargento ayudante|sarg ay|sgto ay|sargto ay
sargento mayor|sm|s.m.|s.m|s m|sarg my|sgto my|sargto my

View File

@@ -2,7 +2,7 @@ aldea
ampliación|amplicacion|ampl|amp
auzoa
barriada|barda
barrio|bo|brio|brrio|bº|b|b /|br
barrio|bo|brio|brrio|bº|b°|b.º|b.°|b /|br
barrios|bos|brios|brrios
bloque|blque|bloq|blq|bl|bq|blo
colonia|col

View File

@@ -71,7 +71,7 @@ particular|parti
partida|ptda
pasadizo|pzo
pasaje|psaje|psj
paseo|pº|po|pso|pseo|pas|ps|p|p.o|p.º
paseo|pº|p°|po|pso|pseo|pas|ps|p|p.o|p.º|p.°
paseo maritimo|psmar|ps mar
paso
pasillo|psllo

View File

@@ -4,7 +4,7 @@ casa
consultorio|cn
departamento|dpto|dept|dep|dto|depto
interior|int|in
número interior|no int|# int|nº int|№ int|n.º int|núm int|númr int|numr int|númro int|numro int|núm.ro int|nr int|num.ro int|nro int|n.ro int|no in|# in|nº in|№ in|n.º in|núm in|númr in|numr in|númro in|numro in|núm.ro in|nr in|num.ro in|nro in|n.ro in
número interior|no int|# int|nº int|n° int|№ int|n.º int|n.° int|núm int|númr int|numr int|númro int|numro int|núm.ro int|nr int|num.ro int|nro int|n.ro int|no in|# in|nº in|n° in|№ in|n.º in|n.° in|núm in|númr in|numr in|númro in|numro in|núm.ro in|nr in|num.ro in|nro in|n.ro in
letra
lote|lt
oficina|of|ofc

View File

@@ -1 +1 @@
numéro|nº|#|№|n.º|no|num|numero|numr|num.ro|nr|nro|n.ro
numéro|nº|n°|#|№|n.º|n.°|no|num|numero|numr|num.ro|nr|nro|n.ro

View File

@@ -1,2 +1,2 @@
livello
piano|pº|p|p.o|p.nº|p.no|pnº|pno
piano|pº|p°|p.º|p.°|p.o|p.nº|p.n°|p.no|pnº|pn°|pno

View File

@@ -1 +1 @@
numero|nº|no|n.º|n.o|n|#|№
numero|nº|n°|no|n.º|n.°|n.o|n|#|№

View File

@@ -1 +1 @@
sem número|sem numero|sn|s.n.|s.n|s / n|s n|s / nº|s.nº|snº|s / no
sem número|sem numero|sn|s.n.|s.n|s / n|s n|s / nº|s / n°|s.nº|s.n°|snº|sn°|s / no

View File

@@ -1 +1 @@
número|#|num|núm|no|numero|№|nº|n|númr|numr|númro|numro|núm.ro|nr|num.ro|nro|n.ro|nr.º|nmro|nmr.o|nmrº|nmr
número|#|num|núm|no|numero|№|nº|n°|n.º|n.°|númr|numr|númro|numro|núm.ro|nr|num.ro|nro|n.ro|nr.º|nr.°|nrº|nr°|nmro|nmr.o|nmrº|nmr°|nmr.º|nmr.°

View File

@@ -35,20 +35,20 @@ embaixador|emb
eminencia|ema|em.a
eminentissimo|emmo|em.mo
enfermeira|enfª|enfa|enf.ª|enf.a
enfermeiro|enfº|enfo|enf|enf.º|enf.o
enfermeiro|enfº|enf°|enfo|enf|enf.º|enf.°|enf.o
engenheira|engª|enga|eng.ª|eng.a
engenheiro|engº|eng|eng|engo|eng.o
engenheiro|engº|eng°|eng.º|eng.°|eng|engo|eng.o
excelencia|exª|exa|ex.ª|ex.a
excelentissima|exmª|exma|ex.mª|ex.ma
excelentissimo|exmº|exmo|ex.mº|ex.mo
excelentissimo|exmº|exm°|exmo|ex.mº|ex.m°|ex.mo
frei|fr
general|gen|gal|g.al
governador|gov|govdor|govd.or|gov.dor
ilustrissima|ilmª|ilma|il.mª|il.ma
ilustrissimo|ilmº|ilmo|il.mº|il.mo
ilustrissimo|ilmº|ilm°|ilmo|il.mº|il.m°|il.mo
infante|inf
irmã|irma|imª|ima|im
irmão|irmao|imº|imo|im
irmão|irmao|imº|im°|imo|im
juiz|jz
maestra|mta|mtra|mstra
maestro|mto|mtro|mstro
@@ -69,7 +69,7 @@ padre|pe|p.e
pastor|pr
prefeito|pref
presidente|presid|pres
professor|prof|profº
professor|prof|profº|prof°
professora|profa|prof.a|profª|prof.ª
professoras|profas
professores|profs
@@ -78,7 +78,7 @@ reverendo|revdo|rev.do
reverendissima|revma|rev.ma
reverendissimo|revmo|rev.mo
santa|stª|sta|st.ª|st.a
santo|stº|sto|st|st.º|st.o
santo|stº|st°|sto|st|st.º|st.°|st.o
são|sao|s
sargento|sarg|sgto|sargto
sargento ajudante|sarg ajte|sarg aj.te

View File

@@ -1,4 +1,4 @@
bairro|b|bº|bo|brº|bro
bairro|b|bº|b°|bo|brº|br°|bro
distrito|dtto|dist
divisao|div
quadra|q|qd

View File

@@ -4,7 +4,7 @@ autoestrada|auto estrada|auto estr|autoestr
avenida|av|ava|ave
avenida marginal|ave marg|av marg|ava marg
azinhaga|az
bairro|b|bº|bo|brº|bro
bairro|b|bº|b°|bo|brº|br°|bro
beco|bc|bco
calçada|calcada|cc
calçadinha|caclcadinha|ccnh

View File

@@ -1 +1 @@
număr|numar|nr|nº|#|№|no
număr|numar|nr|nº|n°|#|№|no

View File

@@ -722,6 +722,7 @@
- ".º"
- "º"
- "o"
- "°"
"1":
- "ᵉʳ"
- "er"
@@ -730,10 +731,12 @@
- ".º"
- "º"
- "o"
- "°"
"2":
- ".º"
- "º"
- "o"
- "°"
"3":
- "ᵉʳ"
- "er"
@@ -742,30 +745,37 @@
- ".º"
- "º"
- "o"
- "°"
"4":
- ".º"
- "º"
- "o"
- "°"
"5":
- ".º"
- "º"
- "o"
- "°"
"6":
- ".º"
- "º"
- "o"
- "°"
"7":
- ".º"
- "º"
- "o"
- "°"
"8":
- ".º"
- "º"
- "o"
- "°"
"9":
- ".º"
- "º"
- "o"
- "°"
-
gender: "f"
suffixes:

View File

@@ -749,33 +749,43 @@
"0":
- "º"
- "o"
- "°"
"1":
- "º"
- "o"
- "°"
"2":
- "º"
- "o"
- "°"
"3":
- "º"
- "o"
- "°"
"4":
- "º"
- "o"
- "°"
"5":
- "º"
- "o"
- "°"
"6":
- "º"
- "o"
- "°"
"7":
- "º"
- "o"
- "°"
"8":
- "º"
- "o"
- "°"
"9":
- "º"
- "o"
- "°"
-
gender: "f"
suffixes:

View File

@@ -884,33 +884,43 @@
"0":
- "º"
- "o"
- "°"
"1":
- "º"
- "o"
- "°"
"2":
- "º"
- "o"
- "°"
"3":
- "º"
- "o"
- "°"
"4":
- "º"
- "o"
- "°"
"5":
- "º"
- "o"
- "°"
"6":
- "º"
- "o"
- "°"
"7":
- "º"
- "o"
- "°"
"8":
- "º"
- "o"
- "°"
"9":
- "º"
- "o"
- "°"
-
gender: "f"
suffixes:

View File

@@ -764,10 +764,20 @@ static inline bool expand_affixes(string_tree_t *tree, char *str, char *lang, to
return add_affix_expansions(tree, str, lang, token, prefix, suffix, options);
}
static inline bool normalize_ordinal_suffixes(string_tree_t *tree, char *str, char *lang, token_t token, libpostal_normalize_options_t options) {
static inline bool normalize_ordinal_suffixes(string_tree_t *tree, char *str, char *lang, token_t token, size_t i, token_t prev_token, libpostal_normalize_options_t options) {
size_t token_digit_len = possible_ordinal_digit_len(str + token.offset, token.len);
size_t len_ordinal_suffix = ordinal_suffix_len(str + token.offset, token.len, lang);
if (len_ordinal_suffix == 0) return false;
bool ret = false;
if (len_ordinal_suffix == 0 || token_digit_len + len_ordinal_suffix < token.len) {
return false;
} else if (len_ordinal_suffix == token.len && i > 0 && prev_token.len > 0) {
size_t prev_token_digit_len = possible_ordinal_digit_len(str + prev_token.offset, prev_token.len);
ret = prev_token_digit_len == prev_token.len;
} else {
ret = true;
}
cstring_array *strings = tree->strings;
// Add the original form first. When this function returns true,
@@ -779,12 +789,14 @@ static inline bool normalize_ordinal_suffixes(string_tree_t *tree, char *str, ch
char *expansion = char_array_get_string(key);
cstring_array_add_string(strings, expansion);
char_array_destroy(key);
return true;
return ret;
}
static inline void add_normalized_strings_tokenized(string_tree_t *tree, char *str, token_array *tokens, libpostal_normalize_options_t options) {
cstring_array *strings = tree->strings;
token_t prev_token = (token_t){0, 0, 0};
for (size_t i = 0; i < tokens->n; i++) {
token_t token = tokens->a[i];
bool have_phrase = false;
@@ -803,7 +815,7 @@ static inline void add_normalized_strings_tokenized(string_tree_t *tree, char *s
break;
}
if (normalize_ordinal_suffixes(tree, str, lang, token, options)) {
if (normalize_ordinal_suffixes(tree, str, lang, token, i, prev_token, options)) {
have_ordinal = true;
break;
}
@@ -814,6 +826,7 @@ static inline void add_normalized_strings_tokenized(string_tree_t *tree, char *s
}
string_tree_finalize_token(tree);
prev_token = token;
}
}

View File

@@ -1009,7 +1009,7 @@ static char *get_ordinal_suffix(char *numeric_string, size_t len, char *lang, ge
}
static size_t possible_ordinal_digit_len(char *str, size_t len) {
size_t possible_ordinal_digit_len(char *str, size_t len) {
uint8_t *ptr = (uint8_t *)str;
size_t idx = 0;
@@ -1053,11 +1053,6 @@ size_t ordinal_suffix_len(char *str, size_t len, char *lang) {
return 0;
}
size_t ordinal_digit_len = possible_ordinal_digit_len(str, len);
if (ordinal_digit_len == 0) {
return 0;
}
if (numex_table == NULL) {
log_error(NUMEX_SETUP_ERROR);
return 0;
@@ -1081,8 +1076,8 @@ size_t ordinal_suffix_len(char *str, size_t len, char *lang) {
phrase_t phrase = trie_search_suffixes_from_index(trie, str, len, prefix.node_id);
if (phrase.len == len - ordinal_digit_len) {
return len - ordinal_digit_len;
if (phrase.len + phrase.start == len) {
return phrase.len;
}
}
}

View File

@@ -149,6 +149,7 @@ VECTOR_INIT(numex_result_array, numex_result_t)
char *replace_numeric_expressions(char *str, char *lang);
numex_result_array *convert_numeric_expressions(char *str, char *lang);
size_t ordinal_suffix_len(char *s, size_t len, char *lang);
size_t possible_ordinal_digit_len(char *str, size_t len);
bool numex_table_write(FILE *file);
bool numex_table_save(char *filename);