CharRNN представляет собой рекуррентную нейронную сеть (RNN), предназначенную для генерации текста на основе последовательностей символов. В библиотеке ml5.js предусмотрена возможность работать с предобученными моделями CharRNN, что позволяет использовать генерацию текста без необходимости обучать сеть с нуля.
Для работы с CharRNN необходимо подключить библиотеку ml5.js. Чаще всего это делается через CDN:
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.6.0/p5.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ml5/0.12.2/ml5.min.js"></script>
Важно подключать p5.js, так как ml5.js тесно интегрирована с этой библиотекой и использует её функции для обработки DOM и работы с данными.
Инициализация предобученной модели CharRNN осуществляется через
конструктор ml5.charRNN(modelPath, callback).
modelPath — путь к директории с моделью. В ml5.js
предобученные модели доступны через URL.callback — функция, вызываемая после успешной загрузки
модели.Пример загрузки стандартной модели для генерации текста в стиле Джейн Остин:
let charRNN;
function setup() {
noCanvas();
const modelPath = 'https://storage.googleapis.com/ml5-models/charRNN/JaneAusten/';
charRNN = ml5.charRNN(modelPath, modelLoaded);
}
function modelLoaded() {
console.log('CharRNN модель загружена');
}
При успешной загрузке вызывается функция modelLoaded,
сигнализируя о готовности модели к генерации текста.
1. generate() Метод позволяет
сгенерировать текст на основе начальной последовательности символов.
const data = {
seed: 'It is a truth', // начальная строка
temperature: 0.5, // параметр случайности генерации
length: 100 // количество символов для генерации
};
charRNN.generate(data, (err, result) => {
if (err) {
console.error(err);
return;
}
console.log(result.sample);
});
Параметры метода generate():
seed — исходная строка, от которой начинается
генерация.temperature — контролирует степень случайности. Меньшее
значение (0.2–0.5) делает текст более предсказуемым, большее (0.8–1.0)
увеличивает разнообразие.length — число символов, которые будут
сгенерированы.2. reset() Сбрасывает внутреннее
состояние сети. Полезно при генерации текста с новой независимой
последовательности:
charRNN.reset();
model.json, weights.bin,
metadata.json). Без этих файлов загрузка не
произойдет.temperature, чтобы сохранить связность текста.seed, а сеть генерирует продолжение
текста.ml5.js предоставляет несколько стандартных моделей, каждая обучена на уникальном корпусе текста:
Shakespeare — тексты Уильяма Шекспира.Nietzsche — философские тексты Фридриха Ницше.StarWars — сценарии фильмов Star Wars.JaneAusten — романы Джейн Остин.Для их использования необходимо изменить путь modelPath
на соответствующий URL:
const modelPath = 'https://storage.googleapis.com/ml5-models/charRNN/Shakespeare/';
Загрузка и генерация текста происходит асинхронно. Это значит, что
любые действия с сетью до завершения загрузки модели приведут к ошибкам.
Следует использовать колбэк-функции или современные
async/await конструкции для упрощения кода:
async function initCharRNN() {
const modelPath = 'https://storage.googleapis.com/ml5-models/charRNN/Shakespeare/';
charRNN = await ml5.charRNN(modelPath);
console.log('Модель готова');
const data = { seed: 'To be', temperature: 0.5, length: 200 };
const result = await charRNN.generate(data);
console.log(result.sample);
}
initCharRNN();
Асинхронный подход повышает читаемость кода и упрощает управление процессом генерации.
Типичная структура проекта с CharRNN выглядит следующим образом:
index.html
script.js
index.html подключает p5.js и ml5.js.script.js содержит код загрузки модели, инициализацию,
генерацию текста и обработку результатов.Этот подход позволяет быстро интегрировать генерацию текста в веб-приложения и экспериментировать с различными стилями предобученных моделей.