Руководство по классификации текста для Python

Задача «Классификатор текста MediaPipe» позволяет классифицировать текст по набору определенных категорий, таких как положительные или отрицательные настроения. Категории определяются используемой вами моделью и способом обучения этой модели. Эти инструкции покажут вам, как использовать классификатор текста с Python.

Вы можете увидеть эту задачу в действии, просмотрев веб-демо . Дополнительные сведения о возможностях, моделях и параметрах конфигурации этой задачи см. в разделе Обзор .

Пример кода

В примере кода классификатора текста представлена ​​полная реализация этой задачи на Python. Этот код поможет вам протестировать эту задачу и приступить к созданию собственного приложения для классификации текста. Вы можете просматривать, запускать и редактировать пример кода классификатора текста, используя только веб-браузер.

Если вы реализуете классификатор текста для Raspberry Pi, обратитесь к примеру приложения Raspberry Pi .

Настраивать

В этом разделе описаны ключевые шаги по настройке среды разработки и проектов кода специально для использования классификатора текста. Общие сведения о настройке среды разработки для использования задач MediaPipe, включая требования к версии платформы, см. в руководстве по настройке Python .

Пакеты

Классификатор текста использует пакет pip mediapipe. Вы можете установить эти зависимости следующим образом:

$ 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'

Укажите путь к модели с помощью параметра model_asset_path объекта BaseOptions , как показано ниже:

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 английский язык. Вы можете добавить локализованные метки к метаданным пользовательской модели с помощью API записи метаданных TensorFlow Lite. Код региона ru
max_results Устанавливает необязательное максимальное количество возвращаемых результатов классификации с наивысшим баллом. Если < 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-классификатора к входному тексту: "an imperfect but overall entertaining mystery" .