开始使用

安装 spaCy

操作系统
平台
包管理器
textcat
配置
训练管道
选择管道以获得
# Note M1 GPU support is experimental, see Thinc issue #792python -m venv .envsource .env/bin/activatesource .env/bin/activate.env\Scripts\activatepython -m venv .envsource .env/bin/activatesource .env/bin/activate.env\Scripts\activateconda create -n venvconda activate venvpip install -U pip setuptools wheelpip install -U pip setuptools wheelpip install -U spacyconda install -c conda-forge spacyconda install -c conda-forge cupyconda install -c conda-forge spacy-transformersgit clone https://github.com/explosion/spaCycd spaCypip install -r requirements.txtpip install --no-build-isolation --editable .# packages only available via pippip install spacy-lookups-datapython -m spacy download ca_core_news_smpython -m spacy download zh_core_web_smpython -m spacy download hr_core_news_smpython -m spacy download da_core_news_smpython -m spacy download nl_core_news_smpython -m spacy download en_core_web_smpython -m spacy download fi_core_news_smpython -m spacy download fr_core_news_smpython -m spacy download de_core_news_smpython -m spacy download el_core_news_smpython -m spacy download it_core_news_smpython -m spacy download ja_core_news_smpython -m spacy download ko_core_news_smpython -m spacy download lt_core_news_smpython -m spacy download mk_core_news_smpython -m spacy download xx_ent_wiki_smpython -m spacy download nb_core_news_smpython -m spacy download pl_core_news_smpython -m spacy download pt_core_news_smpython -m spacy download ro_core_news_smpython -m spacy download ru_core_news_smpython -m spacy download sl_core_news_smpython -m spacy download es_core_news_smpython -m spacy download sv_core_news_smpython -m spacy download uk_core_news_sm

安装说明

spaCy 与 64 位 CPython 3.7+ 兼容,并且可以在 Unix/LinuxmacOS/OS XWindows 上运行。最新的 spaCy 版本可通过 pipconda 获取。

pip

使用 pip,spaCy 版本作为源代码包和二进制 wheel 提供。在安装 spaCy 及其依赖项之前,请确保您的 pipsetuptoolswheel 已更新到最新版本。

使用 pip 时,通常建议在虚拟环境中安装包,以避免修改系统状态

spaCy 还允许您通过在方括号中指定以下关键字来安装额外的依赖项,例如 spacy[ja]spacy[lookups,transformers](使用多个逗号分隔的额外项)。有关包含内容的详细信息,请参阅 spaCy 的 [options.extras_require] 部分 setup.cfg

名称描述
lookups安装 spacy-lookups-data,用于词形还原和词素规范化的数据表。数据与训练好的管道序列化在一起,因此只有在想要训练自己的模型时才需要此包。
transformers安装 spacy-transformers。当您安装基于 transformer 的管道时,该包将自动安装。
cuda,…安装带有 GPU 支持的 spaCy,该支持由 CuPy 为您的给定 CUDA 版本提供。有关详细信息和选项,请参阅 GPU 安装说明
apple安装 thinc-apple-ops,以提高 Apple M1 上的性能。
jakoth安装用于 语言分词所需的额外依赖项。

conda

感谢我们优秀的社区,我们能够重新添加 conda 支持。您还可以通过 conda-forge 安装 spaCy

对于包含构建配方和配置的 feed stock,请查看 此仓库。请注意,我们目前未在 conda 上发布任何 预发布版本

升级 spaCy

更新到 spaCy 的新版本时,通常建议从干净的虚拟环境开始。如果您正在升级到新的主要版本,请确保您安装了最新的 兼容训练好的管道,并且您的环境中没有遗留任何旧的不兼容包,因为这通常会导致意外的结果和错误。如果您训练了自己的模型,请记住您的训练和运行时输入必须匹配。这意味着您必须使用新版本 重新训练您的管道

spaCy 还提供了一个 validate 命令,该命令允许您验证所有已安装的管道包是否与您的 spaCy 版本兼容。如果发现不兼容的包,将打印提示和安装说明。建议使用 python -m 运行该命令,以确保您正在执行正确的 spaCy 版本。

使用 GPU 运行 spaCy

从 v2.0 开始,spaCy 带有用我们的机器学习库 Thinc 实现的神经网络模型。为了获得 GPU 支持,我们很感激能够使用 Chainer 的 CuPy 模块的工作,该模块为 GPU 数组提供与 numpy 兼容的接口。

