Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica...

34
lezione 7 per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università di Pavia

Transcript of Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica...

Page 1: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

informatica di base per le discipline umanistiche

vito pirrelli

Istituto di Linguistica Computazionale CNR Pisa

Dipartimento di linguistica

Università di Pavia

Page 2: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

settima lezione: “percorrere” un testo

vito pirrelli

Istituto di Linguistica Computazionale CNR Pisa

Dipartimento di linguistica

Università di Pavia

Page 3: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

cosa vuol dire per un calcolatore leggere un testo? quando salviamo un file di testo, registriamo in formato binario la

sequenza specifica di lettere e delimitatori di cui si compone il testo nella memoria di massa del calcolatore

possiamo dire che il calcolatore legge un testo mentre lo salva? un possibile test per rispondere a questa domanda è quello di

chiedere al calcolatore se la parola “cane” sia mai stata usata nel testo e, se sì, dove è stata usata per la prima volta

per rispondere a queste semplici domande, al calcolatore non basta aver salvato il testo: deve scorrerlo

un’utile metafora per rappresentare il processo di lettura di un testo da parte del calcolatore è dunque questa: leggere significa scorrere dei caratteri in sequenza ed essere in grado di riconoscere degli “schemi ricorrenti”

questi schemi possono essere sillabe, parole o frasi, o ancora classi di sillabe, parole o frasi

il testo come percorso

Page 4: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

in WORD è possibile cercare una parola in un testo attivando la funzione “trova”

la parola da cercare dev’essere scritta in un’apposita finestrella di testo, che si apre attivando la funzione con un click

la funzione, una volta avviata, individua la prima ricorrenza della parola desiderata alla destra o alla sinistra del cursore

“trova” in WORD funziona dunque percorrendo il testo a partire dalla posizione corrente del cursore

la ricerca può avvenire in una direzione o nell’altra, a seconda che sia stato chiesto di percorrere il testo verso il basso (a destra del cursore) o verso l’alto (alla sua sinistra)

il testo come percorso (II)

(per saperne di più clicca sulle parole evidenziate!)

Page 5: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

la differenza di prospettiva (alto/basso, sinistra/destra) è dovuta a come immaginiamo sia organizzato il testo; se il testo è visto come una pura sequenza di parole, allora è naturale usare espressioni come “cerca verso destra” o “cerca verso sinistra”; se invece immaginiamo che il testo sia strutturato in paragrafi e pagine disposti l’uno sull’altro in verticale, diventa più intuitivo parlare di alto e basso, su e giù

entrambe le espressioni alludono, comunque, alla stessa metafora del testo come percorso

il testo come percorso (III)

Page 6: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

possiamo percorrere un testo alla ricerca di “classi” di sequenze di caratteri assai più complicate delle singole parole, ad esempio:

“tutte le parole che iniziano con la lettera maiuscola”

“le stringhe di numeri la cui seconda cifra è 2”

“le linee di testo che terminano con un punto esclamativo”

ecc. le cosiddette “espressioni regolari” ci consentono di esprimere in

modo immediato queste classi ricorda che all’interno di un’espressione regolare qualsiasi

delimitatore è un carattere

uno spazio vuoto è un carattere

un accapo è un carattere

un tabulatore è un carattere

il testo come percorso (IV)

Page 7: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

un’espressione regolare (erre) è un’espressione logica che descrive una particolare sequenza di caratteri

ad esempio, all’interno di una erre possiamo usare

l’operatore logico AND per indicare una concatenazione

“c AND a”: “cercami la sequenza ca”

l’operatore logico OR per indicare una disgiunzione

“cane OR gatto”: “cercami nel testo la parola cane o la parola gatto

l’operatore logico NOT per escludere certe sequenze

“ ” AND NOT(“c”)”: “cercami qualsiasi parola che non inizi per c”

per semplificare la scrittura (ma non necessariamente la lettura!) delle espressioni regolari è stata introdotta una sintassi particolare

le espressioni regolari

Page 8: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

per convenzione, negli esempi seguenti una erre è sempre racchiusa tra “slash”: “/”

l’operatore logico di concatenazione (AND) è omesso:

/ca/: “cercami la sequenza ca”

/n a/: “cercami la sequenza formata da una n seguita da uno spazio vuoto, seguito da una a”

esempio: “un asino” l’operatore logico di disgiunzione (OR) è indicato in due modi diversi:

con le parentesi quadre “[ ]” per esprimere la disgiunzione tra caratteri singoli

/[abc]/: “cercami una a, una b o una c”

da un “pipe”, “|”, per esprimere la disgiunzione tra stringhe

/cane|gatto/: “cercami nel testo la parola cane o la parola gatto

la sintassi delle espressioni regolari

Page 9: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

l’operatore logico NOT è espresso dal simbolo (prefissato) “^” racchiuso tra parentesi quadre “[ ]”

/ [^aeiou]/: “cercami una (semi)consonante ad inizio di parola” letteralmente: “cercami un carattere preceduto da uno spazio vuoto e

che non sia né una a, né una e, né una i, né una o e né una u”

la sintassi delle espressioni regolari

Page 10: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

una erre può contenere simboli che indicano quante volte una certa sequenza deve essere trovata

questi simboli, detti quantificatori, sono tutti postfissi, cioè seguono immediatamente a destra la sequenza alla quale si riferiscono:

operatore “?” di opzionalità

/pa?/: “cercami una p, seguita opzionalmente da una a”

esempi: “p”, “pa”

operatore “*”

/pa*/: “cercami una p, seguita opzionalmente da una o più a”

esempi: “p” , “pa”, “paa”, “paaa” ...

operatore “+”

/pa+/: “cercami una p, seguita da almeno una a”

esempi: “pa”, “paa”, “paaa” , “paaaa” ...

quante volte?

Page 11: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

/<carattere>{n,m}/: il <carattere> deve occorrere almeno n volte e al massimo m volte

/<carattere>{n,}/: il <carattere> deve comparire almeno n volte

/<carattere>{n}/: il <carattere> deve comparire esattamente n volte

quantificatori “evoluti”

Page 12: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

l’ambito di un quantificatore in una erre è la sequenza alla quale il quantificatore si riferisce

un quantificatore può fare riferimento a un solo carattere o a una sequenza di caratteri

nel primo caso, il quantificatore segue semplicemente a destra

nel secondo caso, la sequenza che definisce l’ambito va raggruppata tra parentesi tonde

esempi:

/pa*/: “p” , “pa”, “paa”, “paaa” ...

/(pa)*/: “pa” , “papa”, “papapa”, “papapapa” ...

“ambito” nei quantificatori

Page 13: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

in una erre è possibile definire in modo molto semplice una classe di caratteri ordinati secondo una scala, indicando tra parentesi quadre soltanto il primo e l’ultimo elemento della scala, separati da un trattino

esempi:

/[a-z]/: tutti i caratteri dell’alfabeto compresi tra la a e la z

/[0-9]/: tutte le cifre decimali dallo 0 al 9

classi di caratteri

Page 14: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

utili abbreviazioni

RE Classe di caratteri equivalente

/\d/ /[0-9]/

/\w/ /[a-zA-Z0-9_]/

/\s/ /[ \t\n]/

/\D/ /[^0-9]

/\W /[^a-zA-Z0-9_]/

/\S/ /[^ \t\n]/

caratteri particolari:

\t tabulatore

\n accapo

Page 15: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

esiste un carattere speciale che ha la funzione di “jolly”, cioè può corrispondere a qualsiasi carattere (con la sola eccezione dell’accapo)

questo carattere speciale è il punto: “.” esempi:

/p./: “pp” , “pa”, “pe”, “pi”, “pr”, “pn”, “p ”, “p?” ...

il carattere “jolly”

Page 16: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

esiste un carattere che ha la funzione di trasformare un carattere speciale in un carattere “ordinario”

questo carattere speciale è il “backslash”, anche noto come carattere “escape” “\”

esempi:

/p./: “pp” , “pa”, “pe”, “pi”, “pr”, “pn”, “p ”, “p?” ...

/p\./: “p.”

il carattere “normalizza”

Page 17: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

nel descrivere una sequenza con una erre è possibile ancorarla a un punto specifico del testo: ad esempio, è possibile dire che la sequenza in questione deve apparire all’inizio della riga, oppure alla fine, oppure ad inizio di parola

questi punti di riferimento testuali, detti “ancore”, sono:

