Python 的文本分类指南

借助 MediaPipe Text Classifier 任务,你可以将文本分类为一组定义的类别, 例如正面或负面情绪。这些类别决定了 以及该模型的训练方式。这些说明将介绍如何使用 将文本分类器与 Python 结合使用。

要了解此任务的实际运行情况,请查看 网页演示。 如需详细了解其功能、模型和 配置选项,请参阅概览

代码示例

文本分类器的示例代码提供了此分类的完整实现, 供您参考。此代码可帮助您测试此任务, 开始构建自己的文本分类应用。您可以查看、运行 修改文本分类器 示例代码 只需使用网络浏览器即可。

如果您要实现适用于 Raspberry Pi 的文本分类器,请参阅 Raspberry Pi 示例 app

设置

本部分介绍了设置开发环境和 专门用于文本分类器的代码项目。有关 设置开发环境以使用 MediaPipe Tasks,包括 平台版本要求,请参阅 Python 设置指南

<ph type="x-smartling-placeholder">

软件包

文本分类器使用 mediapipe pip 软件包。你可以安装 这些依赖项与以下各项:

$ python -m pip install mediapipe

导入

导入以下类以访问文本分类器任务函数:

from mediapipe.tasks import python
from mediapipe.tasks.python import text

型号

MediaPipe 文本分类器任务需要一个与此分类兼容的经过训练的模型 任务。如需详细了解文本分类器的可用训练模型,请参阅 任务概览的“模型”部分

选择并下载模型,然后将其存储在本地目录中:

model_path = '/absolute/path/to/text_classifier.tflite'

使用 BaseOptions 对象 model_asset_path 指定模型的路径 参数中,如下所示:

base_options = BaseOptions(model_asset_path=model_path)

创建任务

MediaPipe 文本分类器任务使用 create_from_options 函数来设置 任务。create_from_options 函数接受配置值 来设置分类器选项您还可以使用以下代码 create_from_model_path 工厂函数。create_from_model_path 函数接受经过训练的模型文件的相对或绝对路径。 如需详细了解配置选项,请参阅 配置选项

以下代码演示了如何构建和配置此任务。

base_options = python.BaseOptions(model_asset_path=model_path)
options = text.TextClassifierOptions(base_options=base_options)

with python.text.TextClassifier.create_from_options(options) as classifier:
  classification_result = classifier.classify(text)

配置选项

此任务具有以下适用于 Android 应用的配置选项:

选项名称 说明 值范围 默认值
display_names_locale 设置要用于 任务模型的元数据(如果有)。默认值为 en, 英语。您可以向自定义模型的元数据中添加本地化标签 使用 TensorFlow Lite Metadata Writer API 语言区域代码 en
max_results 将评分最高的分类结果的可选数量上限设置为 return。如果 <0,则返回所有可用的结果。 任何正数 -1
score_threshold 设置预测分数阈值,以替换 模型元数据(如果有)。低于此值的结果将被拒绝。 任意浮点数 未设置
category_allowlist 设置允许的类别名称的可选列表。如果不为空, 类别名称未包含在此集合中的分类结果 已滤除。重复或未知的类别名称会被忽略。 此选项与 category_denylist 互斥,使用 都会导致错误。 任何字符串 未设置
category_denylist 设置不允许使用的类别名称的可选列表。如果 非空,类别名称在此集中的分类结果将被滤除 。重复或未知的类别名称会被忽略。这个选项 category_allowlist 不包含,同时使用这两个元素会导致错误。 任何字符串 未设置

准备数据

文本分类器处理文本 (str) 数据。任务处理数据输入 预处理,包括标记化和张量预处理。

所有预处理都在 classify 函数中进行处理。不需要 以预先对输入文本进行额外的预处理。

input_text = 'The input text to be classified.'

运行任务

文本分类器使用 classify 函数来触发推理。适用于文本 分类,这意味着返回输入文本的可能类别。

以下代码演示了如何使用任务执行处理 模型。

with python.text.TextClassifier.create_from_options(options) as classifier:
  classification_result = classifier.classify(text)

处理和显示结果

文本分类器输出一个包含列表的 TextClassifierResult 对象 可能的类别。这些类别由 因此,如果您需要其他类别,请选择不同的模型, 或重新训练现有数据集。

以下示例展示了此任务的输出数据:

TextClassificationResult:
  Classification #0 (single classification head):
    ClassificationEntry #0:
      Category #0:
        category name: "positive"
        score: 0.8904
        index: 0
      Category #1:
        category name: "negative"
        score: 0.1096
        index: 1

通过对输入文本运行 BERT-loader 来获得此结果: "an imperfect but overall entertaining mystery"