Stanford Dependency Parser Setup et NLTK

ainsi j'ai obtenu le" standard "Stanford Parser de travailler grâce aux réponses de danger89 à ce post précédent, Stanford Parser et NLTK .

cependant, j'essaie maintenant de faire fonctionner l'analyseur de dépendances et il semble que la méthode mise en évidence dans le lien précédent ne fonctionne plus. Voici mon code:

import nltk
import os
java_path = "C:Program FilesJavajre1.8.0_51binjava.exe" 
os.environ['JAVAHOME'] = java_path


from nltk.parse import stanford
os.environ['STANFORD_PARSER'] = 'path/jar'
os.environ['STANFORD_MODELS'] = 'path/jar'
parser = stanford.StanfordDependencyParser(model_path="path/jar/englishPCFG.ser.gz")

sentences = parser.raw_parse_sents(nltk.sent_tokenize("The iPod is expensive but pretty."))

j'obtiens l'erreur suivante: l'objet' module ' n'a pas d'attribut 'StanfordDependencyParser'

la seule chose que j'ai changée était" StanfordDependencyParser "de"StanfordParser". Des idées comment je peux obtenir que cela fonctionne?

j'ai aussi essayé le Stanford Neural Dependency parser en l'important comme indiqué dans la documentation ici: http://www.nltk.org/_modules/nltk/parse/stanford.html

celui-ci n'a pas fonctionné non plus.

Assez nouveau pour NLTK. Merci d'avance pour toutes informations utiles.

4
demandé sur Community 2015-12-03 00:08:46

2 réponses

L'API StanfordDependencyParser est un nouvel objet de classe créé depuis la version 3.1 de NLTK.

assurez-vous que vous disposez de la plus récente NLTK disponible par l'entremise de pip

pip install -U nltk

ou par l'intermédiaire de votre gestionnaire de paquets linux, par exemple:

sudo apt-get python-nltk

ou dans windows, Télécharger https://pypi.python.org/pypi/nltk et installer et il devrait écraser votre version NLTK précédente.

puis vous peut utiliser L'API comme indiqué dans la documentation:

from nltk.parse.stanford import StanfordDependencyParser
dep_parser=StanfordDependencyParser(model_path="edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz")
print [parse.tree() for parse in dep_parser.raw_parse("The quick brown fox jumps over the lazy dog.")]

[out]:

[Tree('jumps', [Tree('fox', ['The', 'quick', 'brown']), Tree('dog', ['over', 'the', 'lazy'])])]

(Note: assurez-vous d'obtenir votre chemin vers jar et os.environ correct, dans Windows , c'est something\something\some\path , dans unix c'est something/something/some/path )

Voir aussi https://github.com/nltk/nltk/wiki/Installing-Third-Party-Software#stanford-tagger-ner-tokenizer-and-parser et lorsque vous avez besoin D'une solution TL;DR, voir https://github.com/alvations/nltk_cli

5
répondu alvas 2015-12-03 13:29:33

si la seule chose que vous avez changée était" StanfordDependencyParser "et que l'erreur indique: module' object has no attribute 'StanfordDependencyParser' Je supposerais que StanfordDependencyParser était la mauvaise chose à changer. Avez-vous copié tout le code que vous avez lié à verbatim?

0
répondu beoliver 2015-12-02 21:31:04