从默认的〜/ ntlk_data更改nltk.download()路径目录

时间:2017-07-01 04:42:14

标签: python python-2.7 path nltk default

我试图在计算服务器上下载/更新python nltk软件包,并返回此[Errno 122] Disk quota exceeded:错误。

具体做法是:

[nltk_data] Downloading package stop words to /home/sh2264/nltk_data...
[nltk_data] Error downloading u'stopwords' from
[nltk_data] <https://raw.githubusercontent.com/nltk/nltk_data/gh-
[nltk_data] pages/packages/corpora/stopwords.zip>: [Errno 122]
[nltk_data] Disk quota exceeded:
[nltk_data] u'/home/sh2264/nltk_data/corpora/stopwords.zip
False

如何更改nltk个包的整个路径,以及我应该做些哪些更改以确保nltk无错加载?

4 个答案:

答案 0 :(得分:13)

根据documentation

  

默认情况下,软件包安装在系统范围的目录中(如果Python有足够的权限写入它);或者在当前用户的主目录中。但是,如果需要,download_dir参数可用于指定不同的安装目标。

要指定下载目录,请使用例如:

nltk.download('treebank', download_dir='/mnt/data/treebank')

答案 1 :(得分:6)

这可以通过命令行(nltk.download(..., download_dir=)或GUI配置。奇怪的nltk似乎完全忽略了自己的环境变量NLTK_DATA,并将其下载目录默认为一组标准的五个路径,无论是NLTK_DATA是否被定义,它是指向何处,无论nltk的五个默认目录是否存在于机器或架构上(!)。Installing NLTK Data中记录了一些,尽管它不完整且有点埋没;转载如下更清晰的格式:

  

命令行安装

     

下载程序将搜索现有的nltk_data目录   安装NLTK数据。如果不存在,它将尝试创建一个   在中央位置(使用管理员帐户时)或   否则在用户的文件空间中。如有必要,请运行下载   来自管理员帐户的命令,或使用sudo。推荐   系统位置是:

     
      
  • C:\nltk_data(Windows);
  •   
  • /usr/local/share/nltk_data(Mac)和
  •   
  • /usr/share/nltk_data(Unix)。
  •   
     

您可以使用-d标志指定其他位置(但如果您这样做,请务必相应地设置NLTK_DATA环境变量。)

     
      
  • 运行命令python -m nltk.downloader all

  •   
  • 要确保集中安装,请运行命令:sudo python -m nltk.downloader -d /usr/local/share/nltk_data all

  •   
  • 但实际上他们应该说:sudo python -m nltk.downloader -d $NLTK_DATA all

  •   

现在关于推荐路径NLTK_DATA应该使用什么,nltk并没有给出任何正确的指导,但它应该是一个不在任何安装树下的通用独立路径(因此不在{{1 }}或任何用户目录。因此,<python-install-directory>/lib/site-packages/usr/local/share或类似。在MacOS 10.7 +上,/opt/share以及/usr这些天默认隐藏,因此/usr/local/可能是更好的选择。或者/opt/share

答案 2 :(得分:0)

NLTK Download GUI Screeshot (Windows)

NLTK GUI也可以从PyCharm Community Edition Python控制台启动。 只需发出2条命令:

1)导入nltk

2)nltk.download_gui()

但是如果您要在控制台上先设置代理服务器,则必须在代理服务器后面安装nltk GUI

SET HTTP_PROXY = proxy.mycompany.com:8080

然后它将起作用。

答案 3 :(得分:0)

您也可以使用nltk.download_shell()并按照如下所示进行交互。

enter image description here

还使用nltk.data.path.append('/your/new/data/directory/path')指示nltk从新数据路径加载数据。