TEORIE E TECNICHE DEL
RICONOSCIMENTO
Linguistica computazionale in Python:
- Dalle parole singole alle frasi
- Estrazione di informazioni
ESTRAZIONE DI INFORMAZIONI DA
TESTI: ENTITA’
SITE
LOC
CULTURE
RELAZIONI (PROPBANK)
a GM-Jaguar
pact
Arg0
*T*-1
that would give
Arg2
a GM-Jaguar pact that would give the U.S.
car maker an eventual 30% stake in the
British company.
Arg1
an eventual 30% stake in the
British company
the US car
maker
give(GM-J pact, US car maker, 30% stake)
ESTRAZIONE DI INFORMAZIONI
OLTRE LA PAROLA
• Tanto le entita’ quanto le relazioni sono
espresse tramite FRASI :
– Epigravettiano finale
– Valle del Serchia
ANALISI SINTATTICA E CHUNKING
• L’estrazione di frasi, in particolare di frasi
nominali, e’ generalmente detta CHUNKING
• Il chunking e’ una parte della cosidetta
ANALISI SINTATTICA di un enunciato, o
PARSING
• In questa lezione parliamo di chunking in
Python, nella prossima di parsing
CHUNKS E PAROLE
NP CHUNKING
[ The/DT market/NN ] for/IN [ systemmanagement/NN software/NN ] for/IN [
Digital/NNP ] [ 's/POS hardware/NN ] is/VBZ
fragmented/JJ enough/RB that/IN [ a/DT giant/NN
] such/JJ as/IN [ Computer/NNP Associates/NNPS ]
should/MD do/VB well/RB there/RB ./.
CHUNKING CON LE ESPRESSIONI
REGOLARI
• Le espressioni regolari discusse in precedenza
possono essere usate per trovare chunks usando
informazioni su POS tags:
– \w+/DT\s+\w+/NN
• Una serie di espressioni regolari del genere
costituisce una GRAMMATICA
• NLTK fornisce strumenti per facilitare lo sviluppo
di tali grammatiche
– NLTK, ch. 7.2, p. 265
• Chunk grammar
• Tag patterns
CHUNK GRAMMARS IN NLTK
>>> sentence = [("the", "DT"), ("little", "JJ"),
("yellow", "JJ"), ("dog", "NN"), ("barked", "VBD"),
("at", "IN"), ("the", "DT"), ("cat", "NN")]
>>> grammar = "NP: {<DT>?<JJ>*<NN>}”
>>> cp = nltk.RegexpParser(grammar)
>>> result = cp.parse(sentence)
>>> print result
(S
(NP the/DT little/JJ yellow/JJ dog/NN)
barked/VBD
at/IN
(NP the/DT cat/NN))
CHUNK GRAMMARS IN NLTK
>>> result.draw()
GRAMMATICHE PIU’ COMPLESSE
another/DT sharp/JJ dive/NN
trade/NN figures/NNS
any/DT new/JJ policy/NN measures/NNS
earlier/JJR stages/NNS
Panamanian/JJ dictator/NN Manuel/NNP Noriega/NNP
his/PRP$ Mansion/NNP House/NNP speech/NN
the/DT price/NN cutting/VBG
3/CD %/NN to/TO 4/CD %/NN
more/JJR than/IN 10/CD %/NN
the/DT fastest/JJS developing/VBG trends/NNS
's/POS skill/NN
USO DI CHUNKERS PER CORPUS ANALYSIS
>>> cp = nltk.RegexpParser('CHUNK: {<V.*> <TO> <V.*>}')
>>> brown = nltk.corpus.brown
>>> for sent in brown.tagged_sents():
... tree = cp.parse(sent)
... for subtree in tree.subtrees():
...
if subtree.node == 'CHUNK': print subtree
...
(CHUNK combined/VBN to/TO achieve/VB)
(CHUNK continue/VB to/TO place/VB)
(CHUNK serve/VB to/TO protect/VB)
(CHUNK wanted/VBD to/TO wait/VB)
(CHUNK allowed/VBN to/TO place/VB)
(CHUNK expected/VBN to/TO become/VB)
...
(CHUNK seems/VBZ to/TO overtake/VB)
(CHUNK want/VB to/TO buy/VB)
ANNOTAZIONE DI CHUNKS: IOB
SVILUPPO E VALUTAZIONE DI
CHUNKERS
• NLTK, 7.3
USO DI CLASSIFICATORI PER
CHUNKING
• NLTK, p.274
STRUTTURA ANNIDATA
• NLTK, 7.4
NAMED ENTITY RECOGNITION
• NLTK, 7.5
Scarica

slides - clic