2014-10-16 104 views
3

所以我正在通过一个涉及python和NLTK的教程。Python,NLTK,无法导入“parse_cfg”?

我目前正在使用上下文无关语法。

我键入以下命令,并得到一个错误...

>>> from nltk import parse_cfg 
Traceback (most recent call last): 
File "(stdin)", line 1, in (module) 
ImportError: cannot import name parse_cfg 

没有人有任何想法可能是什么造成的?一些cfg命令有效,但不是这个。

+2

是的,我想'parse'模块开发人员已将其转移并忘记放回。提出的问题:https://github.com/nltk/nltk/issues/771 – alvas 2014-10-17 07:38:52

+0

也请'nltk .__ version__'注意哪个版本的nltk导致了问题。 – alvas 2014-10-17 07:42:07

+0

@alvas它的3.0.0版本 – Wolff 2014-10-17 16:41:43

回答

9

我们更新了API的NLTK 3.请read the docs

访问旧nltk.parse_cfg()的方法是使用从http://www.nltk.org/howto/grammar.htmlCFG.fromstring()

例子:

>>> from nltk import CFG 
>>> grammar = CFG.fromstring(""" 
... S -> NP VP 
... PP -> P NP 
... NP -> Det N | NP PP 
... VP -> V NP | VP PP 
... Det -> 'a' | 'the' 
... N -> 'dog' | 'cat' 
... V -> 'chased' | 'sat' 
... P -> 'on' | 'in' 
... """) 
>>> grammar 
<Grammar with 14 productions> 
>>> grammar.start() 
S 
>>> grammar.productions() 
[S -> NP VP, PP -> P NP, NP -> Det N, NP -> NP PP, VP -> V NP, VP -> VP PP, 
Det -> 'a', Det -> 'the', N -> 'dog', N -> 'cat', V -> 'chased', V -> 'sat', 
P -> 'on', P -> 'in'] 
+1

这将是非常好的,如果你指出的问题,并添加一个简洁的解决方案,除了提供的链接。 – user3473830 2014-10-18 14:35:56