借助 MediaPipe 文本分类器任务,您可以将文本归类到一组定义的类别中,例如正面或负面的情感。这些类别是在模型训练期间定义的。此任务使用机器学习 (ML) 模型作为静态数据对文本数据执行操作,并输出类别及其可能性得分的列表。
开始使用
要开始使用此任务,请遵循您所使用的平台的以下实现指南之一:
这些平台专用指南将引导您完成此任务的基本实现,包括推荐的模型以及包含推荐配置选项的代码示例。
任务详情
本部分介绍此任务的功能、输入、输出和配置选项。
特性
- 输入文本处理 - 支持没有图内令牌化的模型图外令牌化
- 多个分类头 - 每个头部都可以使用自己的类别集
- 标签地图语言区域 - 设置显示名称使用的语言
- 分数阈值 - 根据预测分数过滤结果
- Top-k 分类结果 - 过滤检测结果的数量
- 标签许可名单和拒绝名单 - 指定检测到的类别
任务输入 | 任务输出 |
---|---|
文本分类器接受以下输入数据类型:
|
文本分类器会输出一个包含以下内容的类别列表:
|
配置选项
此任务具有以下配置选项:
选项名称 | 说明 | 值范围 | 默认值 |
---|---|---|---|
displayNamesLocale |
设置任务模型元数据中提供的显示名(如果有)要使用的标签语言。英语的默认值为 en 。您可以使用 TensorFlow Lite Metadata Writer API 向自定义模型的元数据添加本地化标签。 | 语言区域代码 | en |
maxResults |
设置要返回的得分最高的分类结果的数量上限(可选)。如果小于 0,将返回所有可用的结果。 | 任何正数 | -1 |
scoreThreshold |
设置预测分数阈值,以替换模型元数据中提供的阈值(如果有)。低于此值的结果会被拒绝。 | 任意浮点数 | 未设置 |
categoryAllowlist |
设置允许的类别名称的可选列表。如果为非空,则类别名称不在此集合中的分类结果将被滤除。系统会忽略重复或未知的类别名称。
此选项与 categoryDenylist 互斥,如果同时使用这两者,就会引发错误。 |
任何字符串 | 未设置 |
categoryDenylist |
设置不允许使用的类别名称的可选列表。如果非空,则类别名称在此集合中的分类结果将被滤除。系统会忽略重复或未知的类别名称。此选项与 categoryAllowlist 互斥,同时使用这两者会导致错误。 |
任何字符串 | 未设置 |
模型
文本分类器可用于多个机器学习模型。开始使用此任务进行开发时,请先使用适用于目标平台的默认推荐模型。其他可用模型通常会在性能、准确性、分辨率和资源要求之间进行权衡,在某些情况下,还会包含其他功能。
这些预训练模型会经过训练以用于情感分析,并预测输入文本的情感是正面的还是负面的。这些模型在 SST-2(斯坦福情感树库)数据集上训练,数据集包含标记为正面或负面的电影评价。请注意,这些模型仅支持英语。由于它们是使用影评数据集进行训练的,因此您可能会发现涵盖其他主题领域的文本的质量有所降低。
BERT 分类器模型(推荐)
该模型使用基于 BERT 的架构(具体来说是 MobileBERT 模型),由于其准确性较高,因此推荐使用。它包含可让任务执行图外 BERT 标记化的元数据。
模型名称 | 输入形状 | 量化类型 | Versions |
---|---|---|---|
BERT 分类器 | [1x128]、[1x128]、[1x128] | 动态范围 | 最新动态 |
平均字词嵌入模型
该模型使用普通字词嵌入架构。与 BERT 分类器相比,此模型的预测准确率更低,但模型大小更小、延迟时间更短。通过额外的训练自定义此模型也比训练基于 BERT 的分类器更快。此模型包含允许任务执行图外正则表达式标记化的元数据。
模型名称 | 输入形状 | 量化类型 | Versions |
---|---|---|---|
平均字词嵌入 | 1 x 256 | 无 (float32) | 最新动态 |
任务基准
以下是基于上述预训练模型的整个流水线的任务基准。延迟时间结果是 Pixel 6 使用 CPU / GPU 时的平均延迟时间。
模型名称 | CPU 延迟时间 | GPU 延迟时间 |
---|---|---|
平均字词嵌入 | 0.14 毫秒 | - |
BERT 分类器 | 57.68 毫秒 | - |
自定义模型
如果您想改进或更改所提供模型的功能,可以将自定义机器学习模型用于此任务。您可以使用 Model Maker 修改现有模型,或使用 TensorFlow 等工具构建模型。与 MediaPipe 搭配使用的自定义模型必须采用 TensorFlow Lite 格式,并且必须包含描述模型操作参数的特定元数据。在构建您自己的模型之前,您应该考虑使用 Model Maker 修改为此任务提供的模型。