2017-08-18 119 views
3

我正在嘗試使用NLTK來確定一個句子是否有效。 我裝的語法,但每當我設法得到它不工作的解析器和我得到的錯誤「AttributeError的:‘海峽’對象有沒有屬性‘check_coverage’」 這是我的代碼:Python NLTK解析錯誤? 'str'對象沒有屬性'check_coverage'

sentence = ['show', 'me', 'northwest', 'flights', 'to', 'detroit', '.'] 
grammar = nltk.data.load('grammars/large_grammars/atis.cfg', 'text') 
parser = nltk.parse.BottomUpChartParser(grammar) 
chart = parser.chart_parse(sentence) 

以下是完整的回溯: 回溯(最近通話最後一個):

File "<ipython-input-448-852d3bb24984>", line 1, in <module> 
chart = parser.chart_parse(sentence) 

File "C:\Users\Class2016\Anaconda3\lib\site-packages\nltk\parse\chart.py", 
line 1310, in chart_parse 
    self._grammar.check_coverage(tokens) 

AttributeError: 'str' object has no attribute 'check_coverage' 

,我從下單元測試在這裏列出對於大型上下文無關文法的例子這部分代碼:http://www.nltk.org/howto/parse.html

任何信息爲什麼發生這種情況或如何糾正這將不勝感激。

謝謝!

+1

什麼是完整的追蹤?這個例外不是直接來自這3行...... –

+0

@JonClements我剛加了它 –

+0

@VinnyChase我的答案是否解決了問題? –

回答

1

展望由this鏈接,你可能需要先分析這些規則使用nltk.parse_cfg

rules = nltk.data.load('grammars/large_grammars/atis.cfg', 'text') 
grammar = nltk.parse_cfg(rules) 
parser = nltk.parse.BottomUpChartParser(parsed_grammar) 
+0

使用我的nltk/python版本,我實際上不得不使用CFG.fromstring()來代替,這應該是該版本中的等價物,但是它的工作完美 –

相關問題