Files
2026-07-13 10:29:15 +00:00

268 lines
23 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!-- WEHUB_ZH_README -->
> [!NOTE]
> 本文档由 WeHub 基于上游 README 翻译整理,属于社区翻译,非官方中文文档。
> [English](./README.en.md) · [原始项目](https://github.com/explosion/spaCy) · [上游 README](https://github.com/explosion/spaCy/blob/HEAD/README.md)
> 原作者、版权与许可证归属以原始项目及本仓库 LICENSE 文件为准。
<a href="https://explosion.ai"><img src="https://explosion.ai/assets/img/logo.svg" width="125" height="125" align="right" /></a>
# 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)
[![tests](https://github.com/explosion/spaCy/actions/workflows/tests.yml/badge.svg)](https://github.com/explosion/spaCy/actions/workflows/tests.yml)
[![Current Release Version](https://img.shields.io/github/release/explosion/spacy.svg?style=flat-square&logo=github)](https://github.com/explosion/spaCy/releases)
[![pypi Version](https://img.shields.io/pypi/v/spacy.svg?style=flat-square&logo=pypi&logoColor=white)](https://pypi.org/project/spacy/)
[![conda Version](https://img.shields.io/conda/vn/conda-forge/spacy.svg?style=flat-square&logo=conda-forge&logoColor=white)](https://anaconda.org/conda-forge/spacy)
[![Python wheels](https://img.shields.io/badge/wheels-%E2%9C%93-4c1.svg?longCache=true&style=flat-square&logo=python&logoColor=white)](https://github.com/explosion/wheelwright/releases)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg?style=flat-square)](https://github.com/ambv/black)
<br />
[![PyPi downloads](https://static.pepy.tech/personalized-badge/spacy?period=total&units=international_system&left_color=grey&right_color=orange&left_text=pip%20downloads)](https://pypi.org/project/spacy/)
[![Conda downloads](https://img.shields.io/conda/dn/conda-forge/spacy?label=conda%20downloads)](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]** | 购买独特定制周边,支持我们及我们的工作! |
| <a href="https://explosion.ai/tailored-solutions"><img src="https://github.com/explosion/spaCy/assets/13643239/36d2a42e-98c0-4599-90e1-788ef75181be" width="150" alt="定制解决方案"/></a> | 由 spaCy 核心开发团队提供的定制 NLP 咨询、实施与战略建议。精简、生产就绪、可预测且易于维护。给我们发邮件或填写 5 分钟问卷,我们会尽快与您联系!**[了解更多 &rarr;](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 · WindowsCygwin、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
```