Brain.js — это библиотека для работы с нейронными сетями в JavaScript. Она предоставляет инструменты для обучения моделей на основе примеров и предсказания новых данных. В контексте генерации текста ключевым компонентом является рекуррентная нейронная сеть (RNN), способная обрабатывать последовательности символов или слов.
Для начала работы требуется установка библиотеки через npm:
npm install brain.js
Подключение в коде:
const brain = require('brain.js');
Для генерации текста используется класс recurrent.LSTM,
который реализует долгую краткосрочную память (LSTM) — одну из
разновидностей RNN. Она хорошо справляется с последовательными данными,
сохраняя контекст на протяжении нескольких шагов.
const net = new brain.recurrent.LSTM();
Данные для обучения RNN должны быть представлены в виде последовательностей текста. Возможны два подхода:
Пример подготовки данных по символам:
const trainingData = [
"Привет, как дела?",
"Привет, что нового?",
"Привет, давно не виделись."
];
Для больших текстовых корпусов рекомендуется предварительно очистить данные: удалить лишние пробелы, нормализовать регистр, исключить неподходящие символы.
RNN в Brain.js имеет несколько важных параметров:
inputSize — размер входного слоя (по умолчанию
вычисляется автоматически).hiddenLayers — массив, задающий количество нейронов в
скрытых слоях, например [20, 20].outputSize — размер выходного слоя.learningRate — скорость обучения, обычно значение
0.01–0.05.iterations — количество проходов обучения.Пример создания сети с настройкой скрытых слоев и скорости обучения:
const net = new brain.recurrent.LSTM({
hiddenLayers: [50, 50],
learningRate: 0.02
});
Обучение проводится методом train, который принимает
массив текстовых примеров:
net.train(trainingData, {
iterations: 2000,
log: true,
logPeriod: 100
});
iterations — количество циклов обучения.log — вывод процесса обучения.logPeriod — через сколько итераций выводить лог.После обучения можно использовать метод run, который
принимает начальный фрагмент текста и возвращает
продолжение последовательности, предсказанное сетью.
const result = net.run("Привет, ");
console.log(result); // например: "как дела?"
Для генерации разнообразного текста можно использовать несколько стартовых фраз, варьировать длину сгенерированного текста и случайно выбирать начальные символы.
Метод run можно расширять через дополнительные
параметры:
Пример реализации функции генерации текста с настройкой температуры:
function generateText(seed, length = 100, temperature = 0.5) {
let output = seed;
for (let i = 0; i < length; i++) {
const nextChar = net.run(output).slice(-1);
if (Math.random() < temperature) {
output += nextChar;
} else {
output += seed[Math.floor(Math.random() * seed.length)];
}
}
return output;
}
console.log(generateText("Привет, ", 50, 0.7));
RNN на Brain.js подходит для:
В основе работы лежит принцип обучения на последовательностях, что делает Brain.js удобным инструментом для текстовой генерации в браузере и на сервере с Node.js.