Используйте нейронную сеть brain.js для анализа текста

Я пытаюсь провести некоторый анализ текста, чтобы определить, является ли данная строка... разговором о политике. Я думаю, что мог бы создать нейронную сеть, в которой входными данными являются либо строка, либо список слов (порядок может иметь значение?), А выходной - ли строка о политике.

Однако библиотека brain.js принимает только цифры от 0 до 1 или массив чисел от 0 до 1. Как я могу привести свои данные таким образом, чтобы я мог выполнить задачу?

3 ответа

new brain.recurrent.LSTM(); 

это делает трюк для вас.

Пример,

var brain = require('brain.js')
var net = new brain.recurrent.LSTM();
net.train([
  {input: "my unit-tests failed.", output: "software"},
  {input: "tried the program, but it was buggy.", output: "software"},
  {input: "i need a new power supply.", output: "hardware"},
  {input: "the drive has a 2TB capacity.", output: "hardware"},
  {input: "unit-tests", output: "software"},
  {input: "program", output: "software"},
  {input: "power supply", output: "hardware"},
  {input: "drive", output: "hardware"},
]);

console.log("output = "+net.run("drive"));


output = hardware

обратитесь по этой ссылке => https://github.com/BrainJS/brain.js/issues/65 здесь есть ясное объяснение и использование brain.recurrent.LSTM()

Вам нужно придумать модель для преобразования ваших данных в список кортежей [input, expected_output], где input список чисел от 0 до 1, представляющий данные слова, и output это число от 0 до 1, представляющее, насколько близко предложение к вашему объективному анализу (будучи политическим). Например, для предложения "Быстрая коричневая кошка перепрыгнула через ленивую собаку" вы могли бы дать оценку ноль. Фраза типа "Президент избавляется от коррупционного скандала", вы можете захотеть дать оценку, очень близкую к единице.

Как видите, ваша самая большая проблема на самом деле - получение данных и их очистка. Преобразовать его в формат обучения легко, вы можете просто хешировать слова в числа от 0 до 1, и обрабатывать различные регистры, знаки препинания и, возможно, захотите пошаговые слова, чтобы получить наилучшие результаты.

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

Таким образом, по-видимому, текст не очень хорошо приводится к NN-вводу.

Наивный байесовский классификатор выглядит именно так, как я хочу. https://github.com/harthur/classifier

Другие вопросы по тегам