268 lines
23 KiB
Markdown
268 lines
23 KiB
Markdown
<!-- 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)
|
||
|
||
[](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)
|
||
<br />
|
||
[](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]** | 购买独特定制周边,支持我们及我们的工作! |
|
||
| <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 分钟问卷,我们会尽快与您联系!**[了解更多 →](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
|
||
```
|