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

新手上路,请多包涵

我试图在计算服务器上下载/更新 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

原文由 shenglih 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.7k
2 个回答

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

命令行安装

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

  • C:\nltk_data (视窗);
  • /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 并没有真正给出任何正确的指导,但它应该是一个通用的独立路径,不在任何安装树下(所以不在 <python-install-directory>/lib/site-packages 下)或任何用户目录。因此, /usr/local/share/opt/share 或类似的。在 MacOS 10.7+ 上, /usr 以及 /usr/local/ 这些天默认隐藏,所以 /opt/share 可能是更好的选择。或者做 chflags nohidden /usr/local/share

原文由 smci 发布,翻译遵循 CC BY-SA 3.0 许可协议

根据 文档

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

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

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

原文由 Ortomala Lokni 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题