Spacy 简明教程

spaCy - Introduction

在本章中,我们将了解与 spaCy 相关的功能、扩展和可视化工具。此外,还提供了功能比较,帮助读者分析 spaCy 相较于自然语言工具包 (NLTK) 和 coreNLP 所提供的功能。此处,NLP 表示自然语言处理。

What is spaCy?

spaCy 由软件开发人员 Matthew HonnibalInes Montani 开发,是一个用于高级 NLP 的开源软件库。它用 PythonCython (Python 的 C 扩展,主要设计用于为 Python 语言程序提供类似 C 的性能)编写。

spaCy 是一个相对较新的框架,但它是最强大、最先进的库之一,用于实现 NLP。

Features

spaCy 的部分特性使其颇受欢迎,如下所述:

Fast ——spaCy 经过专门设计,尽可能快。

Accuracy ——spaCy 实现的标注依存关系分析器,使其成为同类中最精确的框架之一(达到最佳可用框架的 1% 以内)。

Batteries included ——spaCy 中包含的配套工具如下:

  1. Index preserving tokenization.

  2. “Alpha 分词”支持 50 多种语言。

  3. Part-of-speech tagging.

  4. Pre-trained word vectors.

  5. 内置简单漂亮的名实体和语法可视化器。

  6. Text classification.

Extensile ——你可以轻松地将 spaCy 与其他现有工具一起使用,如 TensorFlow、Gensim、scikit-Learn 等。

Deep learning integration ——它具有 Thinc(一个深度学习框架),专为 NLP 任务而设计。

Extensions and visualisers

spaCy 随附的部分易用扩展和可视化工具是免费的开源库,如下所列:

Thinc ——它是针对中央处理器 (CPU) 使用进行优化的机器学习 (ML) 库。它还设计用于具有文本输入和 NLP 任务的深度学习。

sense2vec ——这个库用于计算单词相似度。它基于 Word2vec。

displaCy ——它是一个开源依存关系分析树可视化器。它用 JavaScript、CSS(层叠样式表)和 SVG(可缩放矢量图形)构建。

displaCy ENT ——它是 spaCy 附带的内置命名实体可视化器。它用 JavaScript 和 CSS 构建。它允许用户在浏览器中查看其模型的预测。

Feature Comparison

下表展示了 spaCy、NLTK 和 CoreNLP 所提供的功能比较:

Features

spaCy

NLTK

CoreNLP

Python API

Yes

Yes

No

Easy installation

Yes

Yes

Yes

Multi-language Support

Yes

Yes

Yes

Integrated word vectors

Yes

No

No

Tokenization

Yes

Yes

Yes

Part-of-speech tagging

Yes

Yes

Yes

Sentence segmentation

Yes

Yes

Yes

Dependency parsing

Yes

No

Yes

Entity Recognition

Yes

Yes

Yes

Entity linking

Yes

No

No

Coreference Resolution

No

No

Yes

Benchmarks

spaCy 拥有全球最快的句法解析器,以及最高精度(在最佳有效精度范围内 1%)。

下表显示 spaCy 的基准 −

System

Year

Language

Accuracy

spaCy v2.x

2017

Python and Cython

92.6

spaCy v1.x

2015

Python and Cython

91.8

ClearNLP

2015

Java

91.7

CoreNLP

2015

Java

89.6

MATE

2015

Java

92.5

Turbo

2015

C++

92.4