So I got the "standard" Stanford Parser to work thanks to danger89's answers to this previous post, Stanford Parser and NLTK.
However, I am now trying to get the dependency parser to work and it seems the method highlighted in the previous link no longer works. Here is my code:
import nltk
import os
java_path = "C:\\Program Files\\Java\\jre1.8.0_51\\bin\\java.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."))
I get the following error: 'module' object has no attribute 'StanfordDependencyParser'
The only thing I changed was "StanfordDependencyParser" from "StanfordParser". Any ideas how I can get this to work?
I also tried the Stanford Neural Dependency parser by importing it as shown in the documentation here: http://www.nltk.org/_modules/nltk/parse/stanford.html
This one didn't work either.
Pretty new to NLTK. Thanks in advance for any helpful input.
The
StanfordDependencyParser
API is a new class object created since NLTK version 3.1.Ensure that you have the latest NLTK available either through pip
or through your linux package manager, e.g.:
or in windows, download https://pypi.python.org/pypi/nltk and install and it should overwrite your previous NLTK version.
Then you can use the API as shown in the documentation:
[out]:
(Note: Make sure you get your path to jar and
os.environ
correct, in Windows, it'ssomething\\something\\some\\path
, in unix it'ssomething/something/some/path
)See also https://github.com/nltk/nltk/wiki/Installing-Third-Party-Software#stanford-tagger-ner-tokenizer-and-parser and when you need a TL;DR solution, see https://github.com/alvations/nltk_cli
If the only thing you changed was 'StanfordDependencyParser' and the error states:
module' object has no attribute 'StanfordDependencyParser'
I would assume thatStanfordDependencyParser
was the wrong thing to change it to. Have you copied all of the code that you linked to verbatim?