Загрузка и настройка модели Sentiment

Для работы с библиотекой ml5.js необходимо подключить её к проекту. Наиболее распространённый способ — через CDN. В HTML-файле подключение выглядит следующим образом:

<script src="https://cdn.jsdelivr.net/npm/ml5@latest/dist/ml5.min.js"></script>

После подключения ml5.js становятся доступными все её модули и функции, включая работу с моделью Sentiment для анализа тональности текста.

Загрузка модели Sentiment

Модель Sentiment предназначена для определения эмоциональной окраски текста: положительной, отрицательной или нейтральной. В ml5.js она представлена как асинхронный объект, который необходимо загрузить перед использованием.

let sentiment;

function setup() {
  sentiment = ml5.sentiment('movieReviews', modelLoaded);
}

function modelLoaded() {
  console.log('Модель Sentiment успешно загружена');
}

Ключевые моменты:

  • 'movieReviews' — предобученная модель на наборе обзоров фильмов. Она оценивает текст на основе эмоциональной окраски слов.
  • Функция modelLoaded вызывается после полной загрузки модели. Без этой проверки попытка анализа текста приведёт к ошибке.
  • ml5.js автоматически загружает модель с удалённого сервера, поэтому важна стабильная интернет-связь.

Структура объекта Sentiment

После загрузки модель предоставляет методы для анализа текста. Основной метод — predict(). Он возвращает объект с оценкой тональности текста в виде числового значения от 0 до 1:

  • 0 — максимально негативная окраска
  • 0.5 — нейтральная
  • 1 — максимально позитивная

Пример использования:

const text = "Этот фильм потрясающий!";
const prediction = sentiment.predict(text);
console.log(prediction.score); // Например, 0.92

Важно: predict() работает синхронно в новых версиях ml5.js, но при использовании старых версий может быть асинхронным. Проверка документации конкретной версии обязательна.

Обработка текста перед анализом

Хотя модель умеет работать с сырым текстом, рекомендуется предварительно обрабатывать ввод:

  • Удаление лишних символов: пунктуация и спецсимволы могут влиять на точность.
  • Нормализация регистра: модель чувствительна к регистру, лучше приводить текст к нижнему регистру.
  • Очистка от HTML-тегов и ссылок: их наличие может искажать оценку.

Пример обработки:

function preprocess(text) {
  return text
    .toLowerCase()
    .replace(/<[^>]*>/g, '')
    .replace(/[^\w\s]/gi, '');
}

const cleanText = preprocess("Отличный фильм! <br> Смотрел на выходных.");
const score = sentiment.predict(cleanText).score;
console.log(score);

Расширенные возможности

Модель Sentiment поддерживает работу с массивами слов и встроенную токенизацию. Можно получать не только общий балл, но и влияние отдельных слов на итоговую оценку.

const result = sentiment.predict("Фильм был скучным, но актёры сыграли хорошо.");
console.log(result);
console.log(result.words); // Разбор влияния каждого слова

Каждое слово получает собственную оценку, что позволяет выявлять ключевые позитивные и негативные фрагменты текста.

Практическая интеграция

Использование с формой ввода:

const input = document.getElementById('reviewInput');
const output = document.getElementById('sentimentScore');

input.addEventListener('input', () => {
  const text = preprocess(input.value);
  const score = sentiment.predict(text).score;
  output.textContent = `Оценка тональности: ${score.toFixed(2)}`;
});

Важные аспекты:

  • Обновление оценки при каждом вводе текста требует оптимизации, если анализ выполняется на больших текстах.
  • Для крупных приложений рекомендуется дебаунсинг событий ввода, чтобы модель не перегружалась постоянными вызовами predict().

Настройка и кастомизация

Модель Sentiment позволяет:

  • Использовать разные предобученные наборы ('movieReviews', 'twitter'), что влияет на стиль оценивания текста.
  • Добавлять собственные словари или дообучать модель (для продвинутых пользователей, через TensorFlow.js и экспорт в формат ml5).
  • Встроенно выводить детализированные оценки отдельных токенов для аналитики.

Совместимость и производительность

  • Кроссбраузерность: ml5.js работает в современных версиях Chrome, Firefox, Safari, Edge.
  • Ресурсы: модель загружается в память клиента, поэтому для мобильных устройств или слабых ПК рекомендуется использовать минимизированные версии или обрабатывать текст на сервере.
  • Асинхронная загрузка: критична для корректного функционирования интерфейсов, где анализ выполняется сразу после инициализации страницы.

Модель Sentiment в ml5.js сочетает простоту использования с высокой точностью предсказаний для большинства текстов на английском языке, позволяя интегрировать анализ тональности в веб-приложения без сложной настройки машинного обучения.