grammar = nltk.CFG.fromstring("""
S -> NP VP Q |Q NP VP|
NP -> Det N | Det N PP
VP -> V NP | V NP PP
PP -> P NP
NP -> 'I'
N -> 'man' | 'park' | 'telescope' | 'dog'|'car'
Det -> 'the' | 'a'
P -> 'in' | 'with'
V -> 'saw'
Q ->'As'|null
""")
sent = 'I saw a car in the park'.split()
parser = nltk.ChartParser(grammar, trace=2)
t= parser.parse(sent)
for tree in t:
#print(tree)
tree.draw()
Yukarıdaki cümlede 'As' isteğe bağlıdır. Nltk dilbilgisine null veya lambda yazarım?CFG'de null veya lambda nasıl tanımlanır?
Bu özel dilbilgisinde, ilk satırı aşağıdaki gibi değiştirerek Q ihtiyacını ortadan kaldırabilirsiniz: S -> 'As' NP VP | NP VP 'As' | NP VP –
@ScottHunter, Q'nun birden fazla değere sahip olabileceğini düşünür Q -> 'Ama' | 'As' | "ne zaman" | null. Dilbilgisinde null yazmayı öğrenmek istiyorum. – gully