Elaborazione del linguaggio naturale
Analisi sintattica: parsing
CHAOS
Maria Teresa PAZIENZA
a.a. 2006-07
Sommario
• Strumenti per la Sintassi
• Introduzione
• Context-Free Grammar (CFG)
• Definizione
• CFG per la sintassi
• Limiti e problemi
• Parsing
– Parsing a costituenti
•
•
•
•
•
•
Parsing Top-Down
Parsing Bottom-Up
Parsing misto (left-corner)
Chart parsing
Programmazione dinamica
Algoritmo di Earley
– Parsing a dipendenze
• Cenni
• Conversione
– Parser Evaluation
– Chaos
CHAOS: A robust syntactic parser for Italian and for English
The system implements a modular and lexicalised approach
to the syntactic parsing problem.
It is based on the notion of eXtended Dependency Graph
(XDG) that is considered as a useful representation
mechanism in a shallow parsing approach. The system
offers a collection of modules for designing parsing
architectures.
The overall system is seen as a JAVA library offering a
standard representation for modules implemented in
different programming languages.
CHAOS: eXtended Dependency Graph
example
CHAOS: A robust syntactic parser for Italian and for English
The pool of modules consists of:
• a tokenizer, matching words from character streams
• a yellow page look-up module that matches named entities existing in
catalogues
• a morphologic analyser that attaches (possibly ambiguous) syntactic
categories and morphological interpretations to each word
• a named entities matcher that recognizes complex named entities
according to special purpose grammars
• a rule-based part-of-speech tagger
• a POS disambiguation module that resolves potential conflicts among
the results of the POS tagger and the morphologic analyser
• a chunker
• a verb argument detector
• a shallow syntactic analyser
Chaos: Parsing sintattico IT
L’analisi viene rappresentata in una struttura unica:
XDG (grafo costituenti-dipendenze)
costituenti : chunks
Icd :
Dipend. Verbali
inter-chunks dependecies
Dipend. non verbali
plausibilità
Testa verbale della frase
Costituente complesso
Chaos: Parsing sintattico IT
Approccio ibrido:
COSTITUENTI + DIPENDENZE
1.
Vengono identificati i chunks (particolare tipo di costituenti)
2.
Vengono identificate le dipendenze
Vantaggi:
-
Il raggruppamento in chunks facilita l’analisi a dipendenze
-
L’analisi a dipendenze consente di gestire long distance dependecies ed altri fenomeni
-
L’utilizzo della plausibilità (certezza nell’identificare la dipendenza) permette di gestire
l’ambiguità
Tre moduli fondamentali:
-
Chunker :
identifica i chunks
-
Verb Shallow Analyzer (VSA) :
identifica le dipendenze verbali principali
-
Syntactic Shallow Analyzer (SSA) : identifica altre dipendenze
Chaos: Parsing sintattico IT
CHAOS Chunker


[/data/KB/it/Chunker]
Chunk

I chunk sono un particolare tipo di costituenti

Nucleo non ricorsivo di sintagmi

Non essendoci ricorsività, i chunk possono essere riconosciuti da FSA

Informazione pregressa necessaria:

Morfologia

POS tagging
Come funziona il Chaos Chunker:

Basato su prototipi di chunk in Prolog

Analizza le parole da sinistra a destra, raggruppandole nel chunk più lungo
possibile riconosciuto applicando le regole

Individua:

Governatore: parola che veicola il significato del chunk

Testa sintattica (head): parola che lega il chunk al resto della frase
Chaos: Parsing sintattico IT
CHAOS Chunker

Come identificare un chunk ?


[/data/KB/it/Chunker]
Nella pratica, il chunk è il più grande costituente possibile che lascia la
frase aperta a tutte le ammissibili interpretazioni sintattiche.
ESEMPI:

“[Il bel gatto] mangia il topo”
“Il bel gatto” è chunk in quanto la sequenza DET-ADJ-NC è l’unica aggregazione possibile,
ovvero l’ADJ è legato sempre come specificazione dell’NC in tutte le frasi italiane

“[Il gatto] [del vicino] magia il topo”
“Il gatto del vicino” è un costituente, ma non è un chunk, in quanto la sequenza DET-NCPREP-NC non è l’unica interpretazione sintattica possibile. Ovvero esistono sequenze
di questo tipo in cui PREP-NC non sono specificazioni di NC, ma di un altro elemento
della frase, ad esempio: “Il gatto nel prato mangia”, “nel prato” specifica “mangia”

“[Il gatto] [interessato] al topo”
“Il gatto interessato” non è un chunk, in quanto la sequenza DET-NC-ADJ non garantisce
tutte le interpretazioni sintattiche possibili. Ovvero, il PREP-NC seguente in alcuni casi
specifica DET-NC (es.“Il gatto interessato al topo”), in altri ADJ (“Il gatto interessato del
vicino”)
Chaos: Parsing sintattico IT
CHAOS Chunker

