Übung 2

Aufgabe 1     Eine erste syntaktische Analyse

Kreieren Sie Ihre ersten Syntaxbäume, indem Sie das folgende Python-Skript ausführen!

  1. Warum gibt die parse-Funktion in Zeile 16 des Skripts vermutlich eine Sequenz zurück? Warum ist die Alternative tree = parser.parse(sent) weniger wünschenswert?

  2. Worin liegen die Unterschiede zwischen den ausgegebenen Bäumen?

  3. Warum ist der gegebene Satz „I shot an elephant in my pajamas“ syntaktisch ambig?


In [1]:
import nltk

grammar = nltk.CFG.fromstring("""
    S -> NP VP
    PP -> P NP
    NP -> Det N | Det N PP | 'I'
    VP -> V NP | VP PP
    Det -> 'an' | 'my'
    N -> 'elephant' | 'pajamas'
    V -> 'shot'
    P -> 'in'
""")

parser = nltk.ChartParser(grammar)
sent = "I shot an elephant in my pajamas".split()
for tree in parser.parse(sent):
    print(tree)
    display(tree)


(S
  (NP I)
  (VP
    (VP (V shot) (NP (Det an) (N elephant)))
    (PP (P in) (NP (Det my) (N pajamas)))))
(S
  (NP I)
  (VP
    (V shot)
    (NP (Det an) (N elephant) (PP (P in) (NP (Det my) (N pajamas))))))