18
TEORIE E TECNICHE DEL RICONOSCIMENTO Espressioni regolari in Python Uso di espressioni regolari in NLP 1

TEORIE E TECNICHE DEL RICONOSCIMENTO Espressioni regolari in Python Uso di espressioni regolari in NLP 1

Embed Size (px)

Citation preview

Page 1: TEORIE E TECNICHE DEL RICONOSCIMENTO Espressioni regolari in Python Uso di espressioni regolari in NLP 1

TEORIE E TECNICHE DEL RICONOSCIMENTO

Espressioni regolari in PythonUso di espressioni regolari in NLP

1

Page 2: TEORIE E TECNICHE DEL RICONOSCIMENTO Espressioni regolari in Python Uso di espressioni regolari in NLP 1

Espressioni regolari

• Cosa sono: un linguaggio sviluppato per eseguire ricerche su testi– E per operare TRASFORMAZIONI su questi testi

sulla base di queste ricerche• Esempio: espressione per cercare tutte le

parole in un corpus che finiscono in ‘ed’– [w for w in wordlist if re.search(‘ed$’,w)]

Page 3: TEORIE E TECNICHE DEL RICONOSCIMENTO Espressioni regolari in Python Uso di espressioni regolari in NLP 1

Principali caratteristiche del linguaggio delle espressioni regolari

• Disgiunzione – [0-9]– \d

• Ripetizione– [0-9]+

• Negazione– [^5]

Page 4: TEORIE E TECNICHE DEL RICONOSCIMENTO Espressioni regolari in Python Uso di espressioni regolari in NLP 1

Metacaratteri• Base: [,],+,*,^• Metacaratteri che specificano caratteri non stampabili

– \n \t• Metacaratteri che specificano disgiunzioni particolarmente comuni

– \d (= [0-9])– \s (= [ \t\n\r\f\v])– \w (= [a-zA-Z0-9_])– . = ‘qualsiasi carattere’

• Metacaratteri che specificano negazioni– \D (= [^0-9])– \S

• Ripetizione:– Home-?brew– a/{1,3}b

Page 5: TEORIE E TECNICHE DEL RICONOSCIMENTO Espressioni regolari in Python Uso di espressioni regolari in NLP 1

Altri metacaratteri

• Fine stringa: $– ‘ed$’

• Inizio stringa: ^– ‘^..j..’

Page 6: TEORIE E TECNICHE DEL RICONOSCIMENTO Espressioni regolari in Python Uso di espressioni regolari in NLP 1

Backlash

• Un metacarattere usato per includere metacaratteri nelle espressioni regolari– Per cercare ‘*’: \*– Per cercare i punti: \.

Page 7: TEORIE E TECNICHE DEL RICONOSCIMENTO Espressioni regolari in Python Uso di espressioni regolari in NLP 1

Espressioni regolari in Python

• Libreria: re– import re

• Match:– search()

Page 8: TEORIE E TECNICHE DEL RICONOSCIMENTO Espressioni regolari in Python Uso di espressioni regolari in NLP 1

Uso di search()

[w for w in wordlist if re.search(‘ed$’,w)]

Page 9: TEORIE E TECNICHE DEL RICONOSCIMENTO Espressioni regolari in Python Uso di espressioni regolari in NLP 1

search() con altri metacaratteri

Nltk cap.3, p 12

Page 10: TEORIE E TECNICHE DEL RICONOSCIMENTO Espressioni regolari in Python Uso di espressioni regolari in NLP 1

Altri tipi di match

• match()– Cerca pattern all’inizio di una parola

• findall()– Cerca tutte le istanze del pattern

Page 11: TEORIE E TECNICHE DEL RICONOSCIMENTO Espressioni regolari in Python Uso di espressioni regolari in NLP 1

Uso di findall()

Nltk cap.3, p 13

Page 12: TEORIE E TECNICHE DEL RICONOSCIMENTO Espressioni regolari in Python Uso di espressioni regolari in NLP 1

findall() per stemming

>>> re.findall(r'^.*(?:ing|ly|ed|ious|ies|ive|es|s|ment)$', 'processing')['processing']

>>> re.findall(r'^(.*)(ing|ly|ed|ious|ies|ive|es|s|ment)$', 'processing')[('process', 'ing')]

Page 13: TEORIE E TECNICHE DEL RICONOSCIMENTO Espressioni regolari in Python Uso di espressioni regolari in NLP 1

findall() per stemming

Nltk cap.3, p 15

Page 14: TEORIE E TECNICHE DEL RICONOSCIMENTO Espressioni regolari in Python Uso di espressioni regolari in NLP 1

‘top level’ e ‘pattern level’

• Finora abbiamo visto l’uso di operazioni di ricerca in re al ‘top level’

• In realta’ queste operazioni sono implementate utilizzando operazioni a piu’ basso livello che data una espressione regolare ne compilano un oggetto di tipo ‘pattern’

Page 15: TEORIE E TECNICHE DEL RICONOSCIMENTO Espressioni regolari in Python Uso di espressioni regolari in NLP 1

compile() e match()

• p = re.compile(‘[a-z]+’)• m = p.match(‘gatto’)• m.group()• m.span()

Page 16: TEORIE E TECNICHE DEL RICONOSCIMENTO Espressioni regolari in Python Uso di espressioni regolari in NLP 1

Livello di modulo o livello di pattern

• Se l’espressione regolare e’ usata in un solo punto del codice, meglio espressioni ad alto livello

• Altrimenti compilare

Page 17: TEORIE E TECNICHE DEL RICONOSCIMENTO Espressioni regolari in Python Uso di espressioni regolari in NLP 1

Normalizzazione e tokenizzazione usando espressioni regolari

• L’uso principale delle espressioni regolari in linguistica computazionale e’ nel preprocessing dei testi:– Normalizzazione (= eliminazione di ‘rumore’,

adozione di forme standard)– Tokenizzazione

Page 18: TEORIE E TECNICHE DEL RICONOSCIMENTO Espressioni regolari in Python Uso di espressioni regolari in NLP 1

Tokenizzazione

• NLTK, cap. 3, p.17