尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

使用spaCy构建可定制NLP管道

使用spaCy构建可定制NLP管道
📅 发布时间:2026/6/22 19:37:43
本文介绍了如何使用spaCy库构建可定制的自然语言处理管道,包括分词器定制、模型训练、配置文件和实体链接等核心技术。内容涵盖spaCy v3新特性、Thinc深度学习框架及实际应用案例。

使用spaCy构建可定制NLP管道

NLP简介

自然语言处理(NLP):从非结构化语言中提取结构化知识

spaCy工具概述

  • 研究概述、教程、数据集、库
  • Node.js、Python、C++、Java、Kotlin、Scala、R、Clojure、Ruby、Rust
  • 专注于spaCy库的功能性
  • Python + Cython(速度快!)
  • 专注于生产环境使用
  • 可配置、可定制、可扩展、可重新训练
  • 由开源DL库thinc提供支持
  • 开源(MIT许可证):https://github.com/explosion/spaCy/
  • 与其他NLP库的比较:https://spacy.io/usage/facts-figures

spaCy管道

文档 → 文本 → nlp处理 → 分词器 → 标注器 → 解析器 → 命名实体识别...

预训练模型

pip install spacy
python -m spacy download en_core_web_lgimport spacy
nlp = spacy.load('en_core_web_lg')
doc = nlp(text)from spacy import displacy
displacy.serve(doc, style='ent')print([(token.text, token.pos_) for token in doc])
  • 为10种语言提供预训练模型

定制分词器

from spacy.symbols import ORTH
nlp.tokenizer.add_special_case("Silo.AI", [{ORTH: "Silo.AI"}])
  • 为50种语言提供内置的特定语言规则
  • 欢迎提交改进您最喜欢语言的拉取请求!
  • 使用您自己的规则扩展默认规则
  • 定义特定的分词异常
  • 实现全新的分词器

(重新)训练模型

TRAIN_DATA = [("Filip Ginter works for Silo.AI.", {"entities": [(0, 12, "PERSON"), (24, 30, "ORG")]}),(…)
]for itn in range(n_iter):random.shuffle(TRAIN_DATA)batches = minibatch(TRAIN_DATA)losses = {}for batch in batches:texts, annotations = zip(*batch)nlp.update(texts, annotations, sgd=optimizer, drop=0, losses=losses)print(f"Loss at {itn} is {losses['ner']}")optimizer = nlp.begin_training()
optimizer = nlp.resume_training()

重新训练/优化现有的ML模型:

  • 添加新标签(如NER)
  • 输入新数据
  • 确保模型不会"忘记"之前学到的内容!
  • 同时输入"旧"示例

CLI训练

python -m spacy convert ud-treebanks-v2.4\UD_Finnish-TDT\fi_tdt-ud-train.conllu fi_json
python -m spacy convert ud-treebanks-v2.4\UD_Finnish-TDT\fi_tdt-ud-dev.conllu fi_json
python -m spacy train fi output fi_json\fi_tdt-ud-train.json fi_json\fi_tdt-ud-dev.json

从头开始训练ML模型:

  • 内置对UD注释的支持

注意:这不会自动给出最先进的结果...
没有调优、超参数选择或特定语言定制(尚未)!

spaCy v.3:更可配置的管道

(由Thinc v.8提供支持)

Thinc v.8

  • 新的深度学习库
  • 2020年1月发布
  • 多年来一直为spaCy提供支持
  • 为Python 3完全改造
  • 类型注释
  • 函数式编程概念:没有计算图,只有高阶函数
  • PyTorch、MXNet和TensorFlow的包装器
  • 广泛的文档:https://thinc.ai
def relu(inputs: Floats2d) -> Tuple[Floats2d, Callable[[Floats2d], Floats2d]]:mask = inputs >= 0def backprop_relu(d_outputs: Floats2d) -> Floats2d:return d_outputs * maskreturn inputs * mask, backprop_relu
  • 层执行前向函数
  • 返回前向结果 + 反向传播的调用
  • 反向传播计算输入的梯度,给定输出的梯度

