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

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

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

Пример кода

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

Настраивать

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

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. Код региона ru
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" .