Abhängigkeitsanalyse in NLP [Erklärt mit Beispielen]
Veröffentlicht: 2021-03-10Natural Language Processing ist ein interdisziplinäres Konzept, das die Grundlagen der Computerlinguistik und der künstlichen Intelligenz nutzt, um zu verstehen, wie menschliche Sprache mit Technologie interagiert.
NLP erfordert ein tiefgreifendes Verständnis verschiedener Terminologien und Konzepte, um sie greifbar auf reale Szenarien anzuwenden. Einige dieser Grundkonzepte umfassen unter anderem Part-of-Speech(POS)-Tagging, statistische Sprachmodellierung, syntaktische, semantische und Stimmungsanalyse, Normalisierung, Tokenisierung, Dependency Parsing und Constituency Parsing.
In diesem Artikel werden wir uns mit den Grundlagen des Dependency Parsing befassen, um einen Überblick darüber zu erhalten, wie es in NLP implementiert wird.
Inhaltsverzeichnis
Abhängigkeitsanalyse
Dependency Parsing (DP) bezieht sich auf die Untersuchung der Abhängigkeiten zwischen den Wörtern eines Satzes, um seine grammatikalische Struktur zu analysieren. Darauf aufbauend wird ein Satz in mehrere Bestandteile zerlegt. Der Mechanismus basiert auf dem Konzept, dass zwischen jeder sprachlichen Einheit eines Satzes eine direkte Verbindung besteht. Diese Verknüpfungen werden als Abhängigkeiten bezeichnet.
Nehmen wir zum Beispiel den Satz „ Ich bevorzuge den morgendlichen Flug über Denver.“
Das folgende Diagramm erläutert die Abhängigkeitsstruktur des Satzes:
Quelle
Die Beziehungen zwischen jeder linguistischen Einheit oder jedem Wort des Satzes werden durch gerichtete Bögen in einer typisierten Abhängigkeitsstruktur angezeigt. Wie im Diagramm gekennzeichnet, bildet die Wurzel des Baums „bevorzugen“ den Kopf des obigen Satzes.
Die Beziehung zwischen zwei beliebigen Wörtern wird durch ein Abhängigkeits-Tag gekennzeichnet. Zum Beispiel modifiziert das Wort „Flug“ die Bedeutung des Substantivs „Denver“. Daher können Sie eine Abhängigkeit von Flug -> Denver feststellen, wobei der Flug der Kopf und Denver das Kind oder der Unterhaltsberechtigte ist. Er wird mit nmod bezeichnet , das einen nominalen Modifikator darstellt.
Dies ist der Fall für die Abhängigkeit zwischen jeweils zwei Wörtern, bei denen eines als Kopf und das andere als abhängig fungiert. Derzeit besteht die Universal Dependency V2 -Taxonomie aus 37 universellen syntaktischen Beziehungen, wie in der folgenden Tabelle angegeben:
Abhängigkeits-Tag | Beschreibung |
akl | Satzmodifikator eines Substantivs (Adnominalsatz) |
acl:relcl | Modifizierer für Relativsätze |
Erw | Modifikator für Adverbialsätze |
advmod | adverbiales Attribut |
advmod:emph | betonendes Wort, Verstärker |
advmod:lmod | Lokaler Adverbialmodifikator |
amod | Adjektiv-Modifikator |
appos | Appositionsmodifikator |
Zusatz | Hilfs- |
Zusatz: pass | passives Hilfsmittel |
Fall | Fall-Markierung |
cc | koordinierende Konjunktion |
cc:vorkonj | Vorkonjunktur |
Komp | satzliche Ergänzung |
clf | Klassifikator |
Verbindung | Verbindung |
Verbindung: lvc | leichte Verbkonstruktion |
zusammengesetzt:prt | Phrasal Verb Partikel |
Verbindung: redup | reduzierte Verbindungen |
Verbindung: svc | serielle Verbverbindungen |
Konj | Konjunktion |
Polizist | Kopula |
csubj | Klauselthema |
csubj:pass | Satzpassives Subjekt |
abh | nicht näher bezeichnete Abhängigkeit |
det | Bestimmer |
det:numgov | pronominaler Quantifizierer, der den Fall des Substantivs bestimmt |
det:nummod | pronominaler Quantifizierer, der im Fall mit dem Substantiv übereinstimmt |
det: evtl | besitzanzeigendes Fürwort |
Diskurs | Diskurselement |
ausgerenkt | dislozierte Elemente |
erkl | Kraftausdruck |
expl:imper | unpersönlicher Kraftausdruck |
expl:pass | Reflexivpronomen, das im Reflexivpassiv verwendet wird |
expl: pv | reflexive Klitik mit einem inhärent reflexiven Verb |
Fest | fester Mehrwortausdruck |
Wohnung | flacher Mehrwortausdruck |
flach: ausländisch | Fremdwörter |
Wohnung: Name | Namen |
geht mit | geht mit |
iobj | indirektes Objekt |
Liste | Liste |
Kennzeichen | Marker |
nmod | nominaler Modifikator |
nmod:evtl | Possessiver Nominalmodifikator |
nmod:tmod | zeitlicher Modifikator |
nsubj | nominelles Thema |
nsubj:pass | passives Nominalsubjekt |
nummod | numerischer Modifikator |
nummod:gov | numerischer Modifikator, der den Fall des Substantivs bestimmt |
obj | Objekt |
obl | schräg nominal |
obl:agent | Agentenmodifikator |
obl:arg | schräges Argument |
obl:lmod | Lokaler Modifikator |
obl:tmod | zeitlicher Modifikator |
verwaist | verwaist |
Parataxe | Parataxe |
Punkt | Interpunktion |
Wiedergutmachung | überwundene Disfluenz |
Wurzel | Wurzel |
Vokativ | Vokativ |
xcomp | offene satzergänzung |
Abhängigkeitsanalyse mit NLTK
Die Abhängigkeitsanalyse kann mit dem Natural Language Toolkit (NLTK)-Paket durchgeführt werden, das eine Sammlung von Bibliotheken und Codes ist, die bei der statistischen Verarbeitung natürlicher Sprache (NLP) der menschlichen Sprache verwendet werden.
Wir können NLTK verwenden, um eine Abhängigkeitsanalyse durch eine der folgenden Methoden zu erreichen:
- Probabilistischer, projektiver Abhängigkeitsparser : Diese Parser verwenden das Wissen der menschlichen Sprache, das aus manuell geparsten Sätzen gewonnen wird, um neue Sätze vorherzusagen. Sie sind dafür bekannt, Fehler zu machen und mit einem eingeschränkten Satz von Trainingsdaten zu arbeiten.
- Stanford-Parser : Dies ist ein in Java implementierter natürlicher Sprachparser. Sie benötigen den Stanford CoreNLP-Parser , um die Abhängigkeitsanalyse durchzuführen. Der Parser umfasst mehrere Sprachen, darunter Englisch, Chinesisch, Deutsch und Arabisch.
So können Sie den Parser verwenden:
aus nltk.parse.stanford importieren Sie 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
)
result = dep_parser.raw_parse('Ich habe im Schlaf einen Elefanten erschossen')
Abhängigkeit = result.next()
list(dependency.triples())
Die Ausgabe des obigen Programms sieht wie folgt aus:
[
((u'shot', u'VBD'), u'nsubj', (u'I', u'PRP')),
((u'shot', u'VBD'), u'dobj', (u'elefant', u'NN')),
((u'elefant', 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$'))
]
Wahlkreisanalyse
Das Parsing von Wahlkreisen basiert auf kontextfreien Grammatiken. Hier enthält der Parsing-Baum Sätze, die in Teilphrasen unterteilt sind, die jeweils zu einer Grammatikkategorie gehören. Jede Spracheinheit oder jedes Wort in einem Satz fungiert als Endknoten, der seinen Elternknoten und ein Wortart-Tag hat.
Beispielsweise sind die Ausdrücke „eine Katze“ und „eine Kiste unter dem Bett“ Nominalphrasen, während „einen Brief schreiben“ und „ein Auto fahren“ Verbphrasen sind.
Betrachten wir einen Beispielsatz „ Ich habe einen Elefanten in meinem Schlafanzug erschossen.“ Hier ist eine grafische Darstellung des Wahlkreis-Parse-Baums:
Quelle
Der Analysebaum auf der linken Seite bezieht sich auf das Schießen eines Elefanten im Schlafanzug, und der Analysebaum auf der rechten Seite zeigt an, dass das Subjekt einen Elefanten im Schlafanzug erschießt.
Der gesamte Satz wird in Unterphasen zerlegt, bis wir abschließende Wörter übrig haben. VP bezeichnet eine Verbphrase und NP bezeichnet Nominalphrasen.
Parsing von Abhängigkeiten vs. Parsing von Wahlkreisen
Wahlkreis-Parsing kann auch mit dem Stanford-Parser implementiert werden. Es analysiert im Wesentlichen einen bestimmten Satz gemäß dem Wahlkreis-Parser und wandelt anschließend den Wahlkreis-Parse-Baum in einen Abhängigkeitsbaum um.
Wenn es Ihr Ziel ist, einen Satz in Teilphrasen zu zerlegen, sollten Sie das Parsing der Wahlkreise implementieren. Wenn Sie jedoch die Abhängigkeiten zwischen den Wörtern in einem Satz untersuchen möchten, sollten Sie die Abhängigkeitsanalyse verwenden.
Checkout: NLP-Projektideen und -themen
Fazit
Wenn Sie diesen Artikel hilfreich fanden, sollten Sie sich die 6-monatige PG-Zertifizierung von upGrad in maschinellem Lernen und NLP ansehen, die eine personalisierte Betreuung durch Branchenexperten von Flipkart, Gramener und Zee5 bietet.
Das Programm richtet sich an Ingenieure, Software-/IT-, Daten- und andere Fachleute, die in Data Science und maschinellem Lernen Fuß fassen möchten. Diese Postgraduierten-Zertifizierung von IIIT BBangalorethe bietet eine durchschnittliche Gehaltserhöhung von 58% und ist alles, was Sie brauchen, um fortgeschrittene Positionen als Datenanalyst, Datenwissenschaftler, ML-Ingenieur und NLP-Ingenieur in Top-Unternehmen zu ergattern. Blockieren Sie noch heute Ihren Sitzplatz für nur Rs. 3.034 pro Monat!
Wozu dient die Abhängigkeitsanalyse im NLP?
Bei der Verarbeitung natürlicher Sprache ist die Abhängigkeitsanalyse eine Technik, die verwendet wird, um semantische Beziehungen zwischen Wörtern in einem Satz zu identifizieren. Abhängigkeitsparser werden verwendet, um die Wörter in einem Satz semantischen Rollen zuzuordnen, wodurch die syntaktischen Beziehungen zwischen Wörtern identifiziert werden. Die Abhängigkeitsanalyse ist ein bekannter Ansatz zur syntaktischen Analyse von Texten in natürlicher Sprache auf der Ebene der Oberflächenstruktur. Bei diesem Verfahren wird die syntaktische Struktur eines Satzes aus einer linearen Folge von Wort-Token wiederhergestellt, indem die syntaktischen Abhängigkeiten zwischen Wörtern analysiert und die syntaktische Kategorie jedes Wortes identifiziert werden.
Was sind die Anwendungen der Abhängigkeitsanalyse?
Hier ist eine Liste mehrerer Anwendungsbereiche, in denen die Abhängigkeitsanalyse verwendet wird. Eine der Hauptanwendungen der Abhängigkeitsanalyse ist die semantische Rollenkennzeichnung (SRL) und die Informationsextraktion, die Komponenten der Verarbeitung natürlicher Sprache sind. Das Parsing von Abhängigkeiten wird auch für syntaktisches Chunking und Parsing von Wahlkreisen außerhalb von NLP-Aufgaben verwendet. Die Abhängigkeitsanalyse unterscheidet sich grundlegend von der Phrasenstrukturanalyse, die die Wörter in einem Satz der entsprechenden Phrasenmarkierung oder Baumstruktur zuordnet.
Was ist der grundlegende Unterschied zwischen syntaktischer Analyse und Abhängigkeitsanalyse?
Der Unterschied zwischen syntaktischem Parser und Abhängigkeitsparser besteht darin, dass ein Abhängigkeitsparser einen Syntaxbaum und ein syntaktischer Parser einen Syntaxbaum erstellt. Beim syntaktischen Parsing werden vordefinierte Regeln verwendet, um die Syntax zu definieren, und ein Abhängigkeitsparser hingegen kann alle Arten von Phrasen verstehen und auch mit mehrdeutigen Eingaben umgehen. Ein Abhängigkeitsparser kann für Phrasenerkennung, Chunking, Abhängigkeitsanalyse, Chunking und Parsing verwendet werden.