TEORIE E TECNICHE DEL RICONOSCIMENTO Parti del discorso Classificazione grammaticale Classificazione...

28
TEORIE E TECNICHE DEL RICONOSCIMENTO Parti del discorso Classificazione grammaticale Classificazione grammaticale in Python 1

Transcript of TEORIE E TECNICHE DEL RICONOSCIMENTO Parti del discorso Classificazione grammaticale Classificazione...

Page 1: TEORIE E TECNICHE DEL RICONOSCIMENTO Parti del discorso Classificazione grammaticale Classificazione grammaticale in Python 1.

TEORIE E TECNICHE DEL RICONOSCIMENTO

Parti del discorsoClassificazione grammaticale

Classificazione grammaticale in Python

1

Page 2: TEORIE E TECNICHE DEL RICONOSCIMENTO Parti del discorso Classificazione grammaticale Classificazione grammaticale in Python 1.

RESTRIZIONI SULLE POSIZIONI DELLE PAROLE

• La ragazza lesse rapidamente il libro– *Ragazza la lesse rapidamente il libro– *La ragazza lesse il rapidamente libro

• Inglese: *The Sue quickly read the book • Sottocategorie:

– *La ragazza arrivo’ il libro– conigliera, baleniera, teiera, ma: *virtuiera, *pazienzera

Page 3: TEORIE E TECNICHE DEL RICONOSCIMENTO Parti del discorso Classificazione grammaticale Classificazione grammaticale in Python 1.

CATEGORIE LESSICALI (PARTI DEL DISCORSO)

• NOMI (tavolo, Simona)• VERBI (camminare, mangiare, colpire)• AGGETTIVI (rosso, rapido)• AVVERBI (probabilmente, subito)• PRONOMI (io, lui, ci)• ARTICOLI (il, la, un)• PREPOSIZIONI (di, a, con)• CONGIUNZIONI (e, ma, o)• [Italiano]: INTERIEZIONI (ahi! )

Page 4: TEORIE E TECNICHE DEL RICONOSCIMENTO Parti del discorso Classificazione grammaticale Classificazione grammaticale in Python 1.

ALCUNE DISTINZIONI

• PARTI DEL DISCORSO VARIABILI / INVARIABILI– L’uomo cammina / camminava

• PARTI DEL DISCORSO APERTE / CHIUSE– Aperte: nomi, verbi, aggettivi, avverbi– Chiuse: articoli, pronomi, preposizioni,

congiunzioni

Page 5: TEORIE E TECNICHE DEL RICONOSCIMENTO Parti del discorso Classificazione grammaticale Classificazione grammaticale in Python 1.

CORPORA IN CUI LE PAROLE SONO ANNOTATE CON LA LORO PDD

• In molti dei corpora piu’ recenti (a partire dal Brown corpus), e particolarmente in quelli usati per la lessicografia, i token vengono classificati con la loro parte di discorso– Brown corpus: fatto a mano– BNC, LIP: fatto automaticamente

• Queste informazioni possono essere usate per associare parti del discorso ai lemmi

Page 6: TEORIE E TECNICHE DEL RICONOSCIMENTO Parti del discorso Classificazione grammaticale Classificazione grammaticale in Python 1.

IL BROWN CORPUS

• Il primo corpus in formato elettronico moderno (Francis and Kucera, 1961)

• 500 testi, ognuno 2 000 parole• Analisi SINCRONICA dell’Inglese Americano:

testi di 15 generi (fantascienza, romanzi, articoli scientifici, reportage a stampa)

• Annotata la parte del discorso di tutte le parole (87 classi)

Page 7: TEORIE E TECNICHE DEL RICONOSCIMENTO Parti del discorso Classificazione grammaticale Classificazione grammaticale in Python 1.

MARKUP NEL BROWN CORPUS

Television/NN has/HVZ yet/RB to/TO work/VB out/RP a/AT living/RBG arrangement/NN with/IN jazz/NN ,/, which/VDT comes/VBZ to/IN the/AT medium/NN more/QL as/CS an/AT uneasy/JJ guest/NN than/CS as/CS a/AT relaxed/VBN member/NN of/IN the/AT family/NN ./.

Page 8: TEORIE E TECNICHE DEL RICONOSCIMENTO Parti del discorso Classificazione grammaticale Classificazione grammaticale in Python 1.

IL British National Corpus (BNC)

• Creato tra il 1991 ed il 1994 da un consorzio diretto da Oxford University Press

• Circa 100 milioni di parole• Classificazione grammaticale automatica usando il

