Stanford POSTagger的NLTK API适用于终端中的ipython,但不适用于带有spyder的Anaconda

时间:2016-05-10 20:39:43

标签: python nltk stanford-nlp anaconda 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())

1 个答案:

答案 0 :(得分:1)

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

关于如何处理这个问题有很多SO问题;请参阅herehere。但在你的情况下,还有一些应该工作的解决办法:

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

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

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