spaCy v3.2自然语言处理库技术解析

本文详细介绍了spaCy v3.2版本的技术更新,包括Apple M1性能优化、floret向量支持、自定义评分函数等核心功能,以及针对芬兰语和韩语的子词向量优化案例。

Apple M1性能优化

通过调用苹果原生Accelerate库进行矩阵乘法运算,spaCy在M1芯片上的运行速度提升高达8倍。安装可选组件即可启用该功能:

1
pip install spacy[apple]

性能对比数据(单位:词/秒):

设备 基础性能 启用thinc-apple-ops 功耗(W)
Mac Mini (M1) 6,492 27,676 5
MacBook Air Core i5 9,790 10,983 9
AMD Ryzen 5900X 22,568 - 52

文档对象直接输入

nlpnlp.pipe现在支持直接接收Doc对象作为输入,跳过分词步骤:

1
2
3
doc = nlp.make_doc("This is text 500.")  
doc._.text_id = 500  
doc = nlp(doc)  

可注册的评分函数

通过配置文件可为每个组件指定自定义评分函数:

1
2
3
[components.tagger]  
factory = "tagger"  
scorer = {"@scorers":"spacy.tagger_scorer.v1"}  

floret向量支持

floret结合fastText子词与Bloom嵌入技术,实现高压缩率全覆盖向量:

1
pip install floret

芬兰语案例

50K维度的floret向量在无OOV词情况下表现优异:

向量类型 TAG POS DEP UAS DEP LAS NER F1
无向量 93.5 92.4 80.1 73.0 61.6
标准向量(50K/300K键) 95.9 95.0 83.1 77.4 68.1
floret向量(50K) 96.9 95.9 84.5 79.9 70.1

韩语案例

子词配置(minn=2,maxn=3)显著提升性能:

向量类型 TAG POS DEP UAS DEP LAS
无向量 72.5 85.3 74.0 65.0
floret向量(50K) 82.8 94.1 83.5 80.5

日语Transformer支持

新增ja_core_news_trf管道包,采用基础预分词器替代mecab以减少依赖。

生态更新

  • spacy-clausie:信息抽取系统
  • ipymarkup:NER和语法树可视化工具
  • deplacy:依存树可视化工具
  • 多语言工具包已适配spaCy v3
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计