Я пытаюсь создать контекстную грамматику для общих английских предложений, используя python 3.7 и различные библиотеки nltk.Код выполняется успешно, без ошибок для всех предложений.Но дерево не генерируется для всех предложений.Например:
В следующем случае:
q1 = "I shot an elephant in my pajamas"
q2 = "Big Data is huge unstructured type of data"
Дерево разбора генерируется для q1, а не для q2.И я не понимаю почему!
st1="""
S -> NP VP
NP -> NNP|Det N|Det N PP
NN -> JJ NN|N
VP -> V JJ|V NP|V S|V NP PP
PP -> P NP
"""+NNP+"\n"+Det+"\n"+N+"\n"+JJ+"\n"+V+"\n"+P
grammar1 = nltk.CFG.fromstring(st1)
sent = q1.split()
rd_parser = nltk.RecursiveDescentParser(grammar1)
for tree in rd_parser.parse(sent):
print(tree)
print(st1)
print(grammar1)
Ниже приведен вывод для q1.И то же самое дерево разбора должно быть сгенерировано для q2.
(S
(NP (Det ) (N I))
(VP
(V shot)
(NP (Det an) (N elephant) (PP (P in) (NP (Det my) (N pajamas))))))
(S
(NP (Det ) (N I))
(VP
(V shot)
(NP (Det an) (N elephant))
(PP (P in) (NP (Det my) (N pajamas)))))
Вы можете увидеть полный код здесь