开始使用

安装 spaCy

操作系统
平台
包管理器
硬件
配置
训练好的管道
选择处理流程用于
# 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的setup.cfg中的[options.extras_require]部分。

名称描述
lookupsInstall spacy-lookups-data for data tables for lemmatization and lexeme normalization. The data is serialized with trained pipelines, so you only need this package if you want to train your own models.
transformersInstall spacy-transformers. The package will be installed automatically when you install a transformer-based pipeline.
cuda, …Install spaCy with GPU support provided by CuPy for your given CUDA version. See the GPU installation instructions for details and options.
appleInstall thinc-apple-ops to improve performance on an Apple M1.
ja, ko, thInstall additional dependencies required for tokenization for the languages.

conda

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

如需获取包含构建配方和配置的原料,请查看 此代码库。请注意,我们 目前未在conda上发布任何预发布版本

升级spaCy

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

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

使用GPU运行spaCy

从v2.0版本开始,spaCy配备了由我们的机器学习库Thinc实现的神经网络模型。对于GPU支持,我们非常感谢使用了Chainer的CuPy模块的工作,该模块为GPU数组提供了与numpy兼容的接口。

spaCy可以通过指定spacy[cuda]spacy[cuda102]spacy[cuda112]spacy[cuda113]等安装在兼容CUDA的GPU上。如果您知道CUDA版本,使用更明确的标识符可以让CuPy通过wheel安装,节省一些编译时间。这些标识符应该会安装cupy

在完成支持GPU的安装后,激活GPU的最佳方式是在脚本中加载任何处理管道之前调用spacy.prefer_gpuspacy.require_gpu()require_gpu会在没有可用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++ Build ToolsVisual Studio Express版本。

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

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

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

要解决这个问题,可以创建一个新的虚拟环境并使用构建约束安装spacy及其所有依赖项。 Build constraints 指定一个较旧版本的numpy,该版本仅在编译spacy时使用, 这样您的运行时环境就可以使用任何较新版本的numpy并保持兼容性。此外,使用--no-cache-dir来忽略任何先前缓存的 wheel文件,以便所有相关包都能从头开始重新编译:

我们当前的构建约束指定了PyPI上针对x86_64aarch64架构支持的最旧numpy版本。根据您的平台和环境,您可能需要自定义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

spaCy VSCode扩展为处理spaCy的配置文件提供了额外的工具和功能。1.0.0版本包含了可安装扩展中配置文件的注册函数、变量和区块名称的悬停描述。

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

构建可执行文件

spaCy代码库包含一个Makefile文件,它使用pex(Python可执行文件)构建可执行的zip文件。该可执行文件包含spaCy及其所有包依赖项,运行时仅需系统Python环境。构建.pex可执行文件通常是部署spaCy最便捷的方式,因为它允许你将构建过程与部署过程分离。

您可以通过以下环境变量来配置构建过程:

变量描述
SPACY_EXTRASAdditional Python packages to install alongside spaCy with optional version specifications. Should be a string that can be passed to pip install. See Makefile for defaults.
PYVERThe Python version to build against. This version needs to be available on your build and runtime machines. Defaults to 3.8.
WHEELHOUSEDirectory to store the wheel files during compilation. Defaults to ./wheelhouse.

运行测试

spaCy附带一个全面的测试套件。要运行测试,通常需要克隆代码仓库从源码构建spaCy。这也会安装requirements.txt中定义的所需开发依赖项和测试工具。

或者,您可以查找spaCy的安装位置并在该目录下运行pytest。别忘了通过spaCy的requirements.txt安装测试工具:

在spaCy目录下调用pytest将仅运行基础测试。标志--slow是可选的,启用该标志将运行耗时更长的额外测试。

故障排除指南

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

这通常意味着您尝试下载的训练管道不存在,或与您当前使用的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文件,通过类似path/to/spacy/model/** -text的条目来告诉Git哪些文件或文件夹不应执行LF到CRLF的转换。完成其中任一操作后,请重新克隆你的代码库。

更新日志