Spacy 简明教程

spaCy - Getting Started

本章将帮助读者了解 spaCy 的最新版本。此外,读者可以了解各个版本中的新特性和改进内容、其兼容性以及如何安装 spaCy。

Latest version

spaCy v3.0 是最新版本,以夜间发布的形式提供。这是 spaCy 通过一个名为 spacy-nightly 的单独渠道进行的实验和 alpha 版发布。它反映了“未来的 spaCy”,不能用于生产用途。

为了防止潜在的冲突,请尝试使用一个新的虚拟环境。

您可以使用以下给出的 pip 命令来安装它:

pip install spacy-nightly --pre

New Features and Improvements

下面解释了 spaCy 最新版本中的新特性和改进:

Transformer-based pipelines

它具有所有新的基于转换器的管道,并支持多任务学习。这些新的基于转换器的管道使其成为最高精度的框架(在最佳可用精度范围内 1%)。

您可以为您的管道访问数千个预训练模型,因为 spaCy 的转换器支持与 PyTorch 和 HuggingFace 转换器等其他框架互操作。

New training workflow and config system

spaCy v3.0 提供了我们训练运行的单个配置文件。

没有隐藏的默认值,因此,它使我们能够轻松地返回实验并跟踪更改。

Custom models using any ML framework

spaCy v3.0 的新配置系统使我们能够轻松定制神经网络 (NN) 模型,并通过 ML 库 Thinc 实现我们自己的架构。

Manage end-to-end workflows and projects

spaCy 项目让我们可以管理和共享各种用例和域的端到端工作流。

它还允许我们组织训练、打包和提供我们自己的管道服务。

另一方面,我们还可以与其他数据科学和 ML 工具集成,例如 DVC (Data Vision Control)ProdigyStreamlitFastAPIRay 等。

Parallel training and distributed computing with Ray

为了加速训练过程,我们可以使用 Ray,这是一个用于构建和运行分布式应用程序的快速且简单的框架,以在一台或多台远程机器上训练 spaCy。

New built-in pipeline components

这是 spaCy 的新版本,遵循新的可训练和基于规则的组件,我们可以将其添加到我们的管道中。

这些组件如下:

  1. SentenceRecognizer

  2. Morphologizer

  3. Lemmatizer

  4. AttributeRuler

  5. Transformer

  6. TrainablePipe

New pipeline component API

SpaCy v3.0 为我们提供了新的和改进的管道组件 API 和装饰器,这使得定义、配置、重用、训练和分析更加容易和方便。

Dependency matching

SpaCy v3.0 为我们提供了新的 DependencyMatcher ,它允许我们在依存解析器中匹配模式。它使用 Semgrex 运算符。

New and updated documentation

它有新的和更新的文档,包括 −

  1. 关于嵌入、转换和迁移学习的新使用指南。

  2. 关于培训管道和模型的指南。

  3. 关于 spaCy 新项目的详细信息和自定义管道组件的更新使用文档。

  4. 新的插图和新 API 参考页面记录了 spaCy 的 ML 模型架构和预测的数据格式。

Compatibility

spaCy 可以在所有主流操作系统上运行,如 Windows、macOS/OS X 和 Unix/Linux。它与 64 位 CPython 2.7/3.5+ 版本兼容。

Installing spaCy

下面阐释了安装 spaCy 的不同选项 −

Using package manager

spaCy 的最新发布版本可以通过两个包管理器 pipconda 获得。让我们了解如何使用它们来安装 spaCy −

pip − 要使用 pip 安装 Spacy,可以使用以下命令 −

pip install -U spacy

为了避免修改系统状态,建议在虚拟环境中安装 spacy 包,如下所示 −

python -m venv .env
source .env/bin/activate
pip install spacy

conda − 要通过 conda-forge 安装 spaCy,可以使用以下命令 −

conda install -c conda-forge spacy

From source

您还可以通过从 GitHub repository 制作克隆并从源代码构建来安装 spaCy。这是对代码库进行更改的最常用方式。

但是,为此,您需要拥有包含以下内容的 python 发行版 −

  1. Header files

  2. A compiler

  3. pip

  4. virtualenv

  5. git

使用以下命令 −

首先,依次 update pip

python -m pip install -U pip

现在,使用下面给出的命令 clone spaCy

git clone https://github.com/explosion/spaCy

现在,我们需要通过使用下面提到的命令 navigate into directory

cd spaCy

接下来,我们需要 create environment in .env ,如下所示 −

python -m venv .env

现在, activate the above created virtual environment

source .env/bin/activate

接下来,我们需要按如下方式 set the Python path to spaCy directory

export PYTHONPATH=`pwd`

现在,按如下方式 install all requirements

pip install -r requirements.txt

最后, compile spaCy

python setup.py build_ext --inplace

Ubuntu

使用以下命令在 Ubuntu 操作系统 (OS) 中安装系统级依赖关系 −

sudo apt-get install build-essential python-dev git

macOS/OS X

实际上,macOS 和 OS X 已预装了 Python 和 git。因此,我们只需安装一个包含 CLT(命令行工具)的较新版本的 XCode。

Windows

在下面的表格中,给出了用于 Python 解释器官方分发的 Visual C++ Build Tools 或 Visual Studio Express 版本。根据您的要求选择一个并安装 −

Distribution

Version

Python 2.7

Visual Studio 2008

Python 3.4

Visual Studio 2010

Upgrading spaCy

升级 spaCy 时应牢记以下几点 −

  1. 从一个干净的虚拟环境开始。

  2. 要将 spaCy 升级到一个新的主要版本,则必须安装最新的兼容模型。

  3. 虚拟环境中不应存在旧的快捷方式链接或不兼容的模型包。

  4. 如果您已训练了自己的模型,则训练和运行时输入必须匹配,即您还必须使用较新版本重新训练模型。

SpaCy v2.0 和更高版本提供了一个 validate 命令,它允许用户验证是否所有已安装的模型都与已安装的 spaCy 版本兼容。

如果存在任何不兼容模型, validate 命令将打印提示和安装说明。此命令还可以检测在不同虚拟环境中创建的、不同步的模型链接。

您可以按如下方式使用 validate 命令 −

pip install -U spacy
python -m spacy validate

在上述命令中,使用 python -m 确保我们执行的是正确的 spaCy 版本。

Running spaCy with GPU

spaCy v2.0 及更高版本附带了可以在 Thinc 中实现的神经网络 (NN) 模型。如果想要使用图形处理器 (GPU) 支持运行 spaCy,请使用 Chainer 的 CuPy 模块。此模块为 GPU 数组提供了一个兼容 numpy 的接口。

您可以通过指定以下内容在 GPU 上安装 spaCy −

  1. spaCy[cuda]

  2. spaCy[cuda90]

  3. spaCy[cuda91]

  4. spaCy[cuda92]

  5. spaCy[cuda100]

  6. spaCy[cuda101]

  7. spaCy[cuda102]

另一方面,如果您知道 cuda 的版本,显式指定符允许安装 cupy 。它将节省编译时间。

使用以下命令进行安装:

pip install -U spacy[cuda92]

在启用 GPU 的安装后,按照如下方式调用 spacy.prefer_gpuspacy.require_gpu 激活它:

import spacy
spacy.prefer_gpu()
nlp_model = spacy.load("en_core_web_sm")