У меня есть (большой) список проанализированных предложений (которые были проанализированы с использованием парсер Stanford), например, предложение "Теперь вы можете развлекаться" имеет следующее дерево:
(ROOT
(S
(ADVP (RB Now))
(, ,)
(NP (PRP you))
(VP (MD can)
(VP (VB be)
(VP (VBN entertained))))
(. .)))
Я использую набор деревьев предложений для индукции грамматики с использованием nltk:
import nltk
# ... for each sentence tree t, add its production to allProductions
allProductions += t.productions()
# Induce the grammar
S = nltk.Nonterminal('S')
grammar = nltk.induce_pcfg(S, allProductions)
Теперь я хотел бы использовать grammar
для генерации новых случайных предложений. Я надеюсь, что, поскольку грамматика была получена из определенного набора примеров ввода, то сгенерированные предложения будут семантически подобными. Могу ли я сделать это в nltk?
Если я не могу использовать nltk для этого, существуют ли какие-либо другие инструменты, которые могут принимать (возможно, отформатированные) grammar
и генерировать предложения?