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.