如何在Python中处理一些模糊的上下文无关语法产生

时间:2014-11-14 00:38:51

标签: python pipe nltk context-free-grammar chomsky-normal-form

我试图通过将nltk.cfg与一堆语法产品一起使用来使用CNF语法,如:

 NN -> 'rubble' | 'slope' | 'Jake'
 VP -> V NP | VP PP 

但它有问题(给出错误:预期箭头),生产的左侧有管道。例如:

VP | <VBP-SBAR> -> VBP SBAR

nltk是否有任何语法方法,左边的管道没有问题?

如果没有,我如何将所有这些作品改为第一组的可用作品?例如:

VP  -> VBP SBAR    
<VBP-SBAR> -> VBP SBAR

1 个答案:

答案 0 :(得分:1)

生产左侧有多个选项的生产规则不再是无上下文语法 - 每条规则的LHS必须只有一个非终结符。

嗯,首先,如果你可以拆分规则,它确实没有任何意义

VP | <VBP-SBAR> -> VBP SBAR

分为两个规则

VP -> VBP SBAR
<VBP-SBAR> -> VBP SBAR