NLTK API 到 Stanford POSTagger 在终端中对 ipython 工作正常但在 Anaconda 中与 spyder 不工作

NLTK API to Stanford POSTagger works fine for ipython in terminal but not working in Anaconda with spyder

我已经按照针对以下问题编写的说明下载了 stanford postagger 和解析器:

Stanford Parser and NLTK

但是当我在底部执行命令时,它在终端 (Mac OS) 中对 ipython 工作得很好,但在 Spyder(Anaconda) 中显示错误 (NLTK 无法找到 stanford-postagger.jar!)因为我在终端中设置了 CLASSPATH,所以我不确定出了什么问题。当我检查

import os
print os.environ.get('CLASSPATH')

它在 Spyder 中返回了 None,但在终端中返回了正确的路径。我还重新启动了程序并将目录设置为 $HOME。这里有什么我可能遗漏的吗?

from nltk.tag.stanford import StanfordPOSTagger
st = StanfordPOSTagger('english-bidirectional-distsim.tagger')
st.tag('What is the airspeed of an unladen swallow ?'.split())

问题与python或nltk无关;这是 OS X 启动 GUI 应用程序的结果。基本上,CLASSPATH 环境变量是在您的 .profile 或其亲属中设置的,但该文件仅在您启动终端时执行; GUI 应用程序从您的登录进程继承它们的环境,它不知道 CLASSPATH

关于如何处理这个问题有很多问题;参见 here or here。但在您的情况下,还有一些应该有效的解决方法:

  1. 从终端命令行启动 Spyder,而不是通过 Launchpad(只需键入 spyder &)。或者

  2. 您的 python 程序还可以在启动 Stanford 解析器之前设置自己的环境(将由子进程继承),如下所示:

    os.putenv("CLASSPATH", "/path/to/the/parser")