spaCy v3.2发布:性能提升与向量新特性

3 阅读6分钟

Introducing spaCy v3.2

我们很高兴推出spaCy自然语言处理库的v3.2版本。自v3.1以来,我们增加了自定义训练和评分的可用性改进,提升了在Apple M1和Nvidia GPU硬件上的性能,并支持使用我们的新哈希嵌入扩展floret来实现空间高效的向量。

spaCy团队今年规模扩大了许多,我们即将推出许多令人兴奋的功能和示例,包括数据增强和模型蒸馏的示例项目、更多基于Transformer的流程示例,以及用于指代消解和基于图的分析的新组件。

通过AppleOps提升spaCy在Apple M1上的性能

通过调用某中心的原生Accelerate库进行矩阵乘法,spaCy现在在M1 Mac上的速度提高了高达8倍。更多详情,请查看 thinc-apple-ops

pip install spacy[apple]

de_core_news_lg流程在M1、Intel MacBook和AMD Ryzen 5900X上使用与不使用 thinc-apple-ops 的预测速度对比。结果以每秒处理的词数为单位。

CPUBLISthinc-apple-ops封装功耗(瓦特)
Mac Mini (M1)6,49227,6765
MacBook Air Core i5 20209,79010,9839
AMD Ryzen 5900X22,568n/a52

流程的Doc输入

nlpnlp.pipe 现在接受 Doc 对象作为输入。如果提供的是 Doc 而不是字符串,则会跳过分词器。这使得在使用自定义分词创建 Doc 或在处理前设置自定义扩展变得更加容易:

# 处理Doc对象
doc = nlp.make_doc("This is text 500.")
doc._.text_id = 500
doc = nlp(doc)

注册评分函数

为了自定义评分,您现在可以从新的 scorers 注册表中为配置中的每个组件指定一个评分函数:

config.cfg(摘录)

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

支持floret向量

我们最近发布了 floret,这是fastText的一个扩展版本,它将fastText的子词与用于紧凑、全覆盖向量的Bloom嵌入相结合。使用子词意味着没有OOV(词汇表外)词,并且由于使用了Bloom嵌入,向量表可以保持非常小(<100K个条目)。Bloom嵌入已经被 tok2vec 中的 HashEmbed 用于创建紧凑的spaCy模型。为了便于集成,floret包含一个Python包装器:

pip install floret

要开始使用,请查看 pipelines/floret_vectors_demo 项目,该项目训练了英文的玩具floret向量并将其导入spaCy流程。对于芬兰语或韩语等黏着语,由于使用了子词(没有OOV词!),性能有显著提升,而向量表仅包含5万个条目。

芬兰语示例项目与基准测试

要尝试,请克隆 pipelines/floret_fi_core_demo 项目:

python -m spacy project clone pipelines/floret_fi_core_demo

芬兰语UD+NER向量和流程训练,比较标准fastText向量与floret向量。使用默认项目设置:100万(2.6G)个分词后的训练文本和5万个300维向量,标准向量约30万个键:

向量TAGPOSDEP UASDEP LASNER F
none93.592.480.173.061.6
standard (pruned: 50K vectors for 300K keys)95.995.083.177.468.1
standard (unpruned: 300K vectors/keys)96.495.082.878.470.4
floret (minn 4, maxn 5; 50K vectors, no OOV)96.995.984.579.970.1

结果已于2021年11月22日针对floret v0.10.1更新。

韩语示例项目与基准测试

要尝试,请克隆 pipelines/floret_ko_ud_demo 项目:

python -m spacy project clone pipelines/floret_ko_ud_demo

韩语UD向量和流程训练,比较标准fastText向量与floret向量。使用默认项目设置:100万(3.3G)个分词后的训练文本和5万个300维向量,标准向量约80万个键:

向量TAGPOSDEP UASDEP LAS
none72.585.374.065.0
standard (pruned: 50K vectors for 800K keys)77.389.178.272.2
standard (unpruned: 800K vectors/keys)79.090.379.473.9
floret (minn 2, maxn 3; 50K vectors, no OOV)82.894.183.580.5

结果已于2021年11月22日针对floret v0.10.1更新。

新的日语Transformer包

spaCy v3.2为日语新增了一个Transformer流程包 ja_core_news_trf。它使用基础预分词器而不是mecab,以限制流程所需的依赖项数量。感谢Hiroshi Matsuda和spaCy日语社区的贡献!

spaCy生态系统的新成员

自上次发布以来,spaCy生态系统新增了一些很酷的内容!以下是一些您可以安装以增强spaCy项目能力的新插件和扩展:

  • 💬 spacy-clausie: ClausIE信息提取系统的实现。
  • 🎨 ipymarkup: 用于NER和句法树标记的NLP可视化集合。
  • 🌳 deplacy: 通用依赖和即时Catena分析的树可视化工具。

以下软件包已更新以支持 spaCy v3

  • 🕵️‍♂️ holmes: 基于谓词逻辑的英语和德语信息提取。
  • 🌐 spaCyOpenTapioca: 用于Wikidata上命名实体链接的OpenTapioca包装器。
  • 🇩🇰 DaCy: 最先进的丹麦语NLP流程。

查看spaCy生态系统

资源

关于作者

Matthew Honnibal CTO,创始人。Matthew是AI技术领域的领先专家。他于2009年完成博士学位,并在此后又花费了5年时间发表关于最先进NLP系统的研究。他于2014年离开学术界,编写spaCy并创立了Explosion。 帖子

Ines Montani CEO,创始人。Ines是Explosion的联合创始人,也是spaCy NLP库和Prodigy注释工具的核心开发者。她帮助为AI工程师和研究人员的开发者工具设定了新的用户体验标准。 帖子

Sofie Van Landeghem 机器学习工程师,spaCy负责人。Sofie是一名机器学习和NLP工程师,在2006年攻读硕士学位期间对该领域产生了浓厚兴趣。她的博士研究专注于生命科学的文本挖掘,之后在制药和食品行业进行了博士后研究。 帖子

Adriane Boyd 机器学习工程师。Adriane是一名计算语言学家,自2005年以来一直从事研究工作,于2012年完成博士学位。她在语言标注质量控制、句法分析以及非标准语言的NLP方面拥有丰富的经验。 帖子

Paul O’Leary McCann 机器学习工程师 帖子

Daniël de Kok 机器学习工程师 帖子

Duygu Altinok 机器学习工程师 帖子

Edward Schmuhl 机器学习工程师 帖子

Lj Miranda 机器学习工程师 帖子

Philip Vollet 开发者关系负责人 帖子