TextCategorizer
文本分类器预测整个文档的类别,有 textcat 和 textcat_multilabel 两种类型。 如果你需要预测每个文档的唯一一个真实标签,请使用具有互斥标签的 textcat。 如果你想执行多标签分类并预测每个文档的零个、一个或多个真实标签,请使用 textcat_multilabel 组件。 对于二元分类任务,你可以使用带有 两个 标签的 textcat 或带有 一个 标签的 textcat_multilabel。
这两个组件在此页面上有文档说明。
已分配的属性
预测结果将保存到 doc.cats 中,作为一个字典,其中键是类别的名称,值是 0 到 1 之间(包括 0 和 1)的分数。 对于 textcat(互斥类别),分数之和为 1,而对于 textcat_multilabel,对其总和没有特别的保证。 这也意味着对于 textcat,缺失值被等同于 0(即 False),并被计入损失和评分指标。 这对于 textcat_multilabel 不成立,其中黄金标准数据中的缺失值不会影响损失或准确性计算。
请注意,在分配值以创建训练数据时,每个类别的分数必须为 0 或 1。 使用其他值,例如创建一个在类别 A 中略有存在,在类别 B 中略有存在的文档,是不被支持的。
| 位置 | 值 |
|---|---|
Doc.cats | 类别分数。 Dict[str, float] |
配置和实现
默认配置由流水线组件工厂定义,并描述了应如何配置组件。您可以通过 config 参数在 nlp.add_pipe 或在您的 config.cfg 用于训练 中覆盖其设置。有关架构及其参数和超参数的详细信息,请参阅 模型架构 文档。
| 设置 | 描述 |
|---|---|
threshold | 用于考虑预测为“正”的阈值,对于计算准确度分数时 textcat_multilabel 来说很重要。 float |
model | 一个预测每个类别分数的模型实例。 默认值为 TextCatEnsemble。 Model[List[Doc], List[Floats2d]] |
scorer | 评分方法。 默认值为 Scorer.score_cats 用于属性 "cats"。 Optional[Callable] |
explosion/spaCy/master/spacy/pipeline/textcat.py
explosion/spaCy/master/spacy/pipeline/textcat_multilabel.py
TextCategorizer.__init__ 方法
创建一个新的管道实例。在您的应用程序中,您通常会使用此操作的快捷方式,并使用字符串名称和 nlp.add_pipe 来实例化组件。
| 名称 | 描述 |
|---|---|
vocab | 共享词汇表。 Vocab |
model | 为管道组件提供支持的 Thinc Model。 Model[List[Doc], List[Floats2d]] |
name | 组件实例的字符串名称。用于在训练期间将条目添加到 losses 中。 str |
| 仅限关键字 | |
threshold | 用于考虑预测为“正”的阈值,对于计算准确度分数时 textcat_multilabel 来说很重要。 float |
scorer | 评分方法。 默认值为 Scorer.score_cats 用于属性 "cats"。 Optional[Callable] |
TextCategorizer.__call__ 方法
将管道应用于单个文档。 文档会就地修改并返回。 这通常在幕后发生,当 nlp 对象被调用到文本上,并且所有管道组件都按顺序应用于 Doc 时。 __call__ 和 pipe 都委托给 predict 和 set_annotations 方法。
| 名称 | 描述 |
|---|---|
doc | 要处理的文档。 Doc |
| 返回值 | 处理后的文档。 Doc |
TextCategorizer.pipe 方法
将管道应用于文档流。 这通常在幕后发生,当 nlp 对象被调用到文本上,并且所有管道组件都按顺序应用于 Doc 时。 __call__ 和 pipe 都委托给 predict 和 set_annotations 方法。
| 名称 | 描述 |
|---|---|
流 | 文档流。 Iterable[Doc] |
| 仅限关键字 | |
batch_size | 缓冲的文档数量。默认值为 128。 int |
| YIELDS | 按顺序处理后的文档。 Doc |
TextCategorizer.initialize 方法v3.0
初始化组件进行训练。 get_examples 应该是一个返回 Example 对象的可迭代函数。 至少应提供一个示例。 数据示例用于 初始化组件的模型,可以是完整训练数据或具有代表性的样本。 初始化包括验证网络、推断缺失形状 以及根据数据设置标签方案。 此方法通常由 Language.initialize 调用,并允许你通过配置中的 [initialize.components] 块自定义它接收的参数。
| 名称 | 描述 |
|---|---|
get_examples | 一个返回以 Example 对象形式表示的黄金标准注释的函数。必须包含至少一个 Example。 Callable[[], Iterable[Example]] |
| 仅限关键字 | |
nlp | 当前的 nlp 对象。默认值为 None。 Optional[Language] |
labels | 要添加到组件的标签信息,由初始化后 label_data 属性提供。 要从你的数据生成可重用的 JSON 文件,你应该运行 init labels 命令。 如果未提供标签,则使用 get_examples 回调函数从数据中提取标签,这可能会慢得多。 Optional[Iterable[str]] |
positive_label | 用于具有互斥类别的二元任务的正标签,否则为 None 且默认值。 此参数仅在评分期间使用。 在使用 textcat_multilabel 组件时不可用。 Optional[str] |
TextCategorizer.predict 方法
将组件的模型应用于一批 Doc 对象,而不修改它们。
| 名称 | 描述 |
|---|---|
docs | 要预测的文档。 Iterable[Doc] |
| 返回值 | 模型的每个文档的预测结果。 |
TextCategorizer.set_annotations 方法
使用预计算的分数修改一批 Doc 对象。
| 名称 | 描述 |
|---|---|
docs | 要修改的文档。 Iterable[Doc] |
scores | 由 TextCategorizer.predict 生成的要设置的分数。 |
TextCategorizer.update 方法
从包含预测和黄金标准注释的 Example 对象批次中学习,并更新组件的模型。 委托给 predict 和 get_loss。
| 名称 | 描述 |
|---|---|
示例 | 要从中学习的一批 Example 对象。 Iterable[Example] |
| 仅限关键字 | |
dropout | dropout 率。 float |
sgd | 一个优化器。 如果未设置,将通过 create_optimizer 创建。 Optional[Optimizer] |
losses | 训练期间损失的记录(可选)。使用组件名称作为键进行更新。 Optional[Dict[str, float]] |
| 返回值 | 更新后的 `losses` 字典。 Dict[str, float] |
TextCategorizer.rehearse 方法实验性v3.0
从数据批次执行“排练”更新。 排练更新教导当前模型做出类似于初始模型的预测,以尝试解决“灾难性遗忘”问题。 此功能是实验性的。
| 名称 | 描述 |
|---|---|
示例 | 要从中学习的一批 Example 对象。 Iterable[Example] |
| 仅限关键字 | |
dropout | dropout 率。 float |
sgd | 一个优化器。 如果未设置,将通过 create_optimizer 创建。 Optional[Optimizer] |
losses | 训练期间损失的记录(可选)。使用组件名称作为键进行更新。 Optional[Dict[str, float]] |
| 返回值 | 更新后的 `losses` 字典。 Dict[str, float] |
TextCategorizer.get_loss 方法
查找一批文档及其预测分数损失和损失梯度。
| 名称 | 描述 |
|---|---|
示例 | 一批示例。 Iterable[Example] |
scores | 表示模型预测的分数。 |
| 返回值 | 损失和梯度,即 (loss, gradient)。 Tuple[float, float] |
TextCategorizer.score 方法v3.0
对示例批次进行评分。
| 名称 | 描述 |
|---|---|
示例 | 要评分的示例。 Iterable[Example] |
| 仅限关键字 | |
| 返回值 | 由 Scorer.score_cats 生成的分数。 Dict[str, Union[float, Dict[str, float]]] |
TextCategorizer.create_optimizer 方法
为 pipeline 组件创建一个优化器。
| 名称 | 描述 |
|---|---|
| 返回值 | 优化器。 Optimizer |
TextCategorizer.use_params 方法上下文管理器
修改管道的模型以使用给定的参数值。
| 名称 | 描述 |
|---|---|
params | 要在模型中使用的参数值。 dict |
TextCategorizer.add_label 方法
向管道添加新的标签。 如果输出维度已经设置,或者模型已经完全 初始化,则会引发错误。 请注意,如果您向 initialize 方法提供一个**代表性数据样本**,则无需调用此方法。 在这种情况下,样本中找到的所有标签都将自动添加到模型中,并且输出维度将自动 推断。
| 名称 | 描述 |
|---|---|
label | 要添加的标签。 str |
| 返回值 | 如果标签已经存在,则为 0,否则为 1。 int |
TextCategorizer.to_disk 方法
将 pipe 序列化到磁盘。
| 名称 | 描述 |
|---|---|
path | 指向目录的路径,如果不存在则会创建该目录。路径可以是字符串或类似 `Path` 的对象。 Union[str,Path] |
| 仅限关键字 | |
exclude | 要排除的 序列化字段 的字符串名称。 Iterable[str] |
TextCategorizer.from_disk 方法
从磁盘加载 pipe。修改对象并返回它。
| 名称 | 描述 |
|---|---|
path | 指向目录的路径。路径可以是字符串或类似 `Path` 的对象。 Union[str,Path] |
| 仅限关键字 | |
exclude | 要排除的 序列化字段 的字符串名称。 Iterable[str] |
| 返回值 | 修改后的 TextCategorizer 对象。 TextCategorizer |
TextCategorizer.to_bytes 方法
将 pipe 序列化为字节串。
| 名称 | 描述 |
|---|---|
| 仅限关键字 | |
exclude | 要排除的 序列化字段 的字符串名称。 Iterable[str] |
| 返回值 | TextCategorizer 对象的序列化形式。 bytes |
TextCategorizer.from_bytes 方法
从字节串加载 pipe。修改对象并返回它。
| 名称 | 描述 |
|---|---|
bytes_data | 要加载的数据。 bytes |
| 仅限关键字 | |
exclude | 要排除的 序列化字段 的字符串名称。 Iterable[str] |
| 返回值 | The TextCategorizer 对象。 TextCategorizer |
TextCategorizer.labels 属性
当前添加到组件的标签。
| 名称 | 描述 |
|---|---|
| 返回值 | 添加到组件的标签。 Tuple[str, …] |
TextCategorizer.label_data 属性v3.0
当前添加到组件中的标签及其内部元信息。 这是由 init labels 生成的数据,并由 TextCategorizer.initialize 使用预定义的标签集初始化模型。
| 名称 | 描述 |
|---|---|
| 返回值 | 添加到组件的标签数据。 Tuple[str, …] |
序列化字段
在序列化期间,spaCy 将导出用于恢复对象不同方面的几个数据字段。如果需要,可以通过 `exclude` 参数传递字符串名称来将它们排除在序列化之外。
| 名称 | 描述 |
|---|---|
vocab | 共享的 `Vocab`。 |
cfg | 配置文件。通常您不想排除此文件。 |
model | 二进制模型数据。通常您不想排除此数据。 |