Cannot run Stanford CoreNLPDependency parser, cannot find jar version 4.1.0

Viewed 151

I have an issue in getting Stanford's CoreNLPDependencyParser to run. I am running this in a Python 3 Jupyter Notebook in a Windows 10 setup.

What I need is to return the dependency tree for an RDF triplet extraction tool that I'm working on, english text only.

What I have tried unsuccessfully is the following:

After the following import:

from nltk.parse import CoreNLPDependencyParser
from nltk.parse.corenlp import CoreNLPServer
import os

This one seems to get me the closest, as it actually finds the file path:

os.environ['CLASSPATH'] = r'C:\Users\XXX\YYY\ZZZ\stanford-corenlp-4.1.0'

jar = r'C:\\Users\\XXX\\YYY\\ZZZ\\stanford-corenlp-4.1.0\\stanford-corenlp-4.1.0.jar'
model = r'C:\\Users\\XXX\\YYY\\ZZZ\\stanford-corenlp-4.1.0\\stanford-corenlp-4.1.0-models.jar'

with CoreNLPServer(path_to_jar=jar,path_to_models_jar=model) as server:
    dep_parser = CoreNLPDependencyParser(url=server.url)

but I get the following error:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-6-da573f299428> in <module>
      2 jar = r'C:\\Users\\XXX\\YYY\\ZZZ\\stanford-corenlp-4.1.0\\stanford-corenlp-4.1.0.jar'
      3 model = r'C:\\Users\\XXX\\YYY\\ZZZ\\stanford-corenlp-4.1.0\\stanford-corenlp-4.1.0-models.jar'
----> 4 with CoreNLPServer(path_to_jar=jar,path_to_models_jar=model) as server:
      5     dep_parser = CoreNLPDependencyParser(url=server.url)

~\Anaconda3\lib\site-packages\nltk\parse\corenlp.py in __init__(self, path_to_jar, path_to_models_jar, verbose, java_options, corenlp_options, port)
     71 
     72         # find the most recent code and model jar
---> 73         stanford_jar = max(jars, key=lambda model_name: re.match(self._JAR, model_name))
     74 
     75         if port is None:

TypeError: '>' not supported between instances of 'NoneType' and 'NoneType'

That error and class makes me think that I need to just include the path for the jar file directory as shown here:

os.environ['CLASSPATH'] = r'C:\Users\XXX\YYY\ZZZ\stanford-corenlp-4.1.0'
jar = r'C:\\Users\\XXX\\YYY\\ZZZ\\stanford-corenlp-4.1.0'
model = r'C:\\Users\\XXX\\YYY\\ZZZ\\stanford-corenlp-4.1.0'
with CoreNLPServer(path_to_jar=jar,path_to_models_jar=model) as server:
    dep_parser = CoreNLPDependencyParser(url=server.url)

But that can't find the jar files:

LookupError: Could not find stanford-corenlp-(\d+)\.(\d+)\.(\d+)\.jar jar file at C:\\Users\\XXX\\YYY\\ZZZ\\stanford-corenlp-4.1.0

despite the jar files showing up when I use nltk's internal file find_jars_within_path method.

>>> from nltk.internals import find_jars_within_path
>>> find_jars_within_path(r'C:\Users\XXX\YYY\ZZZ\stanford-corenlp-4.1.0')
['C:\\Users\\XXX\\YYY\\ZZZ\\stanford-corenlp-4.1.0\\stanford-corenlp-4.1.0-models.jar',
 'C:\\Users\\XXX\\YYY\\ZZZ\\stanford-corenlp-4.1.0\\stanford-corenlp-4.1.0.jar']

What I'd like is to get this to work, but I would be happy with a simpler way to go about all of this RDF extraction. I am trying to utilize the parse.triples() method.

0 Answers
Related