首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用stanford解析器生成句子

使用stanford解析器生成句子
EN

Stack Overflow用户
提问于 2017-10-11 22:57:52
回答 1查看 268关注 0票数 0

我正在尝试使用斯坦福解析器生成类似的句子。步骤:

1.使用斯坦福语料库分析输入句子。

2.从解析的句子中生成产生式规则

3.替换一些终结值

4.使用nltk.parse.generate中的generate()函数重新生成句子

我有三个疑问:

1. StanfordParser总是生成有限的产生式规则吗?

2.使用generate函数时,对于几个句子,我得到以下错误。

"RuntimeError:调用Python对象时超出了最大递归深度“

当我使用sys.setrecursionlimit(0x10000000)设置递归限制时,我得到错误:“分段错误: 11”

2.1我可以增加递归限制吗?

2.2如何解决此问题?

3这是正确的方法吗?我该如何改进它呢?

EN

回答 1

Stack Overflow用户

发布于 2017-10-12 15:37:18

函数nltk.parse.generate.generate()用于生成语法的所有产生式。这意味着即使是一个递归规则,比如NP中的NP (经常发生)也会给你无限的递归。正如文档所指出的,您可以通过限制递归的深度来控制它(例如,depth=20)。如果您愿意,还可以指定要生成的树的数量(n=100)。

这些限制将解决无限递归问题,但它们不能保证您会喜欢结果。generate()按顺序插入所有可能的扩展,因此如果第一个规则是递归的,它将被反复使用。例如,如果选择生成的第50棵树,可能会得到更好的结果;但如果检查生成的语法结构,并编写自己的生成器,在可能的扩展中进行随机选择,则肯定会得到最好的结果。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46691516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档