In [1]:
from nltk.tree import Tree
np1 = Tree('NP', [Tree('ART', ['der']), Tree('N', ['Hund'])])
np2 = Tree('NP', [Tree('ART', ['die']), Tree('N', ['Katze'])])
vp = Tree('VP', [Tree('V', ['jagt']), np2])
Um ihn anzuzeigen, genügt es, die Variable alleine in die letzte Zeile einer Zelle zu schreiben.
In [2]:
vp
Out[2]:
Möchte man mehr als nur einen Baum in derselben Zelle anzeigen, bietet display
mehr Flexibilität.
In [3]:
from IPython.display import display
display(np1)
display(np2)
Für eine Darstellung in der Konsole gibt es zwei Möglichkeiten:
In [4]:
print(vp)
In [5]:
vp.pretty_print(unicodelines=True)
In [6]:
from nltk.parse.stanford import StanfordParser, StanfordDependencyParser
import os
In [7]:
PATH_TO_CORE = "..."
PATH_TO_GER_MODEL = "..."
In [8]:
jar = os.path.join(
PATH_TO_CORE,
"stanford-corenlp-3.8.0.jar"
)
ger_model = os.path.join(
PATH_TO_GER_MODEL,
"stanford-german-corenlp-2017-06-09-models.jar"
)
Anschließend kann der StanfordParser
damit geladen werden.
In [9]:
parser = StanfordParser(
jar, ger_model,
model_path="edu/stanford/nlp/models/lexparser/" +
"germanPCFG.ser.gz"
)
Für eine syntaktische Analyse verwenden Sie einfach raw_parse
.
In [10]:
tree_list = list(parser.raw_parse('Dies ist mein erster Satz.'))
tree_list[0].pretty_print(unicodelines=True)
In [11]:
jar = os.path.join(
PATH_TO_CORE,
"stanford-corenlp-3.8.0.jar"
)
model = os.path.join(
PATH_TO_CORE,
"stanford-corenlp-3.8.0-models.jar"
)
Damit wird dann der Parser (ein StanfordDependencyParser
in diesem Fall) initialisiert.
In [12]:
dep_parser = StanfordDependencyParser(
jar, model,
model_path="edu/stanford/nlp/models/lexparser/" +
"englishPCFG.ser.gz"
)
Das Parsing geschieht wieder mittels raw_parse
.
In [13]:
result = dep_parser.raw_parse('I saw an elephant')
for parse in result:
print(parse.to_dot())
Probieren Sie auch die Default-Darstellung dieser Dependency-Graphen in Jupyter aus. (Sie müssen dafür evtl. graphviz installieren.)
In [14]:
parse
Out[14]: