NPGrammar

Ein Partieller Parser zur Extraktion von Nominalphrasen

Die folgende Tabelle liefert einen Überblick über die im Parcel NPGrammar enthaltenen Klassen. NPGrammar ist eine Unterklasse vom Parsingtool XGrammar, das am Fraunhofer Institut entwickelt wurde. Über XGrammar können auf dieser Seite keine Angaben gemacht werden.

Klasse kurze Zusammenfassung
NPGrammar NPGrammar ist eine Unterklasse des Parsingtools XGrammar, das am Fraunhofer Institut entwickelt wurde. Mit NPGrammar werden Nominalphrasen größtmöglicher Menge aus Texten extrahiert und syntaktisch hierarchisiert. Gestartet wird der Parsevorgang in NPGrammarXtract, eine Unterklasse von NPGrammar.
NPGrammarArrays In NPGrammarArrays werden Arrays mit bestimmten Wortarten oder für entsprechende Abfragen terminaler Testmethoden gespeichert.. Unter der Kategorie preposition befinden sich Arrays zu den deutschen Präpositionen; mittels derer entschieden wird, ob eine Präpositionalphrasenanbindung vorliegt oder nicht. Eine PP-Anbindung liegt vor, wenn entweder das letzte Nomen oder das Head-Nomen der Gesamtphrase in dem präpositionsspezifischen Array enthalten ist.
NPGrammarGUI NPGrammarGUI liefert die graphische Benutzeroberfläche und ruft die Startmethode der Klasse NPGrammarXtract auf.
NPGrammarLemmatize NPGrammarLemmatize dient zur Lemmatisierung von Substantiven, Adjektiven und Determinationen. Eine Lemmatisierung von Substantiven ist dann erforderlich, wenn eine Abfrage auf Enthaltensein in den Präpositionsarrays durchgeführt wird. Lemmatisierung von Adjektiven und Determinationen müssen immer durchgeführt werden. Ausnahme: Abfrage von Adjektiven in Funktion eines Partikels.
NPGrammarSentenceSplitter NPGrammarSentenceSplitter dient zur Vorbereitung des Textes für die eigentliche Analyse. Es müssen im Text die entsprechenden Tags gesetzt werden. Startmethode: setMarker: aString
NPGrammarXtract NPGrammarXtract ist das "Herzstück" des Analyseprogramm. In dieser Klasse wird der Parsevorgang gestartet, alle entsprechenden terminalen und nichtterminalen Methoden durchlaufen und das Ergebnis in die entsprechende Datei ausgegeben. Startmethode: parseFromFile: aString startSymbol: aSymbol dir: aDirectory
NPTree In NPTree werden die gesamten Baumstrukturen einer Teilphrase erzeugt.

NPGrammar

Instance Variables:
adjektivList Speichert alle Adjektive; eine Art Wörterbuch für Adjektive
dir Speichert den Namen des Ordners, in dem alle Dateien aufbewahrt werden
fileNames enthält als key den Name, mittels derer in anderen Methoden auf den Dateinamen (value) zugegriffen wird


Klassenmethoden
signs
Liste von Zeichen, die im Text als Token erkannt werden sollen
tags
Liste von tags, die im Text als token erkannt werden sollen
AdjektivSet
Set deutscher Adjektive zum Ablgeichen beim Parsen


Instanzmethoden
setNPComplex
Datei für die komplexen Phrasen wird angelegt
setNPStrings
Anlegen der Datei für die als String ausgegebenen extrahierten Nominalphrasen
setSimpleNP
Anlegen der Datei für die einfach strukturierten Phrasen
setXMLFile
Anlegen der Datei für die Links

NPGrammarArrays

Die Klasse NPGrammar enthält alle Wortlisten und -arrays. Genaueres kann dem Quellcode entnommen werden

NPGrammarGUI

Instance Variables:
inputFile
outDirectory

Klassenmethoden
windowSpec
Erzeugt eine Oberfläche; die Klasse NPGrammarGUI kann mit der Methode open geöffnet werden


