====== Esplorare un documento xml con le espressioni regolari ====== ===== Creazione della lista "dati" ===== import re file = open('testi/ldt-1.5.xml', 'r') dati = file.read() dati= re.findall(r'word id=\".*?\" form=\"(.*?)\" lemma=\"(.*?)\" postag=\"(.)(.)(.)(.)(.)(.)(.)(.)(.)', dati) print(dati[18]) print(dati[18][0]) parola_esempio=dati[18] print(parola_esempio[0]) print(parola_esempio[1]) print(parola_esempio[2]) print(parola_esempio[6]) // // ===== Struttura dei dati ===== L'oggetto "dati" creato con le espressioni regolari (r. 4) è una lista di oggetti (per la precisione di tuple python), ciascuno dei quali corrisponde a una parola del corpus. Ad es. il diciannovesimo elemento contenuto in "dati", visualizzabile con l'istruzione ''print dati[18]'', apparirà come ''('adspirate', 'adspiro', 'v', '2', 'p', 'p', 'm', 'a', '-', '-', '-')'', cioè //adspirate//, forma flessa appartenente al lemma //adspiro//, parte del discorso = verbo, persona = seconda, numero = plurale, tempo = presente, modo = imperativo, diatesi = attiva, genere = -, caso = -, grado = -. L'elemento xml corrispondente ha la forma seguente: Dato che l'espressione regolare che abbiamo utilizzato non registra né il campo ''id'' né le annotazioni sintattiche ''head'' e ''relation'', i campi degli oggetti-parola creati risultano organizzati secondo il seguente prospetto (i simboli dipendono dal sistema di annotazione del corpus LDT): * 0: forma * 1: lemma (identificazione del lessema) * 2: parte del discorso {**n** nome, **v** verbo, **t** participio, **a** aggettivo, **d** avverbio, **c** congiunzione, **r** preposizione, **p** pronome, **m** numerale, **i** interiezione, **e** esclamazione, **u** interpunto} * 3: persona {**1** prima, **2** seconda, **3** terza} * 4: numero {**s** singolare, **p** plurale} * 5: tempo {**p** presente, **i** imperfetto, **r** perfetto, **l** piuccheperfetto, **t** futuro perfetto, **f** futuro} * 6: modo {**i** indicativo, **s** congiuntivo, **n** infinito, **m** imperativo, **p** participio, **d** gerundio, **g** gerundivo, **s** supino} * 7: diatesi {**a** attiva, **p** passiva} * 8: genere {**m** maschile, **f** femminile, **n** neutro} * 9: caso {**n** nominativo, **g** genitivo, **d** dativo, **a** accusativo, **b** ablativo, **v** vocativo, **l** locativo} *10: grado {**c** comparativo, **s** superlativo} Per conoscere quindi il valore della categoria grammaticale di modo di una parola occorre quindi visualizzare il campo 6 (''parola_esempio[6]'', cf. r.11); il valore restituito, ossia 'm', indica il modo imperativo.