Задача «Классификатор текста 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" .