ml5.js предоставляет высокоуровневый интерфейс для работы с машинным обучением в браузере. Одной из ключевых моделей для анализа текста является Sentiment, предназначенная для определения эмоциональной окраски текста: положительной, отрицательной или нейтральной. Модель построена на основе LSTM (Long Short-Term Memory) сетей, что позволяет учитывать последовательность слов и контекст.
Для работы с Sentiment необходимо подключить библиотеку ml5.js через CDN или локальный файл:
<script src="https://cdnjs.cloudflare.com/ajax/libs/ml5/0.12.2/ml5.min.js"></script>
Создание экземпляра модели осуществляется с помощью функции
ml5.sentiment(), которая возвращает объект модели после
загрузки:
let sentiment;
function setup() {
sentiment = ml5.sentiment('movieReviews', modelReady);
}
function modelReady() {
console.log('Модель Sentiment загружена и готова к использованию');
}
Ключевые моменты:
'movieReviews' — предобученная модель для анализа
отзывов о фильмах, которая демонстрирует универсальный подход к
определению тональности текста.modelReady.Экземпляр Sentiment предоставляет метод predict(text),
который возвращает оценку тональности текста.
let text = "I really enjoyed this movie!";
let prediction = sentiment.predict(text);
console.log(prediction);
Особенности результата:
score — числовое значение от 0 до 1, где 0
соответствует отрицательной, а 1 — положительной тональности.Пример работы с оценкой:
if (prediction.score > 0.66) {
console.log("Тональность: положительная");
} else if (prediction.score < 0.33) {
console.log("Тональность: отрицательная");
} else {
console.log("Тональность: нейтральная");
}
Sentiment можно использовать для анализа текста, введённого пользователем в браузере, с обновлением оценки в реальном времени. Пример с HTML-формой:
<input type="text" id="userText" placeholder="Введите текст">
<button oncl ick="analyzeText()">Анализировать</button>
<p id="result"></p>
<script>
function analyzeText() {
let text = document.getElementById('userText').value;
let prediction = sentiment.predict(text);
document.getElementById('result').innerText =
`Score: ${prediction.score.toFixed(2)}`;
}
</script>
Особенности реализации:
Для анализа большого объёма данных удобно использовать циклы и асинхронные функции. Пример обработки массива отзывов:
let reviews = [
"The movie was fantastic!",
"I didn't like the film at all.",
"It was okay, nothing special."
];
reviews.forEach(review => {
let result = sentiment.predict(review);
console.log(`Текст: "${review}" — Score: ${result.score.toFixed(2)}`);
});
Рекомендации по работе с массивами:
setTimeout или requestAnimationFrame для
предотвращения блокировки интерфейса.Анализ тональности можно объединять с графическими библиотеками, например, p5.js, для создания динамических визуализаций:
let texts = ["I love this!", "Not good.", "Amazing experience!"];
function setup() {
createCanvas(400, 200);
textSize(16);
texts.forEach((t, i) => {
let score = sentiment.predict(t).score;
fill(score * 255, 0, (1 - score) * 255);
text(`${t} — ${score.toFixed(2)}`, 10, 30 + i * 30);
});
}
Эффект:
TextClassifier для детального тематического анализа.Sentiment в ml5.js обеспечивает мощный и интуитивно понятный инструмент для работы с эмоциональной окраской текста, позволяя создавать интерактивные веб-приложения с анализом тональности в реальном времени.