NLTK软件包和其他依赖项出错

时间:2019-03-15 14:38:16

标签: python nlp stanford-nlp named-entity-recognition ner

我已经安装了NLTK软件包和其他依赖项,并如下设置环境变量:

STANFORD_MODELS=/mnt/d/stanford-ner/stanford-ner-2018-10-16/classifiers/english.all.3class.distsim.crf.ser.gz:/mnt/d/stanford-ner/stanford-ner-2018-10-16/classifiers/english.muc.7class.distsim.crf.ser.gz:/mnt/d/stanford-ner/stanford-ner-2018-10-16/classifiers/english.conll.4class.distsim.crf.ser.gz

CLASSPATH=/mnt/d/stanford-ner/stanford-ner-2018-10-16/stanford-ner.jar

当我尝试如下访问分类器时:

stanford_classifier = os.environ.get('STANFORD_MODELS').split(':')[0]

stanford_ner_path = os.environ.get('CLASSPATH').split(':')[0]

st = StanfordNERTagger(stanford_classifier, stanford_ner_path, encoding='utf-8')

我收到以下错误。但是我不明白是什么导致了此错误。

Error: Could not find or load main class edu.stanford.nlp.ie.crf.CRFClassifier
OSError: Java command failed : ['/mnt/c/Program Files (x86)/Common 
Files/Oracle/Java/javapath_target_1133041234/java.exe', '-mx1000m', '-cp', '/mnt/d/stanford-ner/stanford-ner-2018-10-16/stanford-ner.jar', 'edu.stanford.nlp.ie.crf.CRFClassifier', '-loadClassifier', '/mnt/d/stanford-ner/stanford-ner-2018-10-16/classifiers/english.all.3class.distsim.crf.ser.gz', '-textFile', '/tmp/tmpaiqclf_d', '-outputFormat', 'slashTags', '-tokenizerFactory', 'edu.stanford.nlp.process.WhitespaceTokenizer', '-tokenizerOptions', '"tokenizeNLs=false"', '-encoding', 'utf8']

1 个答案:

答案 0 :(得分:1)

我找到了这个问题的答案。我正在使用NLTK == 3.4。从NLTK == 3.3及更高版本开始,斯坦福NLP(POS,NER,令牌生成器)不会作为nltk.tag的一部分加载,而是从nltk.parse.corenlp.CoreNLPParser加载。 stackoverflow答案可在stackoverflow.com/questions/13883277/stanford-parser-and-nltk/中找到,官方文档的github链接为github.com/nltk/nltk/wiki/Stanford-CoreNLP-API-in-NLTK

如果您面临NER标记程序或coreNLP API的任何其他解析器的超时问题,请提供其他信息,如https://github.com/nltk/nltk/wiki/Stanford-CoreNLP-API-in-NLTK/_compare/3d64e56bede5e6d93502360f2fcd286b633cbdb9...f33be8b06094dae21f1437a6cb634f86ad7d83f7所述,以最大的幅度增加超时限制。