【问题标题】:Change nltk.download() path directory from default ~/ntlk_data从默认 ~/ntlk_data 更改 nltk.download() 路径目录
【发布时间】:2017-12-05 01:24:16
【问题描述】:

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

【问题讨论】:

    标签: python python-2.7 path nltk default


    【解决方案1】:

    这可以通过命令行(nltk.download(..., download_dir=) 或 GUI 进行配置。奇怪的是,nltk 似乎完全忽略了它自己的环境变量 NLTK_DATA 并将其下载目录默认为一组标准的五个路径,无论 @987654325 是否@ 已定义及其指向的位置,无论机器或架构上是否存在 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 并没有真正给出任何适当的指导,但它应该是一个通用的独立路径,不在任何安装树下(所以不在&lt;python-install-directory&gt;/lib/site-packages ) 或任何用户目录。因此,/usr/local/share/opt/share 或类似名称。在 MacOS 10.7+ 上,/usr/usr/local/ 这些天默认是隐藏的,所以 /opt/share 可能是更好的选择。或者chflags nohidden /usr/local/share

    【讨论】:

    • 这不是我看到的行为.. 作为 docker 容器中的 root 下载到 /root/nltk_data。
    • @user239558: 哪个操作系统和 nltk 版本?
    • 如果我们只下载Linux中特定目录的停用词sudo python -m nltk.downloader -d /usr/local/share/nltk_data stopwords
    • @HansikaHettiarachchi 您可以指定多个下载。 sudo python -m nltk.downloader -d /usr/local/share/nltk_data stopwords wordnet punkt
    • @user239558 等,如果您发现了 docbug,请report it to nltk
    【解决方案2】:

    根据documentation

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

    指定下载目录,例如:

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

    【讨论】:

    • 要检索一些 nltk 下载的包,您可能还需要在 nltk 的数据路径中包含 download_dir -> nltk.data.path.append('/mnt/data/treebank')
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      NLTK GUI 也可以从 PyCharm 社区版 Python 控制台启动。 只需发出 2 个命令:

      1) 导入 nltk

      2) nltk.download_gui()

      但如果你在控制台的代理服务器后面,nltk GUI 将无法工作,你必须先设置代理设置

      SET HTTP_PROXY=proxy.mycompany.com:8080

      然后它就会工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-19
        • 2021-07-20
        • 1970-01-01
        • 2013-09-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多