spaCy - 容器



本章我们将学习 spaCy 的容器。让我们首先了解包含 spaCy 容器的类。

我们有四个类包含 spaCy 的容器:

Doc

Doc,用于访问语言注释的容器,是 token 对象的序列。借助 Doc 类,我们可以访问句子和命名实体。

我们还可以将注释导出到 numpy 数组,并序列化为压缩的二进制字符串。Doc 对象保存一个 TokenC 结构数组,而 Token 和 Span 对象只能查看此数组,不能保存任何数据。

Token

顾名思义,它表示单个标记,例如单词、标点符号、空格、符号等。

Span

它是上面讨论过的 Doc 对象的一个切片。

Lexeme

它可以定义为词汇表中的一个条目。与单词标记相反,Lexeme 没有字符串上下文。它是一个词性,因此它没有任何词性 (Part-of-Speech) 标记、依赖解析或词形。

现在,让我们详细讨论所有四个类:

Doc 类

下面解释了 Doc 类中使用的参数、序列化字段和方法:

参数

下表解释了它的参数:

名称 类型 描述
text unicode 此属性表示文档文本(Unicode)。
mem Pool 顾名思义,此属性用于文档的本地内存堆,用于它拥有的所有 C 数据。
vocab Vocab 它存储所有词汇类型。
tensor ndarray 在 2.0 版中引入,它是密集向量表示的容器。
cats dict 在 2.0 版中引入,此属性将标签映射到应用于文档的类别的分数。请注意,标签是字符串,分数应该是浮点值。
user_data - 它表示一个通用的存储区域,主要用于用户自定义数据。
lang int 在 2.1 版中引入,它表示文档词汇的语言。
lang_ unicode 在 2.1 版中引入,它表示文档词汇的语言。
is_tagged bool 这是一个标志,指示文档是否已进行词性标注。如果 Doc 为空,它将返回 True。
is_parsed bool 这是一个标志,指示文档是否已进行句法分析。如果 Doc 为空,它将返回 True。
is_sentenced bool 这是一个标志,指示是否已将句子边界应用于文档。如果 Doc 为空,它将返回 True。
is_nered bool 此属性在 2.1 版中引入。这是一个标志,指示命名实体是否已设置。如果 Doc 为空,它将返回 True。如果任何标记都设置了实体标记,它也将返回 True。
sentiment float 它将返回文档的积极/消极分数(如果可用)为浮点数。
user_hooks dict 此属性是一个字典,允许自定义Doc 的属性。
user_token_hooks dict 此属性是一个字典,允许自定义Token 子对象的属性。
user_span_hooks dict 此属性是一个字典,允许自定义Span 子对象的属性。
_ 下划线 它表示用户空间,用于添加自定义属性扩展。

序列化字段

在序列化过程中,为了恢复对象的各个方面,spaCy 将导出多个数据字段。我们还可以通过传递名称(通过名为exclude 的参数之一)来从序列化中排除数据字段。

下表解释了序列化字段:

序号 名称和描述
1

Text

它表示Doc.text 属性的值。

2

Sentiment

它表示Doc.sentiment 属性的值。

3

Tensor

它表示Doc.tensor 属性的值。

4

user_data

它表示Doc.user_data 字典的值。

5

user_data_keys

它表示Doc.user_data 字典的键。

6

user_data_values

它表示Doc.user_data 字典的值。

方法

以下是 Doc 类中使用的方法:

序号 方法和描述
1 Doc._ _init_ _

构造 Doc 对象。

2 Doc._ _getitem_ _

获取特定位置的 token 对象。

3 Doc._ _iter_ _

迭代可以轻松访问注释的 token 对象。

4 Doc._ _len_ _

获取文档中 token 的数量。

类方法

以下是 Doc 类中使用的类方法:

序号 类方法和描述
1 Doc.set_extension

它在 Doc 上定义自定义属性。

2 Doc.get_extension

它将按名称查找先前扩展。

3 Doc.has_extension

它将检查是否已在 Doc 类上注册扩展。

4 Doc.remove_extension

它将删除先前在 Doc 类上注册的扩展。

广告