类型检查

  • 通过用适当的类型注释变量,可以防止错误!
  • 促进自动完成
  • 使用mypy

配置

THINC.AI

  • 配置文件
  • 内置注册函数
  • 定义您自己的函数
  • 所有超参数明确定义
  • 所有对象在解析配置时构建

从配置训练

python -m spacy train-from-config fi train.json dev.json config.cfg

即将推出

  • 完全控制所有设置和参数
  • 配置可以轻松保存和共享
  • 快速运行实验,例如交换不同的tok2vec组件
  • 完全支持预训练的BERT、XLNet和GPT-2(参见spacy-transformers包)
  • 也称为"启动器模型"
  • 关注spaCy v.3!

新管道组件

共指消解

→ 链接引用同一事物/人的实体
→ 例如,"他"指的是"Nader"
Hugging Face的neuralcoref包与spaCy配合使用

实体链接(EL)

文本中所有这些Byron都是谁?

EL示例

Johny Carson:美国脱口秀主持人,还是美式足球运动员?
Russ Cochran:美国高尔夫球手,还是出版商?
Rose:英国足球运动员,还是电视剧《神秘博士》中的角色?

EL框架

步骤0:假设NER已经在原始文本上发生,因此我们有实体+标签
步骤1:候选生成:为提及创建可能的WikiData ID列表
步骤2:实体链接:将这些候选消歧为最可能的ID

文本 → NER → NER提及 → 每个提及的候选列表 → 候选生成 → EL → 每个提及的一个实体ID

Ms Byron would become known as the first programmer.
Byron: PERSON
Q7259 Q5679: Lord George Gordon Byron
Q272161: Anne Isabella Byron
Q7259: Ada Lovelace

新闻准确性

→ 在165K篇维基百科文章上训练卷积神经网络模型
→ 用于评估的手动注释新闻数据:360个实体链接
→ 添加共指消解:
• 同一共指链中的所有实体应链接到同一实体
• 分配链中置信度最高的KB ID
• 性能(EL+先验)下降到70.9% → 需要进一步工作

上下文 语料库统计 黄金标签 准确性
随机基线 - - 33.4%
仅实体链接 x - 60.1%
先验概率基线 - x 67.2%
EL + 先验概率 x x 71.4%
Oracle KB性能 x x 85.2%

总结

spaCy是一个生产就绪的Python NLP库,可让您快速实现文本挖掘解决方案,并且可扩展和可重新训练。3.0版将带来许多酷炫的新功能!

Thinc是一个新的深度学习库,广泛使用类型注释并支持配置文件。

Prodigy是某机构的注释工具,由主动学习提供支持。

@explosion_ai @oxykodit @spacy.io

问题?

没有愚蠢的问题——所以让我们假设也没有愚蠢的答案。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)或者 我的个人博客 https://blog.qife122.com/
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

公众号二维码

公众号二维码

相关新闻

  • ant-design中a-table获取多分页中选择、全选问题处理
  • hyx_蓝桥杯C++学习_系列二
  • 节奏

最新新闻

  • Edge AI与TinyML:电子行业AI落地实践
  • Hy-MT2混合指令调优:大模型翻译的工业级定制化实践
  • 盘点2026年数控弯管机制造商,伟博机械怎么样 - mypinpai
  • 电焊培训中心哪家性价比高?顺鑫职业技术培训学校分析 - mypinpai
  • Chat2DB终极指南:3步让AI帮你轻松管理15+数据库
  • AI培训机构哪家好,莫瑶教育AI培训部 - 职业学校推荐官

日新闻

  • Arduino-ESP32项目深度解析:解锁隐藏芯片支持与架构演进
  • 2026年 系统窗厂家/品牌推荐榜单:隔音系统窗+高端系统门窗的核心优势与选购指南 - 品牌发掘
  • NVBench:首个双语非言语发声语音合成评测基准详解与实践

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号