Instanzmethoden
starting
Ruft, sobald die Parameter vom Benutzer eingegeben worden sind, die Startmethode von NPGrammarXtract auf


NPGrammarLemmatize

Klassenvariablen
SubstantivSet
UmlautDict

Klassenmethoden
lemmatizeAdjOrDet: aToken
einfache Lemmatisierung von Adjektiven
lemmatizeNomen: aToken
Lemmatisierung von Nomen und Abgleich mit der Substantivliste. Falls nichts passt, wird ein leerer String zurückgeben


Instanzmethoden
lemNomEnding_E:
aToken
lemNomEnding_E: aToken1 And: aToken2
UmlautTest ohne Endungstilgung, also auf e
lemNomEnding_N: aToken
Token ohne Umlaut ausgeben
lemNomEnding_N: aToken1 And: aToken2
lemNomEnding_R: aToken
lemNomEnding_R: aToken1 And: aToken2
lemNomEnding_S: aToken1

NPGrammarSentenceSplitter

Klassenmethoden
setMarker: aString
formatiert den Text und teilt ihn in Satzsegmente auf

NPGrammarXtract

Instance Variables:
blockade Variable, die bei Start der Regel rightContext den Wert false erhält, um zu verhindern, dass der bereits erzeugte Baum des Heads durch einen Baum einer rechten Teil(attribut)phrase ersetzt wird;
context Speichert den Namen des aktuellen Kontextes im Regeldurchlauf
headNomen Speichert das Headnomen einer gesamten Phrase
headTree Speichert den für die Kernphrase erzeugten Baum
konrel
lastHeadNomen Speichert den Namen des letzten erkannten Substantivs, um PP-Anbindungen zu erkennen
lastSubstantiv
lastTokenDet
phras Speichert alle Wörter, die zur Phrase gehören.
phrasAsString Speichert den erkannten Phrasenstring
phrasRight Speichert die Wörter der aktuellen Kontextphrase
phrasSet Speichert alle Teilphrasen
prep Speichert die erkannte aktuelle Präposition
rightSubtrees Speichert alle erkannten rechten Teilbäume
rightTree Speichert den aktuell erkannten rechten Teilbaum
segment Speichert den Namen des aktuellen Segments im Regedurchlauf, um entsprechende Einträge in vars zu machen
startOfPhrase Gibt true zurück, wenn Word am Satzanfang steht; sonst false
subtree
toHead Gibt true zurück, wenn eine PP zum Head gehört und nicht zu einem vorausgehenden attributiven Teilbaum


Klassenmethoden
defaultGrammar
Setzen der Grammatik
defaultScanner Setzen des Scanners und seiner Eigenschaften
defaultStartSymbol Startsymbol für die Analyse
parseFromFile: aString1 startSymbol: aSymbol dir: aString2
Startmethode.Startet den Parsevorgang
defaultGrammarDefinition
inputFileExists: aString
testet, ob der Dateiname existiert
isValidInputParametersFile: aString
testet, ob der Dateiname existiert. Wenn nicht, kann keine Analyse durchgeführt werden und eine eine Fehlermeldung wird ausgegeben