可以通过指定 spacy[cuda]spacy[cuda102]spacy[cuda112]spacy[cuda113] 等来为 CUDA 兼容的 GPU 安装 spaCy。如果您知道您的 CUDA 版本,使用更明确的说明符可以允许通过 wheel 安装 CuPy,从而节省一些编译时间。这些说明符应安装 cupy

安装了 GPU 启用的安装后,激活它的最佳方法是在加载任何管道之前,在您的脚本中的某个位置调用 spacy.prefer_gpuspacy.require_gpu()。如果未检测到 GPU,require_gpu 将引发错误。

从源代码编译

安装 spaCy 的另一种方法是克隆其 GitHub 仓库 并从源代码构建它。如果您想更改代码库,这是常见的方法。您需要确保拥有包含头文件的 Python 发行版、编译器、pipgit 的开发环境。编译器部分是最难的部分。如何操作取决于您的系统。有关 UbuntumacOS / OS XWindows 的详细信息,请参阅说明。

使用构建约束进行安装

如何安装编译器和相关构建工具

  • Ubuntu: 通过 apt-get 安装系统级依赖项:sudo apt-get install build-essential python-dev git
  • macOS / OS X: 安装最新版本的 XCode,包括所谓的“命令行工具”。macOS 和 OS X 预装了 Python 和 Git。
  • Windows: 安装与用于编译您的 Python 解释器版本匹配的 Visual C++ 构建工具Visual Studio Express

使用构建约束从源代码编译

如果您从源代码或使用 pip 为 PyPI 上没有二进制 wheel 的平台安装 spaCy,则可能需要在您的环境中任何包需要较旧版本的 numpy 时使用构建约束。

如果在您编译 spacy 之后,numpy 从最新版本降级,您可能会看到如下错误

要解决此问题,请创建一个新的虚拟环境并使用构建约束安装 spacy 及其所有依赖项。 构建约束 指定一个较旧版本的 numpy,该版本仅在编译 spacy 时使用,然后您的运行时环境可以使用任何较新版本的 numpy 并且仍然兼容。此外,使用 --no-cache-dir 以忽略任何先前缓存的 wheel,以便重新编译所有相关包

我们的构建约束当前指定了 PyPI 上可用的最旧的受支持的 numpy 版本,适用于 x86_64aarch64。根据您的平台和环境,您可能需要自定义 numpy 的特定版本。对于其他平台,您可以查看 SciPy 的 oldest-supported-numpy 包,以了解推荐的最旧 numpy 版本。

(警告:不要使用 pip install -c constraints.txt 代替 PIP_CONSTRAINT,因为这不会应用于隔离的构建环境。)

开发人员的其他选项

对于正在编辑源代码并频繁重新编译的 spaCy 开发人员来说,一些额外的选项可能很有用。

  • 以可编辑模式安装。对 .py 文件的更改将在保存文件后立即反映,但对 Cython 文件 (.pxd.pyx) 的编辑需要再次运行下面的 pip install 命令。在以可编辑模式安装之前,请确保您已使用 pip uninstall spacy 删除了任何先前的安装,您可能需要多次运行此命令才能删除早期安装的所有痕迹。

  • 并行构建。从 v3.4.0 开始,您可以使用环境变量 SPACY_NUM_BUILD_JOBS 指定构建作业的数量。

  • 对于使用 python setup.py 而不是 pip 的可编辑模式和并行构建(不再推荐)

Visual Studio Code 扩展

spaCy extension demo

