Created
August 21, 2017 19:47
-
-
Save cosmoscalibur/695779472fa32c16193639f96aec79b7 to your computer and use it in GitHub Desktop.
Convierte el reporte excel del DIVIPOLA a las listas de lemas de topónimos colombianos para diccionario hunspell.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /usr/bin/env bash | |
# Rutina elaborada por Edward Villegas Pulgarin (@cosmoscalibur en github). | |
# Genera lista de lemas de topónimos colombianos para diccionario hunspell a partir del reporte de DIVIPOLA. | |
# Realizado para la localización es_CO de [RLA-ES](https://github.com/sbosio/rla-es). | |
A=departamentos | |
B=municipios | |
C=centros_poblados | |
l=lista- | |
t=toponimos- | |
sc=sincabeceras.csv | |
function xls_a_categorias() { | |
# Se convierte reporte excel a archivo CSV. Filtros necesarios por codificación UTF-8. | |
soffice --convert-to csv --infilter=CSV:44,34,76,1 $1 | |
nombrexls="${1%.*}" | |
xlscsv="$nombrexls".csv | |
# Primeras dos filas son cabeceras y últimas dos filas son información de actualización. | |
# Se remueven. | |
tail -n +3 $xlscsv | head -n -2 > $sc | |
# Se ajusta el separador de las columnas "," -> , (cut solo recibe separador de 1 carácter). | |
sed -i 's/","/,/g' $sc | |
# Se extraen columnas acorde al tipo de ente territorial y se ordenan eliminando repetidos. | |
# 4: departamentos; 5: municipios; 6: centros poblados. | |
cut -d ',' -f 4 $sc | sort -u > $l$A | |
cut -d ',' -f 5 $sc | sort -u > $l$B | |
cut -d ',' -f 6 $sc | sort -u > $l$C | |
# Se remueven archivos auxiliares | |
rm $xlscsv $sc | |
} | |
function categoria_formato() { | |
sed -E -i \ | |
# Se remueven del nombre compuesto símbolos de puntuación y números arábigos. | |
-e 's/([[:punct:]]|[[:digit:]])+//g' \ | |
# Se descomponen los nombres compuestos. | |
-e 's/ +/\n/g' $l$1 | |
# Se ordena alfabéticamente el archivo eliminando repetidos y se remueven líneas vacías | |
sort -u $l$1 | sed '/^$/d' > $t$1.tmp | |
# Se remueven lemas de números romanos | |
sed -i -E '/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/d' $t$1.tmp | |
# El archivo original esta en mayúscula sostenida y se convierte a minúscula sostenida | |
cat $t$1.tmp | tr "[[:upper:]]" "[[:lower:]]" | tr "ÁÉÍÓÚÜÑ" "áéíóúüñ" > $t$1.txt | |
# Se convierte la minúscula inicial a mayúscula (convención de nombre propio) | |
sed -i -E -e 's/^(.)/\u\1/g' \ | |
# Se eliminan lemas comunes | |
-e '/^(De|Del|El|Fé|La|Los|Las|Paz|Río|San|Sur|Norte|Y|Ciudad|Ciudadela|Corregimiento|Montaña|Alto|Altos)$/d' \ | |
$t$1.txt | |
# Se eliminan archivos auxiliares | |
rm $l$1 $t$1.tmp | |
} | |
xls_a_categorias $1 | |
entes=($A $B $C) | |
for ente in ${entes[@]}; do | |
categoria_formato $ente | |
done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment