チョムスキー標準形 (CNF) を抽出しようとしています - 構文木から文の文法生成:
(ROOT
(S
(NP (DT the) (NNS kids))
(VP (VBD opened)
(NP (DT the) (NN box))
(PP (IN on)
(NP (DT the) (NN floor))))))
ツリー全体を S という名前の文字列に入れてから、次のようにします。
tree = Tree.fromstring(S)
tree.chomsky_normal_form()
for p in tree.productions():
print p
出力は
(1) NN -> 'box'
(2) PP -> IN NP
(3) DT -> 'the'
(4) ROOT -> S
(5) NP -> DT NN
(6) VBD -> 'opened'
(7) VP|<NP-PP> -> NP PP
(8) VP -> VBD VP|<NP-PP>
(9) NP -> DT NNS
(10) NN -> 'floor'
(11) IN -> 'on'
(12) NNS -> 'kids'
(13) S -> NP VP
しかし、一部の作品 (7 番と 8 番) は CNF ではないようです! 何が問題ですか?