Brain.js — это библиотека для работы с нейронными сетями на JavaScript, позволяющая строить модели для задач регрессии, классификации и прогнозирования. В контексте текстовой классификации она используется для распознавания категорий текста на основе обучающего корпуса.
Для классификации текста данные должны быть приведены к числовому виду. Brain.js не работает напрямую с сырой строкой, поэтому текст сначала преобразуется в векторную форму. Часто применяются следующие подходы:
Пример преобразования текста в формат, подходящий для Brain.js:
const trainingData = [
{ input: { hello: 1, world: 1 }, output: { greeting: 1 } },
{ input: { buy: 1, now: 1 }, output: { sales: 1 } }
];
Каждое поле input представляет вектор слов, а
output — целевую категорию в формате one-hot.
Brain.js предоставляет класс NeuralNetwork для построения полносвязных нейронных сетей. Для текстовой классификации создается сеть с входным слоем, скрытым слоем и выходным слоем, количество нейронов которого соответствует числу категорий.
const brain = require('brain.js');
const net = new brain.NeuralNetwork({
hiddenLayers: [10, 10], // два скрытых слоя по 10 нейронов
activation: 'relu' // функция активации ReLU
});
Обучение проводится методом обратного распространения ошибки. Brain.js автоматически выполняет нормализацию входных данных при обучении.
net.train(trainingData, {
iterations: 20000, // максимальное число итераций
learningRate: 0.01, // скорость обучения
log: true, // вывод прогресса
logPeriod: 1000 // каждые 1000 итераций
});
После обучения сеть может классифицировать новые тексты. Для этого
входной текст преобразуется в формат one-hot и передается функции
run.
const output = net.run({ hello: 1, world: 1 });
console.log(output); // { greeting: 0.98, sales: 0.01 }
Выход сети представляет вероятность принадлежности текста к каждой категории. Категория с максимальным значением считается результатом классификации.
При работе с большим корпусом важно создать единый словарь. Слова,
отсутствующие в словаре, игнорируются или кодируются отдельным маркером
<UNK>. Рекомендуется:
Для больших наборов данных можно использовать NeuralNetworkGPU, что позволяет обучать сеть с использованием графического процессора:
const net = new brain.NeuralNetworkGPU({
hiddenLayers: [20, 20],
activation: 'relu'
});
Это особенно полезно для онлайн-классификации текста, когда требуется высокая скорость предсказаний.
Преимущества:
Ограничения:
Такой подход позволяет построить эффективный инструмент для распознавания тем или категорий текста в JavaScript с помощью Brain.js.