23 KiB
Note
本文档由 WeHub 基于上游 README 翻译整理,属于社区翻译,非官方中文文档。
English · 原始项目 · 上游 README
原作者、版权与许可证归属以原始项目及本仓库 LICENSE 文件为准。
spaCy:工业级 NLP
spaCy 是一个用于 Python 和 Cython 的**高级自然语言处理(Natural Language Processing)**库。它基于最前沿的研究成果,从诞生之初就面向真实产品场景而设计。
spaCy 提供预训练流水线(pretrained pipelines),目前支持 70+ 种语言的词元化(tokenization)与训练。它在词性标注、句法分析、命名实体识别(named entity recognition)、文本分类(text classification)等任务上具备顶尖速度与神经网络模型,支持基于 BERT 等预训练 Transformer 的多任务学习,还提供生产就绪的训练系统(training system),以及便捷的模型打包、部署与工作流管理。spaCy 是商业开源软件,采用 MIT 许可证(MIT license).
💫 3.8 版本现已发布! 在此查看发行说明。
📖 文档
| 文档 | |
|---|---|
| ⭐️ 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 分钟问卷,我们会尽快与您联系!了解更多 → |
💬 在哪里提问
spaCy 项目由 spaCy 团队. 维护。请注意,我们无法通过电子邮件提供一对一支持。 我们也认为,公开分享的帮助更有价值,这样更多人可以从中受益。
| 类型 | 平台 |
|---|---|
| 🚨 缺陷报告 | GitHub Issue Tracker |
| 🎁 功能请求与想法 | GitHub Discussions · Live Stream |
| 👩💻 使用问题 | GitHub Discussions · Stack Overflow |
| 🗯 一般讨论 | GitHub Discussions · Live Stream |
特性
- 支持 70+ 种语言
- 适用于不同语言和任务的 训练流水线(pipeline)
- 多任务学习,使用 BERT 等预训练 transformer
- 支持预训练 词向量(word vectors) 和嵌入(embeddings)
- 业界领先的运行速度
- 可用于生产的 训练系统
- 基于语言学动机的 分词(tokenization)
- 命名 实体识别(NER)、词性标注、依存句法分析、句子分割、文本分类、词形还原、形态学分析、实体链接等组件
- 可通过 自定义组件 和属性轻松扩展
- 支持在 PyTorch、TensorFlow 及其他框架中使用自定义模型
- 内置句法和 NER 的 可视化工具(visualizer)
- 便捷的 模型打包、部署与工作流管理
- 稳健、经过严格评估的准确度
📖 更多详情请参阅 事实、数据与基准测试.
⏳ 安装 spaCy
详细安装说明请参阅 文档.
- 操作系统:macOS / OS X · Linux · Windows(Cygwin、MinGW、Visual Studio)
- Python 版本:Python >=3.7,<3.13(仅 64 位)
- 包管理器:pip · conda(通过
conda-forge)
pip
使用 pip 时,spaCy 发布包提供源码包和二进制 wheel 包。
在安装 spaCy 及其依赖之前,请确保你的 pip、
setuptools 和 wheel 已是最新版本。
pip install -U pip setuptools wheel
pip install spacy
要安装用于词形还原和规范化的额外数据表,可以
运行 pip install spacy[lookups],或单独安装
spacy-lookups-data。
lookups 包用于创建带有词形还原数据的空白模型,以及在尚未提供预训练模型、且不依赖第三方库的语言中进行词形还原。
使用 pip 时,通常建议在虚拟环境中安装软件包,以避免修改系统状态:
python -m venv .env
source .env/bin/activate
pip install -U pip setuptools wheel
pip install spacy
conda
你也可以通过 conda-forge 频道从 conda 安装 spaCy。有关包含构建配方和配置的 feedstock,请参阅
此仓库.
conda install -c conda-forge spacy
更新 spaCy
spaCy 的某些更新可能需要下载新的统计模型。如果你运行的是 spaCy v2.0 或更高版本,可以使用 validate 命令检查已安装模型是否兼容;若不兼容,会输出如何更新它们的详细信息:
pip install -U spacy
python -m spacy validate
如果你训练了自己的模型,请注意训练时与运行时的输入必须一致。更新 spaCy 后,我们建议使用新版本 重新训练你的模型。
📖 有关从 spaCy 2.x 升级到 spaCy 3.x 的详情,请参阅 迁移指南.
📦 下载模型包
spaCy 的训练流水线可作为 Python 软件包 安装。这意味着
它们是你应用程序的组成部分,就像任何其他模块一样。可以使用 spaCy 的 download
命令安装模型,也可以通过让 pip 指向路径或 URL 手动安装。
| 文档 | |
|---|---|
| [可用流水线] | 详细的流水线说明、准确度数据与基准测试。 |
| [模型文档] | 详细的使用与安装说明。 |
| [训练] | 如何在自己的数据上训练自定义流水线。 |
# 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()
,并传入模型名称或模型数据目录的路径。
import spacy
nlp = spacy.load("en_core_web_sm")
doc = nlp("This is a sentence.")
你也可以通过模型的完整名称直接 import,然后无参调用其
load() 方法。
import spacy
import en_core_web_sm
nlp = en_core_web_sm.load()
doc = nlp("This is a sentence.")
📖 更多信息和示例,请参阅 模型文档.
⚒ 从源码编译
安装 spaCy 的另一种方式是克隆其 GitHub 仓库,并从源码构建。 如果你想修改代码库,这通常是常用的方式。 你需要确保已具备开发环境,包括带头文件的 Python 发行版、编译器、 pip, virtualenv 和 git 已安装。编译器部分最为棘手,具体做法取决于你的系统。
| 平台 | |
|---|---|
| Ubuntu | 通过 apt-get 安装系统级依赖:sudo apt-get install build-essential python-dev git。 |
| Mac | 安装最新版 XCode,,其中包含所谓的「Command Line Tools」。macOS 和 OS X 预装了 Python 和 git。 |
| Windows | 安装与你的 Python 解释器编译所用版本相匹配的 Visual C++ Build Tools 或 Visual Studio Express。 |
如需更多详情和操作说明,请参阅 从源码编译 spaCy 以及 快速入门 widget,以获取适用于你的平台与 Python 版本的正确命令。
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 扩展:
pip install --no-build-isolation --editable .[lookups,cuda102]
🚦 运行测试
spaCy 附带完善的测试套件。要运行测试,你通常需要克隆仓库并从源码构建 spaCy。这也会安装 requirements.txt 中定义的必要开发依赖与测试工具。
或者,你也可以在已安装的 spacy 包内对测试运行 pytest。别忘了通过 spaCy 的 requirements.txt 安装测试工具:
pip install -r requirements.txt
python -m pytest --pyargs spacy