classificatore CLAWS (parti corrette a mano successivamente)

• http://www.hcu.ox.ac.uk/BNC

Page 9: TEORIE E TECNICHE DEL RICONOSCIMENTO Parti del discorso Classificazione grammaticale Classificazione grammaticale in Python 1.

9

LO SCHEMA DI CLASSIFICAZIONE (TAGSET)

• La scelta dello schema di classificazione grammaticale usato ha grande importanza

• Occorre un equilibrio tra– Codificare piu’ informazioni possibili sul contesto

(= avere una classificazione quanto piu’ fine possibile)

– Facilitare il compito dei classificatori (= ridurre il numero di tags)

Page 10: TEORIE E TECNICHE DEL RICONOSCIMENTO Parti del discorso Classificazione grammaticale Classificazione grammaticale in Python 1.

10

Il tagset Penn Treebank (semplificazione del tagset Brown)

Page 11: TEORIE E TECNICHE DEL RICONOSCIMENTO Parti del discorso Classificazione grammaticale Classificazione grammaticale in Python 1.

11

Verb inflection tags

Page 12: TEORIE E TECNICHE DEL RICONOSCIMENTO Parti del discorso Classificazione grammaticale Classificazione grammaticale in Python 1.

12

The entire Penn Treebank tagset

Page 13: TEORIE E TECNICHE DEL RICONOSCIMENTO Parti del discorso Classificazione grammaticale Classificazione grammaticale in Python 1.

13

UCREL C5

Page 14: TEORIE E TECNICHE DEL RICONOSCIMENTO Parti del discorso Classificazione grammaticale Classificazione grammaticale in Python 1.

14

Tagsets per l’italiano

Si-TAL (Pisa, Venezia, IRST, ....)

PAROLE

TEXTPRO (dopo)

Page 15: TEORIE E TECNICHE DEL RICONOSCIMENTO Parti del discorso Classificazione grammaticale Classificazione grammaticale in Python 1.

15

Il tagset di SI-TAL

Page 16: TEORIE E TECNICHE DEL RICONOSCIMENTO Parti del discorso Classificazione grammaticale Classificazione grammaticale in Python 1.

POS TAGGED CORPORA IN NLTK

>>> tagged_token = nltk.tag.str2tuple('fly/NN') >>> tagged_token('fly', 'NN') >>> tagged_token[0] 'fly' >>> tagged_token[1] 'NN'

>>> nltk.corpus.brown.tagged_words() [('The', 'AT'), ('Fulton', 'NP-TL'), ('County', 'NN-TL'), ...]

Page 17: TEORIE E TECNICHE DEL RICONOSCIMENTO Parti del discorso Classificazione grammaticale Classificazione grammaticale in Python 1.

Exploring tagged corpora

• Ch.5, p. 184-189

Page 18: TEORIE E TECNICHE DEL RICONOSCIMENTO Parti del discorso Classificazione grammaticale Classificazione grammaticale in Python 1.

ALTRI CORPORA ANNOTATI CON PDD

• NLTK:• WAC Corpora:

– English: UKWAC– Italian: ITWAC

Page 19: TEORIE E TECNICHE DEL RICONOSCIMENTO Parti del discorso Classificazione grammaticale Classificazione grammaticale in Python 1.

CLASSIFICAZIONE GRAMMATICALE

Giuseppe legge il giornale

Giuseppe/NNP legge/VBZ il/DT giornale/NN

Page 20: TEORIE E TECNICHE DEL RICONOSCIMENTO Parti del discorso Classificazione grammaticale Classificazione grammaticale in Python 1.

Classificazione grammaticale: metodi

• Lookup (NLTK, 5.4)• Regular expression (NLTK, 5.4)

Page 21: TEORIE E TECNICHE DEL RICONOSCIMENTO Parti del discorso Classificazione grammaticale Classificazione grammaticale in Python 1.

CLASSIFICAZIONE GRAMMATICALE: IL PROBLEMA DELL’AMBIGUITA’

• Molte forme di parola possono essere associate con parti del discorso diverse:– STATO sia sostantivo (LO STATO ITALIANO) che

verbo (NON SONO STATO IO)

Page 22: TEORIE E TECNICHE DEL RICONOSCIMENTO Parti del discorso Classificazione grammaticale Classificazione grammaticale in Python 1.

AMBIGUITA’: LEGGE1

