NLTK:为什么nltk无法识别stanford-ner的CLASSPATH变量?

cha*_*man 6 python named-entity-recognition nltk stanford-nlp

这是我的代码

from nltk.tag import StanfordNERTagger
st = StanfordNERTagger('english.all.3class.distsim.crf.ser.gz')
Run Code Online (Sandbox Code Playgroud)

我明白了

NLTK was unable to find stanford-ner.jar! Set the CLASSPATH
  environment variable.
Run Code Online (Sandbox Code Playgroud)

这就是我.bashrc在ubuntu中的样子

export CLASSPATH=/home/wolfgang/Downloads/stanford-ner-2015-04-20/stanford-ner-3.5.2.jar
export STANFORD_MODELS=/home/wolfgang/Downloads/stanford-ner-2015-04-20/classifiers
Run Code Online (Sandbox Code Playgroud)

此外,我尝试以这种方式在python中打印环境变量

import os
os.environ.get('CLASSPATH')
Run Code Online (Sandbox Code Playgroud)

我接受了

'/home/wolfgang/Downloads/stanford-ner-2015-04-20/stanford-ner-3.5.2.jar'
Run Code Online (Sandbox Code Playgroud)

因此变量正在设置!

那有什么不对?

为什么不知道我的环境变量?

wol*_*ang 6

将 .jar 文件和环境变量从stanford-ner-3.5.2.jar更改为stanford-ner.jar

显然 NLTK 有一个name_pattern变量,nltk_internals.py如果它与值的正则表达式匹配,则该变量只接受 CLASSPATHstanford-ner.jar

  • 或者您也可以简单地将类路径设置为父文件夹,例如`os.environ['CLASSPATH'] = "/home/wolfgang/Downloads/stanford-ner-2015-04-20"`。这两个选项(父文件夹或 stanford-ner.jar)都对我有用。 (3认同)