“^” : indica l’inizio riga

“$”: indica il fine riga

“\<”: indica l’inizio di parola

“\>”: indica il fine parola

“\b”: indica il confine di parola

“\B”: indica qualsiasi carattere con la sola eccezione del confine di parola

“ancore”

Page 18: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

“ancore” (II)

¶Esempio · di · testo · incolonnato,¶¶con · marcatori · in · evidenza...

inizio riga“^”

fine riga“$”

confine parola“\b”

inizio parola“\<“

fine parola“\>”

corpo di parola“\B”

Page 19: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

ricorda: un’espressione regolare descrive una particolare sequenza di caratteri nel testo

l’uso più comune dell’espressioni regolari è quello di evidenziare tutte le sequenze di caratteri nel testo per le quali la erre è verificata (a partire da quella più vicina al cursore)

questo uso è chiamato in letteratura “pattern matching” (dall’inglese “corrispondenza con uno schema”)

nota che due espressioni regolari diverse possono individuare gli stessi punti del testo, ma evidenziare sequenze differenti!

/ [^aeiou]/:

“cercami una (semi)consonante ad inizio di parola”

/ [^aeiou][a-z]+/:

“cercami una parola che inizi per (semi)consonante”

“pattern matching”

Page 20: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

“pattern matching” (II)

Page 21: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

“pattern matching” (III)

Page 22: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

importanza delle ancore

Page 23: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

importanza delle ancore (II)

Page 24: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

importanza delle ancore (III)

Page 25: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

abbiamo visto che le parentesi all’interno di una erre servono a definire l’ambito di un quantificatore

esiste tuttavia un ruolo ulteriore svolto dalle parentesi (anche in assenza di un quantificatore):

quello di memorizzare l’espressione contenuta in parentesi in una variabile temporanea

il contenuto della variabile può essere “richiamato” con l’espressione “\<numero>”, dove <numero> esprime la posizione della coppia di parentesi a partire da sinistra:

1 = contenuto della prima coppia di parentesi

2 = contenuto della seconda coppia di patentesi

3 = contenuto della terza coppia di patentesi

ecc.

il “doppio ruolo” delle parentesi

Page 26: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

il contenuto della variabile “richiamato” con l’espressione “\<numero>” può essere a sua volta modificato, come illustra la funzione “trova e sostituisci” speciale in WORD…

il “doppio ruolo” delle parentesi (II)

Page 27: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

il “doppio ruolo” delle parentesi (III)

Page 28: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

alcune limitazioni

la negazione può avere come ambito solo insiemi di caratteri, non sequenze (o stringhe), infatti:

1) /[^zione] \> /: nega la disgiunzione

2) /[^(zione)] \> /: ha la stessa semantica di /[^zione]\>/

3) /[^z][^i][^o][^n][^e] \> /: nega non solo tutte le stringhe in zione, ma anche molte altre (ad es. quelle in sione), infatti …

rappresentando una concatenazione di negazioni, la 3) nega qualsiasi parola che contenga almeno una e in ultima posizione, una n in penultima, una o in terzultima, e così via.

perché?

Page 29: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

alcune limitazioni (II)

la semantica di una erre che escluda tutte le parole che finiscono in zione può essere parafrasata come segue:

trovami tutte le parole che terminano in zione

ed escludile dalla ricerca per ottenere questo risultato abbiamo dunque bisogno:

1) di individuare tutte le parole in zione,

2) e poi di escluderle l’espressione che cerchiamo dovrebbe compendiare due operazioni

incompatibili logicamente:

prima la selezione delle parole in zione

poi la loro de-selezione

Page 30: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

alcune limitazioni (III)

è possibile ottenere lo stesso risultato con i seguenti passi:

selezioniamo tutte le parole che terminano in zione

aggiungiamo a ciascuna di esse un’etichetta speciale (ad es. ‘T’)

selezioniamo tutte e sole le parole che non sono seguite dalla etichetta ‘T’

Page 31: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

marca parole in “zione”

Page 32: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

escludi parole in “zioneT”

Page 33: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

espressioni regolari su internet

http://www.cacas.org/java/gnu/regexp/reapplet.html

Page 34: Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università

lezione 7

fine settima lezione

settima lezione “percorrere” un testo

(lezione 8)