2017-08-18 2 views
3

J'essaie d'utiliser NLTK pour déterminer si une phrase est valide. i chargé la grammaire, mais chaque fois que j'essaie d'obtenir l'analyseur il ne fonctionne pas et je reçois l'erreur « AttributeError: objet « str » n'a pas d'attribut « check_coverage » » Ceci est mon code:Erreur d'analyse Python NLTK? L'objet 'str' n'a pas d'attribut '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) 

Voici la pleine retraçage: retraçage (le plus récent appel dernier):

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' 

Je suis cette partie du code de l'exemple ci-ici sous tests unitaires pour les grandes grammaires contexte: http://www.nltk.org/howto/parse.html

Toute information sur ce qui se passe ou comment corriger ceci serait grandement appréciée.

Merci!

+1

Quelle est la pleine retraçage? Cette exception ne vient pas directement de ces 3 lignes ... –

+0

@JonClements Je viens de l'ajouter –

+0

@VinnyChase Est-ce que ma réponse résout le problème? –

Répondre

1

Aller par this lien, vous pouvez analyser ces règles en utilisant d'abord 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

Avec ma version de nltk/python, j'ai dû utiliser CFG.fromstring() à la place, ce qui est censé être l'équivalent dans cette version, mais cela a fonctionné parfaitement –