Analisi delle dipendenze in NLP [spiegato con esempi]
Pubblicato: 2021-03-10L'elaborazione del linguaggio naturale è un concetto interdisciplinare che prende i fondamenti della linguistica computazionale e dell'intelligenza artificiale per capire come le lingue umane interagiscono con la tecnologia.
La PNL richiede una comprensione approfondita di varie terminologie e concetti per applicarli in modo tangibile agli scenari del mondo reale. Alcuni di questi concetti di base includono il tagging della parte del discorso (POS), la modellazione del linguaggio statistico, l'analisi sintattica, semantica e del sentimento, la normalizzazione, la tokenizzazione, l'analisi delle dipendenze e l'analisi del collegio elettorale, tra gli altri.
In questo articolo, esamineremo i fondamenti dell'analisi delle dipendenze per ottenere una prospettiva su come viene implementata nella PNL.
Sommario
Analisi delle dipendenze
Dependency Parsing (DP) si riferisce all'esame delle dipendenze tra le parole di una frase per analizzarne la struttura grammaticale. Sulla base di ciò, una frase è suddivisa in più componenti. Il meccanismo si basa sul concetto che esiste un legame diretto tra ogni unità linguistica di una frase. Questi collegamenti sono chiamati dipendenze.
Prendiamo ad esempio la frase " Preferisco il volo mattutino attraverso Denver".
Il diagramma seguente spiega la struttura delle dipendenze della frase:
Fonte
Le relazioni tra ogni unità linguistica, o parola, della frase, sono indicate utilizzando archi diretti in una struttura di dipendenza tipizzata. Come indicato nel diagramma, la radice dell'albero "preferire" costituisce la testa della frase sopra.
La relazione tra due parole qualsiasi è contrassegnata da un tag di dipendenza. Ad esempio, la parola "volo" modifica il significato del sostantivo "Denver". Pertanto, puoi notare una dipendenza da volo -> Denver dove il volo è la testa e Denver è il bambino o dipendente. È indicato da nmod che rappresenta un modificatore nominale.
Questo costituisce il caso di dipendenza tra ogni due parole in cui una funge da testa e l'altra è dipendente. Attualmente, la tassonomia della dipendenza universale V2 è composta da 37 relazioni sintattiche universali come specificato nella tabella seguente:
Etichetta di dipendenza | Descrizione |
acl | modificatore di clausola di un sostantivo (clausola adnominale) |
acl:recl | modificatore di clausola relativa |
avv | modificatore di proposizione avverbiale |
advmod | modificatore avverbiale |
advmod: emph | sottolineando la parola, intensificatore |
advmod: lmod | modificatore avverbiale locativo |
amo | modificatore aggettivale |
app | modificatore apposizioni |
aus | ausiliario |
aus: passa | ausiliario passivo |
Astuccio | marcatura del caso |
cc | congiunzione coordinativa |
cc:precong | precongiunto |
ccomp | complemento a clausole |
cfr | classificatore |
composto | composto |
composto:lvc | costruzione del verbo leggero |
composto:prt | particella del verbo frasale |
composto: redup | composti duplicati |
composto:svc | composti di verbi seriali |
cong | congiunto |
poliziotto | copula |
csgg | soggetto clausole |
csubj: passa | soggetto passivo clausole |
dip | dipendenza non specificata |
det | determinante |
det:numgov | quantificatore pronominale che regola il caso del sostantivo |
det:nummod | quantificatore pronominale che concorda nel caso con il sostantivo |
det:poss | determinante possessivo |
discorso | elemento del discorso |
dislocato | elementi dislocati |
espl | imprecazione |
espl: impers | imprecazione impersonale |
espl:passato | pronome riflessivo usato nel passivo riflessivo |
es: pv | clitico riflessivo con un verbo intrinsecamente riflessivo |
fisso | espressione multiparola fissa |
piatto | espressione multiparola piatta |
piatto: estero | parole straniere |
appartamento: nome | nomi |
va con | va con |
iogg | oggetto indiretto |
elenco | elenco |
marchio | marcatore |
nmod | modificatore nominale |
nmod:poss | modificatore nominale possessivo |
nmod:tmod | modificatore temporale |
nsubj | soggetto nominale |
nsubj: passa | soggetto nominale passivo |
nummod | modificatore numerico |
nummod:gov | modificatore numerico che regola il caso del sostantivo |
ogg | oggetto |
obl | nominale obliquo |
obl: agente | modificatore dell'agente |
obl: arg | argomento obliquo |
obl: lmod | modificatore locativo |
obl: tmod | modificatore temporale |
orfano | orfano |
paratassi | paratassi |
punto | punteggiatura |
riparando | disfluenza ignorata |
radice | radice |
vocativo | vocativo |
xcomp | complemento a clausole aperte |
Analisi delle dipendenze tramite NLTK
L'analisi delle dipendenze può essere eseguita utilizzando il pacchetto Natural Language Toolkit (NLTK), che è una raccolta di librerie e codici utilizzati nell'elaborazione statistica del linguaggio naturale (NLP) del linguaggio umano.
Possiamo usare NLTK per ottenere l'analisi delle dipendenze attraverso uno dei seguenti metodi:
- Parser probabilistico di dipendenza proiettiva : questi parser utilizzano la conoscenza del linguaggio umano raccolta da frasi analizzate manualmente per prevedere nuove frasi. È noto che commettono errori e lavorano con un insieme limitato di dati di addestramento.
- Parser Stanford : questo è un parser in linguaggio naturale implementato su Java. È necessario il parser Stanford CoreNLP per eseguire l'analisi delle dipendenze. Il parser include diverse lingue tra cui inglese, cinese, tedesco e arabo.
Ecco come puoi usare il parser:
da nltk.parse.stanford importa StanfordDependencyParser
path_jar = 'percorso_di/stanford-parser-full-2014-08-27/stanford-parser.jar'
path_models_jar = 'percorso_di/stanford-parser-full-2014-08-27/stanford-parser-3.4.1-models.jar'
dep_parser = StanfordDependencyParser(
percorso_a_jar = percorso_jar, percorso_a_jar_modelli = percorso_jar_modelli
)
result = dep_parser.raw_parse('Ho sparato a un elefante nel sonno')
dipendenza = risultato.successivo()
lista(dipendenza.triple())
L'output del programma di cui sopra è il seguente:
[
((u'shot', u'VBD'), u'nsubj', (u'I', u'PRP')),
((u'shot', u'VBD'), u'dobj', (u'elephant', u'NN')),
((u'elefante', u'NN'), u'det', (u'an', u'DT')),
((u'shot', u'VBD'), u'prep', (u'in', u'IN')),
((u'in', u'IN'), u'pobj', (u'sleep', u'NN')),
((u'sleep', u'NN'), u'poss', (u'my', u'PRP$'))
]
Analisi del collegio elettorale
L'analisi del collegio elettorale si basa su grammatiche prive di contesto. Qui, l'albero di analisi include frasi suddivise in sottofrasi, ciascuna appartenente a una categoria grammaticale. Ogni unità linguistica o parola in una frase agisce come un nodo terminale, che ha il suo nodo padre e un tag di parte del discorso.
Ad esempio, la frase "un gatto" e "una scatola sotto il letto" sono frasi nominali, mentre "scrivi una lettera" e "guida una macchina" sono frasi verbali.
Consideriamo una frase di esempio " Ho sparato a un elefante in pigiama". Ecco una rappresentazione grafica dell'albero di analisi del collegio elettorale:
Fonte
L'albero di analisi a sinistra si riferisce alla ripresa di un elefante in pigiama e l'albero di analisi a destra indica il soggetto che spara a un elefante mentre è in pigiama.
L'intera frase è suddivisa in sottofasi finché non rimangono parole terminali. VP denota una frase verbale e NP denota frasi nominali.
Analisi delle dipendenze vs analisi del collegio elettorale
L'analisi del collegio elettorale può essere implementata anche utilizzando il parser di Stanford. Analizza essenzialmente una determinata frase secondo il parser del collegio elettorale e successivamente converte l'albero di analisi del collegio in un albero delle dipendenze.
Se il tuo obiettivo è suddividere una frase in sottofrasi, dovresti implementare l'analisi del collegio elettorale. Tuttavia, se vuoi esplorare le dipendenze tra le parole in una frase, dovresti usare l'analisi delle dipendenze.
Checkout: idee e argomenti del progetto NLP
Conclusione
Se hai trovato utile questo articolo, dovresti dare un'occhiata alla certificazione PG di 6 mesi di upGrad in Machine Learning e NLP che offre tutoraggio personalizzato da esperti del settore di Flipkart, Gramener e Zee5.
Il programma è progettato per ingegneri, software/IT, dati e altri professionisti che desiderano prendere piede in Data Science e Machine Learning. Questa certificazione post-laurea di IIIT BBangalorethe vanta un aumento medio del salario del 58% è tutto ciò di cui hai bisogno per ottenere posizioni avanzate di analista dati, scienziato dati, ingegnere ML e ingegnere NLP nelle migliori aziende. Blocca il tuo posto oggi a soli Rs. 3.034 al mese!
Qual è l'uso dell'analisi delle dipendenze in NLP?
Nell'elaborazione del linguaggio naturale, l'analisi delle dipendenze è una tecnica utilizzata per identificare le relazioni semantiche tra le parole in una frase. I parser di dipendenza vengono utilizzati per mappare le parole in una frase ai ruoli semantici, identificando così le relazioni sintattiche tra le parole. L'analisi delle dipendenze è un approccio ben noto per l'analisi sintattica dei testi in linguaggio naturale a livello di struttura superficiale. In questo metodo, la struttura sintattica di una frase viene recuperata da una sequenza lineare di token di parola, analizzando le dipendenze sintattiche tra le parole e identificando la categoria sintattica di ciascuna parola.
Quali sono le applicazioni dell'analisi delle dipendenze?
Di seguito è riportato un elenco di diverse aree applicative in cui viene utilizzata l'analisi delle dipendenze. Uno degli usi principali dell'analisi delle dipendenze è nell'etichettatura semantica dei ruoli (SRL) e nell'estrazione di informazioni, che sono componenti dell'elaborazione del linguaggio naturale. L'analisi delle dipendenze viene utilizzata anche per il chunking sintattico e l'analisi dei collegi elettorali al di fuori delle attività NLP. L'analisi delle dipendenze è fondamentalmente diversa dall'analisi della struttura della frase, che mappa le parole in una frase al corrispondente marcatore di frase o struttura ad albero.
Qual è la differenza fondamentale tra l'analisi sintattica e l'analisi delle dipendenze?
La differenza tra parser sintattico e parser di dipendenza è che un parser di dipendenza crea un albero di analisi e un parser sintattico crea un albero di sintassi. L'analisi sintattica implica l'uso di regole predefinite per definire la sintassi e un parser di dipendenze, d'altra parte, può comprendere tutti i tipi di frasi e può anche gestire input ambigui. Un parser delle dipendenze può essere utilizzato per il riconoscimento di frasi, il chunking, l'analisi delle dipendenze, il chunking e l'analisi.