1 Norma, espressa dagli organi legislativi dello Stato, che stabilisce diritti e doveri dei cittadini Legge delega, che viene emessa dal potere esecutivo su delega del potere legislativo entro un ambito ben precisato Legge ponte, emessa in attesa di un'altra più organica A norma, a termini di legge, secondo ciò che la legge prescrive.2 (est.) Complesso delle norme costituenti l'ordinamento giuridico di uno Stato: la legge è uguale per tutti Essere fuori della legge, non essere garantito dalla legge o non sentirsi a essa soggetto Dettar legge, imporre a tutti la propria volontà.3 Scienza giuridica: laurea in legge; dottore in legge; facoltà di legge Uomo di legge, specialista nella scienza giuridica.4 Autorità giudiziaria: ricorrere alla legge In nome della legge, formula con cui i rappresentanti dell'autorità giudiziaria intimano a qc. di obbedire a un comando della stessa: in nome della legge, aprite!5 (est.) Ogni norma che regola la condotta individuale o sociale degli uomini: le leggi della società.6 (est.) Regola fondamentale di una tecnica, di un'arte e sim.: le leggi della pittura.7 Relazione determinata e costante fra le quantità variabili che entrano in un fenomeno: le leggi della matematica, della fisica.

Page 23: TEORIE E TECNICHE DEL RICONOSCIMENTO Parti del discorso Classificazione grammaticale Classificazione grammaticale in Python 1.

AMBIGUITA’: LEGGE2

leggerev. tr. (pres. io lèggo, tu lèggi; pass. rem. io lèssi, tu leggésti; part. pass. lètto)1 Riconoscere dai segni della scrittura le parole e comprenderne il significato: imparare, insegnare a leggere; leggere a voce alta (ass.) Fare lettura, dedicarsi alla lettura: trascorro gran parte della giornata leggendo.2 Interpretare certi segni convenzionali o naturali: i ciechi leggono con le dita; leggere un diagramma (fig.) Leggere la mano, ricavare dati sul carattere e sul destino di qc. basandosi sulle linee della mano.3 (lett.) Interpretare uno scritto, un passo: i critici dell'Ottocento leggevano erroneamente questa strofa (est.) Interpretare, valutare scritti, eventi e sim. secondo particolari criteri: leggere un film in chiave ironica.4 (fig.) Intuire i pensieri e le intenzioni di qc.: gli si legge il terrore sul volto.

Page 24: TEORIE E TECNICHE DEL RICONOSCIMENTO Parti del discorso Classificazione grammaticale Classificazione grammaticale in Python 1.

25

FREQUENZA + MORFOLOGIA + CONTESTO

• I POS taggers risolvono il problema dell’ambiguita’ usando una combinazione di informazioni su– FREQUENZA (FREQUENCY)

• I poured FLOUR/NN into the bowl.• Peter should FLOUR/VB the baking tray

– INFORMAZIONI MORFOLOGICHE • Check out this week podcast from DeJedi with all your

favourite RAGGATASTIC/JJ? jungle riddims.

– CONTESTO (CONTEXT)• I saw the new/JJ PLAY/NN in the theater.• The boy will/MD PLAY/VBP in the garden.

Page 25: TEORIE E TECNICHE DEL RICONOSCIMENTO Parti del discorso Classificazione grammaticale Classificazione grammaticale in Python 1.

26

The importance of context

• Secretariat/NNP is/VBZ expected/VBN to/TO race/VB tomorrow/NN

• People/NNS continue/VBP to/TO inquire/VB the/DT reason/NN for/IN the/DT race/NN for/IN outer/JJ space/NN

Page 26: TEORIE E TECNICHE DEL RICONOSCIMENTO Parti del discorso Classificazione grammaticale Classificazione grammaticale in Python 1.

Come determinare la categoria di un token

• Per discussione ulteriore, vedi NLTK book, 5.7

Page 27: TEORIE E TECNICHE DEL RICONOSCIMENTO Parti del discorso Classificazione grammaticale Classificazione grammaticale in Python 1.

Classificazione di PDD in NLTK

DEFAULT POS TAGGER: nltk.pos_tag

>>> text = nltk.word_tokenize("And now for something completely different")>>> nltk.pos_tag(text) [('And', 'CC'), ('now', 'RB'), ('for', 'IN'), ('something', 'NN'), ('completely', 'RB'), ('different', 'JJ')]

Page 28: TEORIE E TECNICHE DEL RICONOSCIMENTO Parti del discorso Classificazione grammaticale Classificazione grammaticale in Python 1.

TEXTPRO

• La suite di tools piu’ usata per l’Italiano• Include un POS tagger• http://textpro.fbk.eu/• Demo