深入探讨spaCy:NLP的强大工具

自然语言处理(NLP)的世界里,spaCy是一个不可忽视的名字。这个库不仅推动了NLP应用的繁荣,还培养了众多NLP科学家。为了深入了解spaCy,邀请了其开发者Ines Montani和Matt Honnibal参加广受欢迎的DataHack Radio播客节目,让他们亲自讲述spaCy的故事。

这个播客节目长达40分钟以上,是NLP爱好者和实践者的盛宴。Ines和Matt讨论了所有关于spaCy和NLP的话题,包括:

开发spaCy背后的理念;

spaCy从最初的alpha版本到现在的2.1版本的惊人演变;

spaCy的用例,包括一些令人惊讶的应用;

Ines和Matt对NLP爱好者的建议;

以及更多!

spaCy库背后的大脑

spaCy的故事始于Matt毕业时编写的一段特定NLP任务的代码。他一直在NLP领域工作,并且有几家公司想要使用他的研究代码。然而,这段代码并不适合用于通用目的(它更倾向于执行特定任务)。Matt想要构建一个可以用于更广泛NLP功能的库。从这个想法中,spaCy的概念诞生了。

Matt在spaCy的第一个alpha版本发布后不久遇到了Ines。从那时起,他们就开始合作开发spaCy,并创立了他们的公司——explosion.ai。Explosion AI是一个专门从事人工智能和自然语言处理的数字工作室。他们的三个主要产品是:

个人非常喜欢Ines和Matt最初在spaCy上工作的幕后故事。Ines被spaCy的计算语言学方面所吸引,并且认为公司可以使用它来构建真正重要的系统。

关于Ines最初理解NLP任务背后的算法时的反应,有一个有趣的轶事。不会在这里透露——所以请确保听这部分!

开发spaCy的动机和理念

在spaCy开发之前,NLTK库已经存在。那么为什么要创建spaCy呢?创建一个不同的NLP库的动机是什么?相信当spaCy刚出现时,大多数人都问过这个问题。

正如Matt所说,在回答这些问题之前,理解NLTK库是很重要的。NLTK是用不同的代码库开发的,更多地是从教授NLP主题的角度出发。

"商业NLP的需求来自不同的优先事项集。其中最重要的优先事项之一是效率。获得高效Python可用事物的最佳方式是使用Cython编写C扩展——这是spaCy最终实现的语言。" ——Matt Honnibal

当Matt开始开发spaCy时,线性模型非常流行,因为:

这些模型使用了大量的机器内存;

它们可以使用C或Cython快速实现;

没有可能为NLTK编写这些C扩展。此外,Matt想要开发一个采用不同方法的不同NLP库。因此,spaCy被设计来填补这些空白,并为在NLP领域工作的人们提供不同的视角。

spaCy和Prodigy的商业方面

从一开始,就总是有从spaCy中创造商业方面的可能性。问题是它是否必须来自咨询方面或其他东西。

Ines和Matt在他们的旅程开始时选择了注释工具。根据Ines的说法,这一直是一个反复出现的问题。所以问题是——人们在使用什么,什么对他们真正有效?两个特点脱颖而出:

命名实体识别;

创建标记数据和运行实验。

相信这些在NLP领域工作的人都能与这些特点产生共鸣!Ines和Matt实际上是因为这些特点而想出了Prodigy的概念。Prodigy是一个注释工具,数据科学家可以使用它自己进行注释,从而实现新的快速迭代水平。无论是在处理实体识别、意图检测还是图像分类,Prodigy都可以帮助更快地训练和评估模型。谁不想要这个呢?

spaCy的演变(从v1到v2.1)

“这在很大程度上受到NLP研究和发展的影响。”

spaCy的第一个版本是使用上述线性模型技术构建的。那时,神经网络还处于起步阶段,还没有准备好席卷机器学习世界。

一旦革命来临,当神经网络变得越来越主流时,spaCy从版本1升级到2。spaCy 2.0中的许多关键特性都是围绕各种机器学习管道组件(如即插即用架构),受到不断发展的机器学习社区的启发和影响。

spaCy2.1,当前版本,更注重稳定性和性能。它的一个突出特点是处理迁移学习和语言模型——这两个概念加速了NLP领域的研究和进展。

那么spaCy接下来会怎么样呢?可以期待从未来的更新中获得什么新功能呢?这是Matt的话:

"spaCy的一个核心用途是信息提取。基本上是从非结构化文本到结构化知识。 正在开发一个新的组件用于实体链接 ——解析名称到基于知识的条目。目前正在开发这个,应该在7月spaCy大会到来时准备好。"

他们还在进一步将各种区域性语言整合到spaCy环境中。令人兴奋的时代即将到来!

spaCy的一些令人惊讶的用例

机器学习之美在于其广阔的范围和复杂性。即使是库或包的创建者,有时也会对其用例感到惊讶。以下是一些Ines和Matt没有预料到的spaCy用例:

从简历中提取信息(PDF解析);

处理网络日志。

很想听到社区的声音——否遇到过任何独特的spaCy用例?或者自己尝试过?在下面的评论部分告诉!

在过去的12-18个月里,NLP取得了巨大的进步,发布了像OpenAI的GPT-2、谷歌的BERT、fast.ai的ULMFiT等突破性框架。那么接下来的2-5年,NLP和spaCy将如何发展呢?

Ines和Matt对这个问题给出了非常深入和有见地的答案。以下是关键收获:

NLP模型变得更小、更高效的变化。换句话说,哪些算法能够随着越来越大的数据量和不断增长的数据集进行扩展?

Ines和Matt已经在考虑这些未来趋势,改进spaCy和Prodigy

可以期待在spaCy中很快看到很多迁移学习方面的内容(预训练模型,好!)。花费更少的时间训练NLP模型,不必等待它收敛,听起来很完美。

在未来的3-4年里,最想解决的NLP问题是什么?

"一个更好的信息提取过程,可以针对自定义问题进行训练,并且支持实体链接。并且有一个集成的注释过程。 人们目前最终会制作临时系统。spaCy有一些有用的组件,但可以做的更好。"

这里是Ines对她的想法的看法:

"建立一套最佳实践,把学到和看到的一切整合在一起。目前很多都是试错。很难推荐一些东西,因为每个用例都不同。 在未来的203年里,希望能有更好的最佳实践感,工作流程,如何构建能够很好地泛化到不同用例的端到端系统。"

以下是Ines和Matt为NLP爱好者和有抱负的数据科学家提供的黄金建议:

磨练现有的技能,打造所学的东西,以便能为已经在这一领域成功交付项目的团队做出贡献。

不要一开始就说“想成为一名NLP专家”。这可能会导致运行一些可能注定要失败的项目,因为不太可能有足够的影响力与领导和其他决策者。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485