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

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

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

Пример кода

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

Настраивать

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

пакеты JavaScript

Код классификатора текста доступен через пакет @mediapipe/tasks-text . Вы можете найти и загрузить эти библиотеки по ссылкам, указанным в руководстве по настройке платформы.

Для локальной установки необходимых пакетов используйте следующий код, выполнив следующую команду:

npm install @mediapipe/tasks-text

Если вы хотите развернуть страницу на сервере, вы можете использовать сервис сети доставки контента (CDN), например jsDelivr , чтобы добавить код непосредственно в вашу HTML-страницу следующим образом:

<head>
  <script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@0.1/text-bundle.js"
    crossorigin="anonymous"></script>
</head>

Модель

Для решения задачи классификации текста MediaPipe требуется обученная модель, совместимая с данной задачей. Дополнительную информацию о доступных обученных моделях для классификации текста см. в разделе «Модели» обзора задачи.

Выберите и скачайте модель, а затем сохраните её в каталоге вашего проекта:

<dev-project-root>/assets/bert_text_classifier.tflite

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

baseOptions: {
        modelAssetPath: `/assets/bert_text_classifier.tflite`
      }

Создайте задачу

Используйте одну из функций TextClassifier.createFrom...() для подготовки задачи к выполнению выводов. Вы можете использовать функцию createFromModelPath() с относительным или абсолютным путем к файлу обученной модели. Пример кода ниже демонстрирует использование функции TextClassifier.createFromOptions() . Для получения дополнительной информации о доступных параметрах конфигурации см. раздел «Параметры конфигурации» .

Следующий код демонстрирует, как собрать и настроить эту задачу:

async function createClassifier() {
  const textFiles = await FilesetResolver.forTextTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm/");
  textClassifier = await TextClassifier.createFromOptions(
    textFiles,
    {
      baseOptions: {
        modelAssetPath: `https://storage.googleapis.com/mediapipe-tasks/text_classifier/bert_text_classifier.tflite`
      },
      maxResults: 5
    }
  );
}
createClassifier();

Параметры конфигурации

Данная задача имеет следующие параметры конфигурации для веб-приложений и приложений на JavaScript:

Название варианта Описание Диапазон значений Значение по умолчанию
displayNamesLocale Задает язык меток, используемых для отображаемых имен, указанных в метаданных модели задачи, если таковые имеются. По умолчанию используется английский en ). Вы можете добавить локализованные метки в метаданные пользовательской модели, используя API TensorFlow Lite Metadata Writer. Код локали эн
maxResults Задает необязательное максимальное количество возвращаемых результатов классификации с наивысшим баллом. Если < 0, будут возвращены все доступные результаты. Любые положительные числа -1
scoreThreshold Устанавливает пороговое значение прогнозируемой оценки, которое переопределяет значение, указанное в метаданных модели (если таковые имеются). Результаты ниже этого значения отклоняются. Любой плавучий объект Не задано
categoryAllowlist Задает необязательный список разрешенных названий категорий. Если список не пуст, результаты классификации, названия категорий которых отсутствуют в этом наборе, будут отфильтрованы. Дублирующиеся или неизвестные названия категорий игнорируются. Этот параметр взаимоисключающий с categoryDenylist , и использование обоих приводит к ошибке. Любые строки Не задано
categoryDenylist Задает необязательный список запрещенных названий категорий. Если список не пуст, результаты классификации, названия категорий которых присутствуют в этом наборе, будут отфильтрованы. Повторяющиеся или неизвестные названия категорий игнорируются. Этот параметр взаимоисключающий с categoryAllowlist , и использование обоих приводит к ошибке. Любые строки Не задано

Подготовка данных

Классификатор текста работает с текстовыми ( String ) данными. Задача включает предварительную обработку входных данных, в том числе токенизацию и обработку тензоров.

Вся предварительная обработка выполняется внутри функции classify() . Дополнительная предварительная обработка входного текста не требуется.

const inputText = "The input text to be classified.";

Запустите задачу

Классификатор текста использует функцию classify() для запуска выводов. В случае классификации текста это означает возврат возможных категорий для входного текста.

Приведенный ниже код демонстрирует, как выполнить обработку с использованием модели задач.

// Wait to run the function until inner text is set
const result: TextClassifierResult = await textClassifier.classify(
  inputText
);

Обработка и отображение результатов

Классификатор текста выдает объект 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" .