Utente:DnaX/Script catalogazione chiese

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

Per catalogare le pagine disambiguazione sulle chiese come Chiesa di San Rocco o Chiesa di San Giovanni Battista ho creato uno script per analizzare i link presenti ai comuni e generare automaticamente la provincia di appartenenza e la separazione tra regioni.

Gli script creati sono due, uno per estrarre i dati da due banche dati in formato csv che mantengono le associazioni tra comuni e provincie, l'altro per analizzare la pagina non ordinata e generare il testo già formattato da incollare nella pagina insieme alle voci non riconosciute (frazioni italiane, località straniere, nessun link alla località ecc).

Vedi questi edit:

Script[modifica | modifica wikitesto]

Script dati.sh[modifica | modifica wikitesto]

Serve per estrarre i dati di ogni comune. Vengono utilizzati i file scaricabili da qui.

#!/bin/bash

if [ $# == '2' ]
then
    PROV_CODE=`cat comuni.csv | grep -s -i ";$2[[:cntrl:]]" | cut -d ';' -f 1`
    if [ "$PROV_CODE" = "" ]; then
        exit 1
    fi
    case $1 in
    "--reg")
        cat regioni_province.csv | grep -s $PROV_CODE | sed "s/\([A-Z\-]*\);\([0-9]*\);\([A-Z \-]*\);\([0-9]*\);\([a-zA-Z' \-]*\);\([A-Z\-]*\)/\3/g"
        ;;
    "--prov")
        cat regioni_province.csv | grep -s $PROV_CODE | sed "s/\([A-Z\-]*\);\([0-9]*\);\([A-Z \-]*\);\([0-9]*\);\([a-zA-Z' \-]*\);\([A-Z\-]*\)/([[Provincia di \5|\6]])/g"
        ;;
    "--reg-prov")
        cat regioni_province.csv | grep -s $PROV_CODE | sed "s/\([A-Z\-]*\);\([0-9]*\);\([A-Z \-]*\);\([0-9]*\);\([a-zA-Z' \-]*\);\([A-Z\-]*\)/\3;([[Provincia di \5|\6]])/g"
        ;;
    esac
else
    PROV_CODE=`cat comuni.csv | grep -s -i ";$1[[:cntrl:]]" | cut -d ';' -f 1`
    if [ "$PROV_CODE" == "" ]; then
        exit 1
    fi
    cat regioni_province.csv | grep -s $PROV_CODE | sed "s/\([A-Z\-]*\);\([0-9]*\);\([A-Z \-]*\);\([0-9]*\);\([a-zA-Z' \-]*\);\([A-Z\-]*\)/Zona: \1\nRegione: \3\nProvincia: \5 (\6)/g"
fi

Uso: ./dati.sh "San Giuliano Terme" oppure ./dati.sh --prov "San Giuliano Terme"

Script categorizza.sh[modifica | modifica wikitesto]

Questo script serve a prendere in input la lista formattata e restituisce tutte le chiese con annessa provincia e raggruppate per regione, il tutto già formattato.

#!/bin/bash

ABRUZZO=''
BASILICATA=''
CALABRIA=''
CAMPANIA=''
EMILIA_ROMAGNA=''
FRIULI_VENEZIA_GIULIA=''
LAZIO=''
LIGURIA=''
LOMBARDIA=''
MARCHE=''
MOLISE=''
PIEMONTE=''
PUGLIA=''
SARDEGNA=''
SICILIA=''
TOSCANA=''
TRENTINO_ALTO_ADIGE=''
UMBRIA=''
VALLE_AOSTA=''
VENETO=''

echo -e "\e[1;37mVoci non rilevate:\e[0m"