[/data/KB/it/Chunker]
Prototipi Prolog per il riconoscimento di semplici chunk aggettivali:
constituent_class([_cst1], 'Agg', _mor, 1, 1):adjective(_cst1),
common_morfology(_cst1, _mor).
constituent_class([_cst1, _cst2], 'Agg', _mor, 1, 2):adverb(_cst1),
adjective(_cst2),
common_morfology(_cst1, _cst2, _mor).
constituent_class([_cst1, _cst2, _cst3], 'Agg', _mor, 1, 1):adjective(_cst1),
coordinative_conjunction(_cst2),
\+(comma(_cst2)),
adjective(_cst3),
common_morfology(_cst1, _cst3, _mor).
ADJ
ADV
ADJ
ADJ
COORD
ADJ
Chaos: Parsing sintattico IT
CHAOS Chunker
[/data/KB/it/Chunker]
COMPLEX CONSTITUENT
(chunk)
head
SIMPLE CONSTITUENT
(sotto-costituenti del chunk)
governor
Chaos: Parsing sintattico IT
CHAOS ChunkTypes in IT
Agg
Avv
CongCo
CongSub
Nom
Prep
VerFin
VerGer
VerInf
VerPart
VerPred
VerNom
VerPrep
?
Chunk aggettivali
Chunk avverbiale
Chunk coordinativo
Chunk subordinativo
Chunk nominale
Chunk preposizionale
Chunk verbale finito
Chunk verbale gerundivo
Chunk verbale infinito
Chunk verbale participio
Chunk verbale predicativo aggettivale
Chunk verbale nominale
Chunk verbale preposizionale
Chunk sconosciuti
Chaos: Parsing sintattico IT
CHAOS VSA

[/data/KB/it/SubcatLexicon]
Identifica le dipendeze (icd) verbali all’interno della struttura

Utilizza un lessico di patterns di sottocategorizzazione verbale (LIFUV.lex)

1844 sottocategorizzazioni

Codificate manualmente ed apprese automaticamente da corpora

Una dipendenza ricavata dal lessico ha plausibilità=1
pattern(accrescere,[[(oggetto,Post)]]).
pattern(accucciare,[[]]).
pattern(accumulare,[[(su,Post)],[(oggetto,Post)],[(oggetto,Post)]]).
pattern(acquisire,[[(oggetto,Post),(a,Post)],[(oggetto,Post)]]).
pattern(acquistare,[[(in,Post)],[(oggetto,Post),(da,Post)]]).
pattern(adagiare,[[(su,Post)],[(oggetto,Post),(su,Post)]]).
pattern(addolcire,[[(oggetto,Post)],[(oggetto,Post)]]).
Chaos: Parsing sintattico IT
CHAOS SSA


[/data/KB/it/SSG]
Identifica le dipendeze (icd) che non sono state identificate dall’VSA:

Modificatori verbali: espressioni temporali / spaziali …

Modificatori nominali: sintagmi preposizionali / specificatori aggettivali …
Come funziona:

E’ un parser specifico basato su una grammatica discontinua

Consente di trovare dipendenze tra chunk non adiacenti (gap)  anche long
distance dependencies

Ambiguità: più dipendenze possono essere prodotte per uno stesso chunk

Viene utilizzata la pausibilità per modellare l’ambiguità
Chaos: Parsing sintattico IT
CHAOS ICDs Types
(VSA+SSA)
Grammatical Subject
Grammatical Object
Indirect Object
Verb Preposition Modifier
Verb Adverb Modifier
gruppo Nominale Nominale
gruppo Nominale Preposizionale
gruppo Preposizionale Preposizionale
gruppo Nominale Aggettivo
gruppo Nominale Participio
gruppo Preposizionale Aggettivo
gruppo Preposizionale Participio
gruppo Aggettivo Preposizionale
gruppo Avverbio Preposizionale
Congiunzione coordinativa tra costituenti
gruppo Costituente Congiunzione
gruppo Costituente Subordinata
gruppo Verbo Congiunzione Subordinativa
V_Sog
V_Obj
V_NP
V_PP
V_Adv
NP_NP
NP_PP
PP_PP
NP_Adj
NP_VPart
PP_Adj
PP_VPart
Adj_PP
Adv_PP
x_Cong_x
x_Cong
x_Sub
V_CSub
Chaos: Valutazione


Utilizzare :

Le misure per i parser a costituenti per valutare i chunk

Le misure per i parser a dipendenze per valutare gli ICD

Non considerare le plausibilità nella valutazione
Esempio:
GOLD:
Chunks:
Prec
= 5/5 = 1
Rec
= 5/5 = 1
Lab Prec = 4/5= 0.8
Lab Rec = 4/5= 0.8
CHAOS:
ICD:
Prec
= 1/5 = 0.2
Rec
= 1/3 =0.3
Progetto : Note

ATTENZIONE: è necessario aggiornare i tipi di ICD di Chaos prima
di effettuare la seconda parte del progetto!!

Scaricare il file icdTypes.xml dal sito web del progetto:
http://ai-nlp.info.uniroma2.it/pennacchiotti/teaching/icdTypes.xml

Sovrascrivere il vecchio file icdTypes.xml in chaos.jar con quello scaricato

Chaos.jar si trova in /lib

icdTypes.xml ha nel JAR il seguente percorso:
chaos/alternatives/data/it
Progetto : Note

Costrutti frasali complessi in Chaos:

Congiunzione
Progetto : Note

Costrutti frasali complessi in Chaos:

Subordinazione
Scarica

NLP_6