> [!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) [![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)
[![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]** | 购买独特定制周边,支持我们及我们的工作! | | 定制解决方案 | 由 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 ```