Analiza dependenței în NLP [explicat cu exemple]
Publicat: 2021-03-10Procesarea limbajului natural este un concept interdisciplinar care ia bazele lingvisticii computaționale și ale inteligenței artificiale pentru a înțelege modul în care limbajele umane interacționează cu tehnologia.
NLP necesită o înțelegere aprofundată a diverselor terminologii și concepte pentru a le aplica în mod tangibil scenariilor din lumea reală. Unele dintre aceste concepte de bază includ etichetarea părții de vorbire (POS), modelarea statistică a limbajului, analiza sintactică, semantică și a sentimentelor, normalizarea, tokenizarea, analizarea dependenței și analizarea circumscripției, printre altele.
În acest articol, ne vom uita la elementele fundamentale ale analizei dependenței pentru a obține o perspectivă asupra modului în care este implementată în NLP.
Cuprins
Analiza dependenței
Dependency Parsing (DP) se referă la examinarea dependențelor dintre cuvintele unei propoziții pentru a analiza structura gramaticală a acesteia. Pe baza acestui fapt, o propoziție este împărțită în mai multe componente. Mecanismul se bazează pe conceptul că există o legătură directă între fiecare unitate lingvistică a unei propoziții. Aceste legături sunt denumite dependențe.
Să luăm, de exemplu, propoziția „ Prefer zborul de dimineață prin Denver”.
Diagrama de mai jos explică structura de dependență a propoziției:
Sursă
Relațiile dintre fiecare unitate lingvistică, sau cuvânt, a propoziției, sunt indicate folosind arce direcționate într-o structură de dependență tipizată. După cum este etichetat în diagramă, rădăcina arborelui „prefer” formează capul propoziției de mai sus.
Relația dintre oricare două cuvinte este marcată de o etichetă de dependență. De exemplu, cuvântul „zbor” modifică sensul substantivului „Denver”. Prin urmare, puteți observa o dependență de la zbor -> Denver unde zborul este capul și Denver este copilul sau dependentul. Este notat cu nmod care reprezintă un modificator nominal.
Acest lucru formează cazul pentru dependența dintre fiecare două cuvinte, unde unul acționează ca cap, iar celălalt este dependent. În prezent, taxonomia Universal Dependency V2 constă din 37 de relații sintactice universale, așa cum este specificat în tabelul de mai jos:
Etichetă de dependență | Descriere |
acl | modificatorul clauzal al unui substantiv (propoziție adnominală) |
acl:relcl | modificator de propoziție relativă |
advcl | modificator de clauză adverbială |
advmod | modificator adverbial |
advmod:emph | cuvânt accentuant, intensificator |
advmod:lmod | modificator adverbial locativ |
amod | modificator adjectival |
apos | modificator apozițional |
aux | auxiliar |
aux:pass | auxiliar pasiv |
caz | marcarea carcasei |
cc | conjuctie coordonatoare |
cc:preconj | preconjunctiv |
ccomp | complement clauzal |
clf | clasificator |
compus | compus |
compus:lvc | construcție ușoară a verbului |
compus: prt | particulă verb frazal |
compus: redup | compuși reduplicați |
compus:svc | compuși de verbe în serie |
conj | conjunctură |
poliţist | copulă |
csubj | subiect clauzal |
csubj:pass | subiect clauzal pasiv |
dep | dependenta nespecificata |
det | determinant |
det:numgov | cuantificator pronominal care guvernează cazul substantivului |
det:nummod | cuantificator pronominal de acord în caz cu substantivul |
det:pos | determinant posesiv |
discurs | element de discurs |
dislocat | elemente dislocate |
expl | expletiv |
expl:impers | impersonal impersonal |
expl:trece | pronume reflexiv folosit în pasiv reflexiv |
expl:pv | clitic reflexiv cu un verb inerent reflexiv |
fix | expresie fixă cu mai multe cuvinte |
apartament | expresie plată cu mai multe cuvinte |
plat: străin | cuvinte străine |
plat:nume | nume |
merge cu | merge cu |
iobj | obiect indirect |
listă | listă |
marcă | marker |
nmod | modificator nominal |
nmod:poss | modificator nominal posesiv |
nmod:tmod | modificator temporal |
nsubj | subiect nominal |
nsubj:trece | subiect nominal pasiv |
nummod | modificator numeric |
nummod:gov | modificatorul numeric care guvernează cazul substantivului |
obj | obiect |
obl | nominal oblic |
obl:agent | modificator de agent |
obl:arg | argument oblic |
obl:lmod | modificator locativ |
obl:tmod | modificator temporal |
orfan | orfan |
parataxă | parataxă |
punct | punctuaţie |
reparandum | disfluență depășită |
rădăcină | rădăcină |
vocativ | vocativ |
xcomp | complement clauzal deschis |
Analiza dependențelor folosind NLTK
Analiza dependențelor poate fi efectuată folosind pachetul Natural Language Toolkit (NLTK), care este o colecție de biblioteci și coduri utilizate în procesarea statistică a limbajului natural (NLP) a limbajului uman.
Putem folosi NLTK pentru a realiza analiza dependenței prin una dintre următoarele metode:
- Analizator de dependență probabilistic, proiectiv : Acești analizatori folosesc cunoștințele despre limbajul uman obținute din propoziții analizate manual pentru a prezice propoziții noi. Se știe că fac greșeli și lucrează cu un set restrâns de date de antrenament.
- Parser Stanford : Acesta este un parser în limbaj natural implementat pe Java. Aveți nevoie de parserul Stanford CoreNLP pentru a efectua analizarea dependențelor. Analizatorul include mai multe limbi, inclusiv engleză, chineză, germană și arabă.
Iată cum puteți utiliza analizatorul:
din nltk.parse.stanford import StanfordDependencyParser
path_jar = 'path_to/stanford-parser-full-2014-08-27/stanford-parser.jar'
path_models_jar = 'path_to/stanford-parser-full-2014-08-27/stanford-parser-3.4.1-models.jar'
dep_parser = StanfordDependencyParser(
path_to_jar = path_jar, path_to_models_jar = path_models_jar
)
rezultat = dep_parser.raw_parse('Am împușcat un elefant în somn')
dependență = rezultat.next()
listă(dependență.triple())
Rezultatul programului de mai sus este după cum urmează:
[
((u'shot', u'VBD'), u'nsubj', (u'I', u'PRP')),
((u'shot', u'VBD'), u'dobj', (u'elephant', u'NN')),
((u'elephant', 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$'))
]
Analiza circumscripției
Analiza circumscripției se bazează pe gramatici fără context. Aici, arborele de analiză include propoziții împărțite în sub-expresii, fiecare aparținând unei categorii gramaticale. Fiecare unitate lingvistică sau cuvânt dintr-o propoziție acționează ca un nod terminal, care are nodul său părinte și o etichetă de parte a vorbirii.
De exemplu, expresia „o pisică” și „o cutie sub pat” sunt sintagme substantive, în timp ce „scrie o scrisoare” și „condu o mașină” sunt expresii verbale.
Să luăm în considerare un exemplu de propoziție „ Am împușcat un elefant în pijama mea”. Iată o reprezentare grafică a arborelui de analiză a circumscripției:
Sursă
Arborele de analiză din stânga se referă la împușcarea unui elefant purtând pijama, iar arborele de analiză din dreapta indică subiectul care împușcă un elefant în pijama.
Întreaga propoziție este împărțită în subfaze până când ne rămân cuvinte terminale. VP denotă o frază verbală și NP denotă fraze nominale.
Analiza dependenței vs Analiza circumscripției
Analiza circumscripției poate fi, de asemenea, implementată folosind parserul Stanford. În esență, analizează o propoziție dată conform analizorului de circumscripție și, ulterior, convertește arborele de analiză a circumscripției într-un arbore de dependență.
Dacă scopul tău este de a împărți o propoziție în sub-fraze, ar trebui să implementezi analizarea circumscripției. Cu toate acestea, dacă doriți să explorați dependențele dintre cuvintele dintr-o propoziție, ar trebui să utilizați analiza dependențelor.
Checkout: Idei și subiecte de proiecte NLP
Concluzie
Dacă ați găsit acest articol util, ar trebui să consultați certificarea PG de 6 luni de la upGrad în învățare automată și NLP , care oferă mentorat personalizat din partea experților din industrie ai Flipkart, Gramener și Zee5.
Programul este conceput pentru ingineri, software/IT, date și alți profesioniști care doresc să pună un punct în știința datelor și învățarea automată. Această certificare postuniversitară de la IIIT BBangalorethe se mândrește cu o creștere a salariului mediu de 58% este tot ce aveți nevoie pentru a obține poziții avansate de Data Analyst, Data Scientist, ML Engineer și NLP Engineer în companii de top. Blocați-vă locul astăzi la doar Rs. 3.034 pe lună!
La ce folosește analiza dependenței în NLP?
În procesarea limbajului natural, analiza dependenței este o tehnică folosită pentru a identifica relațiile semantice dintre cuvintele dintr-o propoziție. Analizatorii de dependență sunt utilizați pentru a mapa cuvintele dintr-o propoziție la roluri semantice, identificând astfel relațiile sintactice dintre cuvinte. Analiza dependenței este o abordare binecunoscută pentru analiza sintactică a textelor în limbaj natural la nivelul structurii de suprafață. În această metodă, structura sintactică a unei propoziții este recuperată dintr-o succesiune liniară de jetoane de cuvinte, prin analiza dependențelor sintactice dintre cuvinte și identificarea categoriei sintactice a fiecărui cuvânt.
Care sunt aplicațiile de analiză a dependențelor?
Iată o listă cu mai multe domenii de aplicație în care este utilizată analiza dependențelor. Una dintre utilizările majore ale analizei dependențelor este în etichetarea rolului semantic (SRL) și extragerea informațiilor, care sunt componente ale procesării limbajului natural. Analiza dependenței este, de asemenea, utilizată pentru fragmentarea sintactică și analizarea circumscripțiilor în afara sarcinilor NLP. Analiza dependenței este fundamental diferită de analiza structurii frazei, care mapează cuvintele dintr-o propoziție la marcatorul de frază sau structura arborescentă corespunzător.
Care este diferența de bază dintre analiza sintactică și analiza dependenței?
Diferența dintre analizatorul sintactic și analizatorul de dependență este că, un parser de dependență construiește un arbore de analiză, iar un analizator sintactic construiește un arbore de sintaxă. Analiza sintactică implică utilizarea unor reguli predefinite pentru a defini sintaxa și un parser de dependență, pe de altă parte, poate înțelege tot felul de fraze și, de asemenea, poate face față intrărilor ambigue. Un parser de dependență poate fi folosit pentru recunoașterea frazelor, fragmentarea, analiza dependenței, fragmentarea și analizarea.