Instanzmethoden
printAsNP die erkannte positive Folge wird für die Ausgabe vorbereitet und in der entsprechenden Datei ausgegeben
printAttributeNP: aTree
die positive erkannte Folge ist eine Phrase, die durch Adjektive attribuiert ist. In dieser Methode erfolgt die Ausgabe der positiven Folge in die entsprechende Datei
printNP: aString define: aTree
Prüfung, welchem Typ die erkannte positive Folge zugeordnet werden kann
printNPCompl: aTree
die positive erkannte Folge ist eine Phrase, die durch Adjektive und/oder Genitiv- oder Präpositionalphrasen attribuiert ist. In dieser Methode erfolgt die Ausgabe der positiven Folge in die entsprechende Datei
printNPKON: aTree
die positive erkannte Folge ist eine koordinierende Phrase. In dieser Methode erfolgt die Ausgabe der positiven Folge in die entsprechende Datei
printNPsAsStrings: aTree
die positive Folge wird in eine Datei geschrieben, die zur Evaluierung dient
printNPSimple: aTree
die positive Folge wurde als einfache Phrase, d.h. nur aus einem Substantiv bestehend, erkannt. In dieser Methode erfolgt die Ausgabe der positiven Folge in die entsprechende Datei
endAttr
erstellt einen Teilbaum für den linken Kontext einer Phrase
endGenAppo
erstellt einen Teilbaum für eine Apposition als Genitiv vor dem Head-Nomen
endNPGen
fügt den für das Genitivattribut generierten Baum zur OrderedCollection, in der alle Teilbäume des rechten Kontext gesammelt werden, hinzu
endNPKon
erstellt einen Baum für eine koordinierte Nominalphrase. Mittels der Variable blockade wird geprüft, ob die Nominalphrase Head-NP ist, oder eine NP des rechten Kontext
endNPKonAtt
erstellt einen Baum für eine koordinierte Nominalphrase. Mittels der Variable blockade wird geprüft, ob die Nominalphrase Head-NP ist, oder eine NP des rechten Kontext
endNPName
erstellt einen Baum für eine einfache Nominalphrase, die als Eigenname erkannt wurde. Mittels der Variable blockade wird geprüft, ob die Nominalphrase Head-NP ist, oder eine NP des rechten Kontext
endNPNameRight
fügt den für den Eigennamen generierten Baum zur OrderedCollection, in der alle Teilbäume des rechten Kontext gesammelt werden, hinzu
endNPSimple
erstellt einen Baum für eine einfache Nominalphrase. Mittels der Variable blockade wird geprüft, ob die Nominalphrase Head-NP ist, oder eine NP des rechten Kontext
endOfStartPhrase
Setzt die Variable startOfPhrase auf den Wert false. Notwendig, da Adjektive, die eine satzinterne Nominalphrase einleiten, nicht großgeschrieben sein dürfen
endPP
erstellt einen Baum für eine Präpositionalphrase. Mittels der Variable blockade wird geprüft, ob die Nominalphrase Head-NP ist, oder eine NP des rechten Kontext
endPPAttr
erzeugt einen Teilbaum für den linken Kontext, der sich aus einer zu einem Adjektiv zugehörigen PP zusammensetzt
endPPRight
fügt den für das Präpositionalattribut generierten Baum zur OrderedCollection, in der alle Teilbäume des rechten Kontext gesammelt werden, hinzu
genMarker
setSegment
startAttr
Variable segment erhält den Namen des Regelsegments, dem die folgenden erkannten Wörter im ListDictionary zugeordnet werden sollen
startGenAppo
Variable segment erhält den Namen des Regelsegments, dem die folgenden erkannten Wörter im ListDictionary zugeordnet werden sollen. Die Variable blockade muss den Wert true erhalten, da ein HeadTree bereits vorliegt und alle folgenden Teilphrasen lediglich Attribute zur Kern-Nominalphrase sein können
startNPGen
Variable segment erhält den Namen des Regelsegments, dem die folgenden erkannten Wörter im ListDictionary zugeordnet werden sollen. Die Variable blockade muss den Wert true erhalten, da ein HeadTree bereits vorliegt und alle folgenden Teilphrasen lediglich Attribute zur Kern-Nominalphrase sein können
startNPGenAppo
Variable segment erhält den Namen des Regelsegments, dem die folgenden erkannten Wörter im ListDictionary zugeordnet werden sollen. Die Variable blockade muss den Wert true erhalten, da ein HeadTree bereits vorliegt und alle folgenden Teilphrasen lediglich Attribute zur Kern-Nominalphrase sein können
startNPKon
Variable segment erhält den Namen des Regelsegments, dem die folgenden erkannten Wörter im ListDictionary zugeordnet werden sollen
startNPKonAtt
Variable segment erhält den Namen des Regelsegments, dem die folgenden erkannten Wörter im ListDictionary zugeordnet werden sollen. Die Variable blockade muss den Wert true erhalten, da ein HeadTree bereits vorliegt und alle folgenden Teilphrasen lediglich Attribute zur Kern-Nominalphrase sein können
startNPName
Variable segment erhält den Namen des Regelsegments, dem die folgenden erkannten Wörter im ListDictionary zugeordnet werden sollen
startNPSimple
Variable segment erhält den Namen des Regelsegments, dem die folgenden erkannten Wörter im ListDictionary zugeordnet werden sollen
startOfLeftContext
Es wird mit dem Durchlaufen der Regeln, die den linken Kontext definieren, begonnen
startOfNPNucleus
Es wird mit dem Durchlaufen der Regeln, die den Phrasenkern definieren, begonnen
startOfRightContext
Es wird mit dem Durchlaufen der Regeln, die den rechten Kontext definieren, begonnen
startPhrase
zu Beginn einer Phrase müssen alle Variablen, die zum Abfragen gebraucht werden, auf default-Wert gesetzt werden
startPP
Variable segment erhält den Namen des Regelsegments, dem die folgenden erkannten Wörter im ListDictionary zugeordnet werden sollen
startPPAttr
Variable segment erhält den Namen des Regelsegments, dem die folgenden erkannten Wörter im ListDictionary zugeordnet werden sollen
startPPRight
Variable segment erhält den Namen des Regelsegments, dem die folgenden erkannten Wörter im ListDictionary zugeordnet werden sollen
writeOutToLinkFile: aString
eine erkannte Phrase ist ein Link. Diese wird in dieser Methode in die entsprechende Datei geschrieben
removeLastWord: aString
Löscht das letzte Wort in der OrderedCollection, in der alle erkannten Wörter geschrieben werden.
reset
Eine Regel ist gescheitert. Die Einträge des Segments, das der Regel entsprich, müssen gelöscht werden.
resetAll
bei gescheiterten Regeldurchlauf müssen die gemachten Einträge in vars gelöscht werden. Außerdem müssen aus den Phrasen-Collection die entsprechenden Wörter gelöscht werden
adjFlexEnding: aToken
Prüfung, ob ein Wort auf ein Adjektivsuffix endet
adjOrart: aToken
Test, ob das übergebene Wort ein Adjektiv oder Artikel ist
comma: aToken
Test, ob das übergebene Wort ein Komma ist
declareAsUndetNp: aToken
eine negative Folge wird der Methode, die diese in die entsprechende Datei schreibt, übergeben
genMarker: aToken
Test, ob das übergebene Wort, ein Genitivattribut einleiten kann. Entsprechende Flexionsendung oder entsprechende Präposition muss vorliegen
isAdjektiv: aToken
Test, ob das übergebene Wort ein Adjektiv ist
isAdjektivNoNumb: aToken
Test, ob das übergebene Wort ein Adjektiv ist. Es darf aber keine Zahl sein. Das ist der Unterschied zur Methode isAdjektiv
isAdjektivWithoutSavinginList: aToken
Test, ob das übergebene Wort ein Adjektiv ist, ohne es aber zu speichern in vars
isDet: aToken
Test, ob das übergebene Wort ein Artikel ist
isDetermination: aToken
Test, ob das übergebene Wort ein Artikel ist und falls ja, zu den Phrasen-Collection hinzufügen
isDetName: aToken
Abfrage für die Fälle erforderlich, in denen Determinationen auch innerhalb des Satzes groß geschrieben werden können, wie z.B. bei Eigennamen Die Zeit...
isGenNomen: aToken
Test, ob das Nomen auf ein Genitivsuffix endet und somit Genitivattribut ist
isKonWord: aToken
Test, ob das übergebene Wort eine koordinierende Konjunktion ist
isMonth: aToken
Test, ob das Token ein Monatsname ist
isName: aToken
Test, ob das übergebene Wort ein Eigenname ist
isNomen: aToken
Test, ob das übergebene Wort ein Substantiv ist
isNomenWithoutSavingInList: aToken
Test, ob das übergebene Wort ein Substantiv ist, ohne es in vars zu speichern oder zu den Phrasen-Collection hinzuzufügen
isNomParenthis: aToken
Test, ob das Token in Anführungszeichen steht
isNormalWord: aToken
Alles was kein tag und kein Endwort ist
isNumber: aToken
isParenthisClose: aToken
schließendes Anführungszeichen
isParenthisOpen: aToken
isPartikel: aToken
isPrep: aToken
Test, ob Token eine Präposition ist, die vor Zeitangaben stehen kann
isPronomen: aToken
Test, ob das übergebene Wort ein Pronomen ist
isSpace:: aToken
isSpecTime: aToken
isTime: aToken
isYear: aToken
konWord: aToken
Test, ob das übergebene Wort eine koordinierende Konjunktion ist
link: aToken
Wenn das übergebene Wort ein Link ist, wird dieses in die entsprechende Datei geschrieben
numberAsGen: aToken
Bei bestimmten Fällen können Zahlen eine Art Genitiv- oder Attributivfunktion haben. Es gilt: entweder sind es römische Zahlen oder der Zahl ging ein Monatsname voraus
preposition: aToken
Test, ob das eingegebene Wort eine Präposition ist
punkt: aToken
Test, ob das eingegebene Wort ein Punkt ist
startWithCapitalLetter: aToken
Test, ob das übergebene Wort großgeschrieben ist
subPreposition: aToken
Test, ob das übergebene Wort eine Präposition ist, die vom vorausgehenden Substantiv regiert wird.
checkValenz: aSet aToken
Test, ob das übergebene SubstantivSet das in der Klasse NPGRammarLemmatize ermittelte Lemma enthält. Da das Lemma auch als Grundwort in Komposita enthalten sein kann, muss ein Matching mittels regulären Ausdruck durchgeführt werden
includesName: aTree
Test, ob der übergebene Baum einen Eigennamen enthält
isDetOrPron: aToken
Test, ob das übergebene Wort ein Artikelwort oder Pronomen ist, ohne es in vars oder den Phrasen-Collection zu speichern
isKonNP: aTree
Test, ob der Baum eine Koordination beschreibt. Wichtig bei der Angabe der Relation
isLink: aToken
Test, ob das übergebene Wort ein Link ist.
isNPSimple: aTree
Test, ob es sich um eine einfach strukturierte Baumstruktur handelt
isPossibleAdjektiv: aToken
Test, ob das übergebene Wort evtl. ein Adjektiv sein könnte
isPossibleSubstantiv: aToken
Test, ob das übergebene Wort evtl. ein Adjektiv sein könnte
isStopWord: aToken
Test, ob das übergebene Wort in der Stoppwortliste enthalten ist
endOfKeyword
mögliche Tagendungen
tagSet
NPGrammarspezifische Tags
combineTree: aTree And: aSubtree
Aufruf in der Methode #printAsNP. Erzeugt einen Baum für die komplette Phrase
createKonTree: aTree And: aSubtree
Aufruf in der Methode #printAsNP. Erzeugt einen Baum für die komplette Phrase
createTree
Aufruf in der Methode #printAsNP. Erzeugt einen Baum für die komplette Phrase. D.h. die ermittelten attributiven Teilbäume müssen jeweils ans Ende des Gesamtbaums hinzugefügt werden. Deshalb müssen die entsprechenden Knoten ermittelt werden: Der richtige Knoten ist der, welcher entweder keine Tochterknoten mehr hat oder nur Tochterknoten der Klasse XTreeLeaf hat. Abfragen können mit Hilfe von subtrees, die eine OrderedCollection der Tochterknoten zurückgibt ermittelt werden
createTree: aTree And: aSubtree
Aufruf am Ende einer ermittelten rechten Teilphrase. Mit dieser Methode wird die ermittelte rechte Teilphrase an den gesamten Baum des rechten Kontextes, also der Attribute, hinzugefügt. Ähnliches Verfahren wie bei createTree
addHeadPhras
Hinzufügen der ermittelten Headphrase zu den gesammelten Teilphrasen
addRightPhras
Hinzufügen der ermittelten Attributphrase zu den gesammelten Teilphrasen
addToLastRightPhras
Hinzufügen einer ermittelten Attributphrase zur letzten ermittelten Attributphrase
fileDict
Legt das Dictionary mit den möglichen Ausgabedateien an und sendet das Ergebenis an die Varibale fileNames
headTreeAttributRelation
Für die Teilstrukturen wird der Head bestimmt. Dies ist nicht immer unbedingt gleich root des Baumes
hierarchieOfAttributes
Durchlaufen der ermittelten rechten Attributteilphrasen- und bäume. Ermittlung der Konstituenten und entsprechende Dateiausgabe jeder Teilstruktur
preparePhrase: aColl
Erzeugt einen String aus der übergebenen OrderedCollection
prepareSetsAndFiles
Legt die Ausgabedateien mit Überschriften an
removeLastSubtree: aTree
Löscht den letzten Teilbaum
resetValues
Setzt alle Variablen auf ihre default Werte
updatePhrase
Zuordnung der aktuellen Phrase der Attribute. Die Headteilphrase oder bearbeitete Attributteilphrasen werden von der kompletten Phrase gelöscht
withoutSep: aToken
Entfernt alle rechten und linken Leerzeichen eines Wortes
wordWithoutEnding: aToken
einfache Lemmatisierung von Adjektiven

