我正在尝试使用斯坦福解析器生成类似的句子。步骤:
1.使用斯坦福语料库分析输入句子。
2.从解析的句子中生成产生式规则
3.替换一些终结值
4.使用nltk.parse.generate中的generate()函数重新生成句子
我有三个疑问:
1. StanfordParser总是生成有限的产生式规则吗?
2.使用generate函数时,对于几个句子,我得到以下错误。
"RuntimeError:调用Python对象时超出了最大递归深度“
当我使用sys.setrecursionlimit(0x10000000)设置递归限制时,我得到错误:“分段错误: 11”
2.1我可以增加递归限制吗?
2.2如何解决此问题?
3这是正确的方法吗?我该如何改进它呢?
发布于 2017-10-12 15:37:18
函数nltk.parse.generate.generate()用于生成语法的所有产生式。这意味着即使是一个递归规则,比如NP中的NP (经常发生)也会给你无限的递归。正如文档所指出的,您可以通过限制递归的深度来控制它(例如,depth=20)。如果您愿意,还可以指定要生成的树的数量(n=100)。
这些限制将解决无限递归问题,但它们不能保证您会喜欢结果。generate()按顺序插入所有可能的扩展,因此如果第一个规则是递归的,它将被反复使用。例如,如果选择生成的第50棵树,可能会得到更好的结果;但如果检查生成的语法结构,并编写自己的生成器,在可能的扩展中进行随机选择,则肯定会得到最好的结果。
https://stackoverflow.com/questions/46691516
复制相似问题