while IFS= read -r line
do

    # skip empty line
    if [ -z "$line" ]; then
        continue
    fi

    TAG=`echo -n "$line" | grep -s -o -e "\[\[[a-zA-Z' ]*\]\]" | tail -n 1 | sed "s/\[\[\([a-zA-Z' ]*\)\]\]/\1/g"`

    # Try the form of [[Sonico (Italia)|Sonico]]
    if [ -z "$TAG" ]; then
        TAG=`echo -n "$line" | grep -s -o -E "\[\[[a-zA-Z|() ]*\]\]" | tail -n 1 | sed "s/\[\[\([a-zA-Z' ]*\) (Italia)|[a-zA-Z' ]*\]\]/\1/"`
    fi
    

    DATI=$(bash dati.sh --reg-prov "$TAG")

    REG=`echo "$DATI" | cut -d ';' -f 1`

    if [ -z "$REG" ]; then
        echo "$line"
        continue
    fi

    # Doesn't work with [[Sonico (Italia)|Sonico]]
    if [[ $string == *"(Italia)"* ]]; then
        STR=$(echo "$line" | sed "s/\[\[$TAG (Italia)|$TAG\]\]/[[$TAG (Italia)|$TAG]] `echo \"$DATI\" | cut -d ';' -f 2`/g")
    else
        STR=$(echo "$line" | sed "s/\[\[$TAG\]\]/[[$TAG]] `echo \"$DATI\" | cut -d ';' -f 2`/g")
    fi

    case $REG in
    "ABRUZZO")
        ABRUZZO="$ABRUZZO\n$STR"
        ;;
    "BASILICATA")
        BASILICATA="$BASILICATA\n$STR"
        ;;
    "CALABRIA")
        CALABRIA="$CALABRIA\n$STR"
        ;;
    "CAMPANIA")
        CAMPANIA="$CAMPANIA\n$STR"
        ;;
    "EMILIA-ROMAGNA")
        EMILIA_ROMAGNA="$EMILIA_ROMAGNA\n$STR"
        ;;
    "FRIULI-VENEZIA GIULIA")
        FRIULI_VENEZIA_GIULIA="$FRIULI_VENEZIA_GIULIA\n$STR"
        ;;
    "LAZIO")
        LAZIO="$LAZIO\n$STR"
        ;;
    "LIGURIA")
        LIGURIA="$LIGURIA\n$STR"
        ;;
    "LOMBARDIA")
        LOMBARDIA="$LOMBARDIA\n$STR"
        ;;
    "MARCHE")
        MARCHE="$MARCHE\n$STR"
        ;;
    "MOLISE")
        MOLISE="$MOLISE\n$STR"
        ;;
    "PIEMONTE")
        PIEMONTE="$PIEMONTE\n$STR"
        ;;
    "PUGLIA")
        PUGLIA="$PUGLIA\n$STR"
        ;;
    "SARDEGNA")
        SARDEGNA="$SARDEGNA\n$STR"
        ;;
    "SICILIA")
        SICILIA="$SICILIA\n$STR"
        ;;
    "TOSCANA")
        TOSCANA="$TOSCANA\n$STR"
        ;;
    "TRENTINO-ALTO ADIGE")
        TRENTINO_ALTO_ADIGE="$TRENTINO_ALTO_ADIGE\n$STR"
        ;;
    "UMBRIA")
        UMBRIA="$UMBRIA\n$STR"
        ;;
    "VALLE D'AOSTA")
        VALLE_AOSTA="$VALLE_AOSTA\n$STR"
        ;;
    "VENETO")
        VENETO="$VENETO\n$STR"
        ;;
    esac


done < "$1"

echo
echo -e "\e[1;37mVoci rilevate:\e[0m"

echo "=== [[Abruzzo]] ==="
echo -e "$ABRUZZO"

echo "=== [[Basilicata]] ==="
echo -e "$BASILICATA"

echo "=== [[Calabria]] ==="
echo -e "$CALABRIA"

echo "=== [[Campania]] ==="
echo -e "$CAMPANIA"

echo "=== [[Emilia-Romagna]] ==="
echo -e "$EMILIA_ROMAGNA"

echo "=== [[Friuli-Venezia Giulia]] ==="
echo -e "$FRIULI_VENEZIA_GIULIA"

echo "=== [[Lazio]] ==="
echo -e "$LAZIO"

echo "=== [[Liguria]] ==="
echo -e "$LIGURIA"

echo "=== [[Lombardia]] ==="
echo -e "$LOMBARDIA"

echo "=== [[Marche]] ==="
echo -e "$MARCHE"

echo "=== [[Molise]] ==="
echo -e "$MOLISE"

echo "=== [[Piemonte]] ==="
echo -e "$PIEMONTE"

echo "=== [[Puglia]] ==="
echo -e "$PUGLIA"

echo "=== [[Sardegna]] ==="
echo -e "$SARDEGNA"

echo "=== [[Sicilia]] ==="
echo -e "$SICILIA"

echo "=== [[Toscana]] ==="
echo -e "$TOSCANA"

echo "=== [[Trentino-Alto Adige]] ==="
echo -e "$TRENTINO_ALTO_ADIGE"

echo "=== [[Umbria]] ==="
echo -e "$UMBRIA"

echo "=== [[Valle d'Aosta]] ==="
echo -e "$VALLE_AOSTA"

echo "=== [[Veneto]] ==="
echo -e "$VENETO"

Uso: ./categorizza.sh lista.txt

L'output sarà diviso tra voci non rilevate e voci rilevate e categorizzate.

Update[modifica | modifica wikitesto]

  • 20/01/2020: gestione link [[Como (Italia)|Como]]

Affidabilità[modifica | modifica wikitesto]

Ci sono ancora alcune voci non rilevate, sono comunque una minima parte di tutto.

Esempi:

  • Viene analizzato sempre l'ultimo link trovato nella riga, ciò può creare errori
  • Voci senza link non vengono analizzate
  • Link diversi dai comuni italiani non rilevati (frazioni, località, città straniere)

In ogni caso sono da ricontrollare anche le voci categorizzate per correggere possibili errori. In ogni caso l'uso di questo script alleggerisce gran parte del lavoro! Può funzionare anche per altre tipologie di disambigue nei casi in cui c'è una lista la cui unica differenza cono i comuni.