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 的预测速度对比。结果以每秒处理的词数为单位。
| CPU | BLIS | thinc-apple-ops | 封装功耗(瓦特) |
|---|---|---|---|
| Mac Mini (M1) | 6,492 | 27,676 | 5 |
| MacBook Air Core i5 2020 | 9,790 | 10,983 | 9 |
| AMD Ryzen 5900X | 22,568 | n/a | 52 |
流程的Doc输入
nlp 和 nlp.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万个键:
| 向量 | TAG | POS | DEP UAS | DEP LAS | NER F |
|---|---|---|---|---|---|
| none | 93.5 | 92.4 | 80.1 | 73.0 | 61.6 |
| standard (pruned: 50K vectors for 300K keys) | 95.9 | 95.0 | 83.1 | 77.4 | 68.1 |
| standard (unpruned: 300K vectors/keys) | 96.4 | 95.0 | 82.8 | 78.4 | 70.4 |
| floret (minn 4, maxn 5; 50K vectors, no OOV) | 96.9 | 95.9 | 84.5 | 79.9 | 70.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万个键:
| 向量 | TAG | POS | DEP UAS | DEP LAS |
|---|---|---|---|---|
| none | 72.5 | 85.3 | 74.0 | 65.0 |
| standard (pruned: 50K vectors for 800K keys) | 77.3 | 89.1 | 78.2 | 72.2 |
| standard (unpruned: 800K vectors/keys) | 79.0 | 90.3 | 79.4 | 73.9 |
| floret (minn 2, maxn 3; 50K vectors, no OOV) | 82.8 | 94.1 | 83.5 | 80.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 v3.2: v3.2的新功能
- 发布说明: 详细概述
- spaCy模型目录: 下载训练好的流程
- spaCy生态系统: 项目、插件和扩展
- spaCy项目模板: 端到端NLP工作流
- 视频教程: YouTube上更深入的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 开发者关系负责人 帖子