The spaCy VSCode Extension 提供了用于处理 spaCy 配置文件的一些额外的工具和功能。版本 1.0.0 包含可安装扩展中配置内注册函数、变量和部分名称的悬停描述。

  1. 在您的系统上安装受支持的 Python 版本(>=3.7
  2. 安装 Visual Studio Code 的 Python 扩展
  3. 创建一个 虚拟 python 环境
  4. 安装所有 python 依赖项(spaCy >= 3.4.0 & pygls >= 1.0.0
  5. 安装 Visual Studio Code 的 spaCy 扩展
  6. 选择您的 python 环境
  7. 您已准备好使用 spaCy 的 .cfg 文件!

构建可执行文件

spaCy 仓库包含一个 Makefile,它使用 pexPython Executable)构建一个可执行 zip 文件。该可执行文件包含 spaCy 及其所有包依赖项,并且在运行时只需要系统 Python。构建一个可执行 .pex 文件通常是将 spaCy 部署的最便捷方式,因为它允许您将构建与部署过程分离。

您可以使用以下环境变量配置构建过程

变量描述
SPACY_EXTRAS与 spaCy 一起安装的附加 Python 包,并带有可选的版本说明。应该是一个可以传递给 pip install 的字符串。请参阅 Makefile 以获取默认值。
PYVER要构建的 Python 版本。此版本需要在您的构建和运行时机器上可用。默认值为 3.8
WHEELHOUSE用于在编译期间存储 wheel 文件的目录。默认值为 ./wheelhouse

运行测试

spaCy 附带了一个 全面的测试套件。为了运行测试,您通常需要克隆 仓库从源代码构建 spaCy。这将安装所需的开发依赖项和测试实用程序,这些实用程序在 requirements.txt 中定义。

或者,您可以找到 spaCy 安装的位置,并在该目录上运行 pytest。不要忘记通过 spaCy 的 requirements.txt 安装测试实用程序。

在 spaCy 目录上调用 pytest 将仅运行基本测试。标志 --slow 是可选的,并且启用其他需要更长时间的测试。

故障排除指南

本节收集了您在安装、加载和使用 spaCy 时可能遇到的一些最常见错误及其解决方案。另请参阅 讨论 FAQ 线程,该线程更新更频繁,涵盖更多临时问题。

这通常意味着您尝试下载的训练管道不存在,或者不可用于您的 spaCy 版本。请查看 兼容性表,以查看您的 spaCy 版本有哪些包可用。如果您使用的是旧版本,请考虑升级到最新版本。请注意,虽然 spaCy 支持 多种语言 的分词,但并非所有语言都带有训练管道。要仅使用分词器,请导入语言的 Language 类,例如 from spacy.lang.fr import French

此错误意味着您的系统或环境中找不到 spaCy 模块。确保您已安装 spaCy。如果您正在使用虚拟环境,请确保已激活它,并检查 spaCy 是否已安装在该环境中 - 否则,您正在尝试加载系统安装。您还可以运行 which python 来查找您的 Python 可执行文件的位置。

从 spaCy v1.7 开始,所有训练管道都可以作为 Python 包安装。这意味着它们将成为您应用程序的可导入模块。如果失败,通常表明该包未安装在当前环境中。运行 pip listpip freeze 来检查您安装了哪些管道包,并在必要时安装 正确的包。如果您在文件的顶部手动导入一个包,请确保使用包的完整名称。

当您从命令行运行 spacy 命令时,可能会发生此错误。spaCy 当前不会将条目添加到您的 PATH 环境变量中,因为这可能会导致意外结果,尤其是在使用虚拟环境时。相反,spaCy 添加了一个自动别名,该别名将 spacy 映射到 python -m spacy。如果这未按预期工作,请使用 python -m 运行命令,例如 python -m spacy download en_core_web_sm。有关更多信息,请参阅 download 命令。

虽然从技术上讲,这可能有很多原因,包括 spaCy 损坏,但最可能的原因是您的脚本的文件或目录名称正在“遮蔽”模块 - 例如,您的文件名为 spacy.py,或者您正在导入的目录名为 spacy。因此,在使用 spaCy 时,永远不要将任何其他内容命名为 spacy

如果您的训练数据仅包含新实体,并且您没有混合任何模型先前识别的示例,这可能会导致模型“忘记”它先前所学的内容。这也被称为“灾难性遗忘问题”。一种解决方案是预先标记一些文本,并将其与新文本混合在您的更新中。您也可以通过在文本上运行 spaCy、提取模型先前正确识别的一些实体并将它们添加到您的训练示例中来做到这一点。

如果您正在训练模型、将它们写入磁盘并使用 git 进行版本控制,您可能会在 Windows 环境中加载它们时遇到此错误。 这是因为 Windows 版本的 Git 的默认安装配置为在文件检出期间自动将 Unix 风格的行尾字符 (LF) 转换为 Windows 风格的字符 (CRLF)(并在提交时反向转换)。 虽然这对于文本文件来说大多是没问题的,但写入磁盘的训练模型有一些二进制文件,这些文件不应该经过此转换。 当它们经过转换时,您将收到上述错误。 您可以通过更改您的 core.autocrlf 设置为 "false",或者通过提交一个 .gitattributes 文件到您的仓库,以告知 Git 在哪些文件或文件夹上不应执行 LF 到 CRLF 的转换,并添加类似 path/to/spacy/model/** -text 的条目。 完成这些操作后,再次克隆您的仓库。

更新日志