> [!NOTE]
> 本文档由 WeHub 基于上游 README 翻译整理,属于社区翻译,非官方中文文档。
> [English](./README.en.md) · [原始项目](https://github.com/explosion/spaCy) · [上游 README](https://github.com/explosion/spaCy/blob/HEAD/README.md)
> 原作者、版权与许可证归属以原始项目及本仓库 LICENSE 文件为准。
# spaCy:工业级 NLP
spaCy 是一个用于 Python 和 Cython 的**高级自然语言处理(Natural Language Processing)**库。它基于最前沿的研究成果,从诞生之初就面向真实产品场景而设计。
spaCy 提供[预训练流水线(pretrained pipelines)](https://spacy.io/models),目前支持 **70+** 种语言的词元化(tokenization)与训练。它在词性标注、句法分析、**命名实体识别(named entity recognition)**、**文本分类(text classification)**等任务上具备顶尖速度与**神经网络模型**,支持基于 BERT 等预训练 **Transformer** 的多任务学习,还提供生产就绪的[**训练系统(training system)**](https://spacy.io/usage/training),以及便捷的模型打包、部署与工作流管理。spaCy 是商业开源软件,采用 [MIT 许可证(MIT license)](https://github.com/explosion/spaCy/blob/master/LICENSE).
💫 **3.8 版本现已发布!**
[在此查看发行说明。](https://github.com/explosion/spaCy/releases)
[](https://github.com/explosion/spaCy/actions/workflows/tests.yml)
[](https://github.com/explosion/spaCy/releases)
[](https://pypi.org/project/spacy/)
[](https://anaconda.org/conda-forge/spacy)
[](https://github.com/explosion/wheelwright/releases)
[](https://github.com/ambv/black)
[](https://pypi.org/project/spacy/)
[](https://anaconda.org/conda-forge/spacy)
## 📖 文档
| 文档 | |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ⭐️ **[spaCy 101]** | 初次接触 spaCy?这里有你需要了解的一切! |
| 📚 **[Usage Guides]** | 如何使用 spaCy 及其功能。 |
| 🚀 **[New in v3.0]** | 新功能、向后不兼容变更与迁移指南。 |
| 🪐 **[Project Templates]** | 可克隆、修改并运行的端到端工作流。 |
| 🎛 **[API Reference]** | spaCy API 的详细参考文档。 |
| ⏩ **[GPU Processing]** | 在兼容 CUDA 的 GPU 上运行 spaCy。 |
| 📦 **[Models]** | 下载 spaCy 的训练流水线。 |
| 🦙 **[Large Language Models]** | 将大语言模型(LLM)集成到 spaCy 流水线中。 |
| 🌌 **[Universe]** | spaCy 生态中的插件、扩展、演示与书籍。 |
| ⚙️ **[spaCy VS Code Extension]** | 用于处理 spaCy 配置文件的额外工具与功能。 |
| 👩🏫 **[Online Course]** | 在这门免费互动在线课程中学习 spaCy。 |
| 📰 **[Blog]** | 阅读 Explosion 关于 spaCy 与 Prodigy 的最新开发动态、版本发布、演讲等内容。 |
| 📺 **[Videos]** | 我们的 YouTube 频道,提供视频教程、演讲等内容。 |
| 🔴 **[Live Stream]** | 与 Matt 一起直播开发 spaCy,畅聊 NLP。 |
| 🛠 **[Changelog]** | 变更与版本历史。 |
| 💝 **[Contribute]** | 如何为 spaCy 项目与代码库做贡献。 |
| 👕 **[Swag]** | 购买独特定制周边,支持我们及我们的工作! |
|
| 由 spaCy 核心开发团队提供的定制 NLP 咨询、实施与战略建议。精简、生产就绪、可预测且易于维护。给我们发邮件或填写 5 分钟问卷,我们会尽快与您联系!**[了解更多 →](https://explosion.ai/tailored-solutions)** |
[spaCy 101]: https://spacy.io/usage/spacy-101
[new in v3.0]: https://spacy.io/usage/v3
[usage guides]: https://spacy.io/usage/
[api reference]: https://spacy.io/api/
[gpu processing]: https://spacy.io/usage#gpu
[models]: https://spacy.io/models
[large language models]: https://spacy.io/usage/large-language-models
[universe]: https://spacy.io/universe
[spacy vs code extension]: https://github.com/explosion/spacy-vscode
[videos]: https://www.youtube.com/c/ExplosionAI
[live stream]: https://www.youtube.com/playlist?list=PLBmcuObd5An5_iAxNYLJa_xWmNzsYce8c
[online course]: https://course.spacy.io
[blog]: https://explosion.ai
[project templates]: https://github.com/explosion/projects
[changelog]: https://spacy.io/usage#changelog
[contribute]: https://github.com/explosion/spaCy/blob/master/CONTRIBUTING.md
[swag]: https://explosion.ai/merch
## 💬 在哪里提问
spaCy 项目由 [spaCy 团队](https://explosion.ai/about).
维护。请注意,我们无法通过电子邮件提供一对一支持。
我们也认为,公开分享的帮助更有价值,这样更多人可以从中受益。
| 类型 | 平台 |
| ------------------------------- | --------------------------------------- |
| 🚨 **缺陷报告** | [GitHub Issue Tracker] |
| 🎁 **功能请求与想法** | [GitHub Discussions] · [Live Stream] |
| 👩💻 **使用问题** | [GitHub Discussions] · [Stack Overflow] |
| 🗯 **一般讨论** | [GitHub Discussions] · [Live Stream] |
[github issue tracker]: https://github.com/explosion/spaCy/issues
[github discussions]: https://github.com/explosion/spaCy/discussions
[stack overflow]: https://stackoverflow.com/questions/tagged/spacy
[live stream]: https://www.youtube.com/playlist?list=PLBmcuObd5An5_iAxNYLJa_xWmNzsYce8c
## 特性
- 支持 **70+ 种语言**
- 适用于不同语言和任务的 **训练流水线(pipeline)**
- 多任务学习,使用 BERT 等预训练 **transformer**
- 支持预训练 **词向量(word vectors)** 和嵌入(embeddings)
- 业界领先的运行速度
- 可用于生产的 **训练系统**
- 基于语言学动机的 **分词(tokenization)**
- 命名 **实体识别(NER)**、词性标注、依存句法分析、句子分割、**文本分类**、词形还原、形态学分析、实体链接等组件
- 可通过 **自定义组件** 和属性轻松扩展
- 支持在 **PyTorch**、**TensorFlow** 及其他框架中使用自定义模型
- 内置句法和 NER 的 **可视化工具(visualizer)**
- 便捷的 **模型打包**、部署与工作流管理
- 稳健、经过严格评估的准确度
📖 **更多详情请参阅
[事实、数据与基准测试](https://spacy.io/usage/facts-figures).**
## ⏳ 安装 spaCy
详细安装说明请参阅
[文档](https://spacy.io/usage).
- **操作系统**:macOS / OS X · Linux · Windows(Cygwin、MinGW、Visual
Studio)
- **Python 版本**:Python >=3.7,<3.13(仅 64 位)
- **包管理器**:[pip] · [conda](通过 `conda-forge`)
[pip]: https://pypi.org/project/spacy/
[conda]: https://anaconda.org/conda-forge/spacy
### pip
使用 pip 时,spaCy 发布包提供源码包和二进制 wheel 包。
在安装 spaCy 及其依赖之前,请确保你的 `pip`、
`setuptools` 和 `wheel` 已是最新版本。
```bash
pip install -U pip setuptools wheel
pip install spacy
```
要安装用于词形还原和规范化的额外数据表,可以
运行 `pip install spacy[lookups]`,或单独安装
[`spacy-lookups-data`](https://github.com/explosion/spacy-lookups-data)。
lookups 包用于创建带有词形还原数据的空白模型,以及在尚未提供预训练模型、且不依赖第三方库的语言中进行词形还原。
使用 pip 时,通常建议在虚拟环境中安装软件包,以避免修改系统状态:
```bash
python -m venv .env
source .env/bin/activate
pip install -U pip setuptools wheel
pip install spacy
```
### conda
你也可以通过 `conda-forge` 频道从 `conda` 安装 spaCy。有关包含构建配方和配置的 feedstock,请参阅
[此仓库](https://github.com/conda-forge/spacy-feedstock).
```bash
conda install -c conda-forge spacy
```
### 更新 spaCy
spaCy 的某些更新可能需要下载新的统计模型。如果你运行的是 spaCy v2.0 或更高版本,可以使用 `validate` 命令检查已安装模型是否兼容;若不兼容,会输出如何更新它们的详细信息:
```bash
pip install -U spacy
python -m spacy validate
```
如果你训练了自己的模型,请注意训练时与运行时的输入必须一致。更新 spaCy 后,我们建议使用新版本 **重新训练你的模型**。
📖 **有关从 spaCy 2.x 升级到 spaCy 3.x 的详情,请参阅
[迁移指南](https://spacy.io/usage/v3#migrating).**
## 📦 下载模型包
spaCy 的训练流水线可作为 **Python 软件包** 安装。这意味着
它们是你应用程序的组成部分,就像任何其他模块一样。可以使用 spaCy 的 [`download`](https://spacy.io/api/cli#download)
命令安装模型,也可以通过让 pip 指向路径或 URL 手动安装。
| 文档 | |
| -------------------------- | ---------------------------------------------------------------- |
| **[可用流水线]** | 详细的流水线说明、准确度数据与基准测试。 |
| **[模型文档]** | 详细的使用与安装说明。 |
| **[训练]** | 如何在自己的数据上训练自定义流水线。 |
[available pipelines]: https://spacy.io/models
[models documentation]: https://spacy.io/usage/models
[training]: https://spacy.io/usage/training
```bash
# Download best-matching version of specific model for your spaCy installation
python -m spacy download en_core_web_sm
# pip install .tar.gz archive or .whl from path or URL
pip install /Users/you/en_core_web_sm-3.0.0.tar.gz
pip install /Users/you/en_core_web_sm-3.0.0-py3-none-any.whl
pip install https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.0.0/en_core_web_sm-3.0.0.tar.gz
```
### 加载和使用模型
要加载模型,请使用 [`spacy.load()`](https://spacy.io/api/top-level#spacy.load)
,并传入模型名称或模型数据目录的路径。
```python
import spacy
nlp = spacy.load("en_core_web_sm")
doc = nlp("This is a sentence.")
```
你也可以通过模型的完整名称直接 `import`,然后无参调用其
`load()` 方法。
```python
import spacy
import en_core_web_sm
nlp = en_core_web_sm.load()
doc = nlp("This is a sentence.")
```
📖 **更多信息和示例,请参阅
[模型文档](https://spacy.io/docs/usage/models).**
## ⚒ 从源码编译
安装 spaCy 的另一种方式是克隆其
[GitHub 仓库](https://github.com/explosion/spaCy),并从源码构建。
如果你想修改代码库,这通常是常用的方式。
你需要确保已具备开发环境,包括带头文件的 Python 发行版、编译器、
[pip](https://pip.pypa.io/en/latest/installing/),
[virtualenv](https://virtualenv.pypa.io/en/latest/) 和
[git](https://git-scm.com) 已安装。编译器部分最为棘手,具体做法取决于你的系统。
| 平台 | |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Ubuntu** | 通过 `apt-get` 安装系统级依赖:`sudo apt-get install build-essential python-dev git`。 |
| **Mac** | 安装最新版 [XCode](https://developer.apple.com/xcode/),,其中包含所谓的「Command Line Tools」。macOS 和 OS X 预装了 Python 和 git。 |
| **Windows** | 安装与你的 Python 解释器编译所用版本相匹配的 [Visual C++ Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/) 或 [Visual Studio Express](https://visualstudio.microsoft.com/vs/express/)。 |
如需更多详情和操作说明,请参阅
[从源码编译 spaCy](https://spacy.io/usage#source) 以及
[快速入门 widget](https://spacy.io/usage#section-quickstart),以获取适用于你的平台与 Python 版本的正确命令。
```bash
git clone https://github.com/explosion/spaCy
cd spaCy
python -m venv .env
source .env/bin/activate
# make sure you are using the latest pip
python -m pip install -U pip setuptools wheel
pip install -r requirements.txt
pip install --no-build-isolation --editable .
```
安装 extras 扩展:
```bash
pip install --no-build-isolation --editable .[lookups,cuda102]
```
## 🚦 运行测试
spaCy 附带[完善的测试套件](spacy/tests)。要运行测试,你通常需要克隆仓库并从源码构建 spaCy。这也会安装 [`requirements.txt`](requirements.txt) 中定义的必要开发依赖与测试工具。
或者,你也可以在已安装的 `spacy` 包内对测试运行 `pytest`。别忘了通过 spaCy 的 [`requirements.txt`](requirements.txt) 安装测试工具:
```bash
pip install -r requirements.txt
python -m pytest --pyargs spacy
```