NPTree



Klassenmethoden
headTree: aString for: anOrderedSet andLeftSubtree: aSubtree
Sucht die für den Relationsnamen, gegeben durch aString, passende Methode aus. Startmethode für die Baumgenerierung
subtree: aString for: anOrderedSet
Sucht für den Subtree des linken Kontext die passende Methode aus. Startmethode für die Baumgenerierung der linken Attribute


Instanzmethoden
attributes: aTree
transfomiert den Baum in einen String zur Ausgabe
attrSubtree: anOrderedSet
Erzeugt einen Baum für den linken Kontext einer Nominalphrase
attrSubtreeName: anOrderedSet
Erzeugt einen Baum für den linken Kontext einer Nominalphrase
constituentsNPKon: coll1 and: coll2
Coll1 enthält die Subtrees, die zu einer koordinierenden Nominalphrase gehören. Relation ist 'kon' und ist bereits ermittelt. Rückgabe ist der linke Kontext (plus dessen Attribute) der Konjunktion und der rechte Kontext als Differenzbegriff
defineConstituentsNPKon: aTree and: string
Ermittelt für eine koordinierende Nominalphrase Head, Relationen und Differenzbegriff
defineDiffAndRel: treeColl And: phrasenColl withHead: aString
Gibt die Relation, den Head der Phrase und dessen rechten und linken Attribute zurück
defineHead: aTree And: string
Ermittelt für eine komplexe Nominalphrase Head, Relationen und Differenzbegriff
defineKonHead: anOrderedSet
Sucht die Konjunktion, die die Relation der Phrase bestimmt
indexOfWord: string In: coll
Sucht den Index eines bestimmten Wortes in einer OrderedCollection und gibt diesen zurück
konSubtrees: anOrderedSet
Erzeugt einen Baum für die Attribute einer koordinierenden Nominalphrase. Head ist dabei die Konjunktion
testForPrepOrDet: string
Prüft, ob der String mit einer Determination oder Präposition beginnt. Falls ja, müssen diese, da der Differenzbegriff gesucht wird und diese nicht mit Artikel oder Präposition beginnen sollen, getilgt werden