Read full article in WebMediums

“artificial intelligence is on it’s way“ by Hitesh Choudhary on Unsplash

Sistema de categorización con inteligencia artificial en Node.js

Te voy a explicar como crear un sistema de categorización automatizada usando inteligencia artificial con Node.js de manera muy sencilla

Ya que esta muy de moda usar la Inteligencia artifical (IA) para todo vamos a ver como hacerlo sencillamente usando como lenguage de programación Node.js, parecera complicado y que solo unos pocos pueden hacerlo pero la realidad es que es bastante sencillo.

Este mismo sitio ya la esta usando, esta en fase beta sencillamente por que aún no se ha entrenado lo suficiente, pero eso lo veremos despues.

La idea es bastante basica, solo tenemos que darle contenido al sistema para que sepa a que categoria pertenece cada artículo que hagamos, la información si no tenemos datos propios podemos sacarla de otros sitios web para alimentar la MAQUINA y empieze a aprender que es cada cosa y donde hubicarla.

Para hacer el proceso necesitara crear una base de datos donde guardar la información peude ser la que mas se te antoje Mysql, mongodb, cassandra, la que quieras, la idea simplemente es almacenarla para procesarla luego, una vez tengas contenido suficiente en esta basse de datos y marcado a que categoria pertenece este contenido procedemos a realziar el script que va a aprender de estos datos.

Necesitamso incluir en nuestro proyecto el paquete natural que es el que nos va ayudar en todo este proceso. lo peudes incluir ejecutando el siguiente comando o agregandolo a tu package.json

npm install natural

Bayesiano ingenuo (Bayesian)

Este es el nombre del metodo que usaremos para clasificar en este ejemplo los artículos, el paquete natural admite tambien la metodologia de regresión logística.

var natural = require('natural'); 
var classifier = new natural.BayesClassifier();

Ahora vamos a proceder a entrenar el algoritmo y empiece a entender.

classifier.addDocument('¿Qué es EPOC? La Enfermedad Pulmonar Obstructiva Crónica o EPOC, es una patología que afecta gravemente el correcto funcionamiento del aparato respiratorio. Es una condición, donde una persona tiene limitaciones para pasar el aire hacia los pulmones.', 'Salud');

classifier.addDocument('3 ciudades para visitar en Brasil. Brasil es de los mejores países para visitar en América. Su clima tropical despierta la atención de los turistas a nivel mundial, así como, de países vecinos', 'Viajar');


classifier.train();

De esta manera le estamos diciendo al algoritmo que ese contenido es de la categoria Salud y Viajar respectivamente.

Ahora para clasificar los contenidos o artículos una vez entrenado lo hacemos de la siguiente manera.

console.log(classifier.classify('Este es un articulo de salud que habla sobre EPOC'));

La salida en la consola sera "Salud"

console.log(classifier.classify('Siempre que voy a Brasil la ciudades que mas me gusta visitar son ...'));

La salida en este caso sera "Viajar"

De esta sencilla manera tenemos un sistema que podemso automatizar para que decida por nosotros a que categorias corresponde cada artículo que escribamos.

Si queremos obtener una lista con mas clasificaciones para asignar a más de una categoria cada artículo, podemos obtener una lista que viene ordenada por las categorias con más probabilidades a las que se deberia de asignar el articulo con un valor numérico que indica la probabildiad en la coincidencia para el texto dado, cuanto mayor sea el numero mayor sera la probabildiad de qeu efectivamente el articulo tenga que ser categorizado y a menor número pues lo contrario evidentemente.

console.log(classifier.getClassifications('Siempre que voy a Brasil la ciudades que mas me gusta visitar son ...'));
[ 
  { label: 'Viajar', value: 0.49999999999999997 }, 
  { label: 'Salud', value: 0.09999999999999998 } 
]

Bien, una vez hayamos terminado de entrenar a nuestro pequeño ≪MONSTRUO≫ vamos a guardar todo lo que ha aprendido para que podamos reutilizarlo despues y no tengamos que hacer el mismo proceso una y otra vez, ya que evidentemente este proceso consume bastante y lo aprendido debe quedar guardado evidentemente.

classifier.save('classifier.json', function(err, classifier) {
  // El clasificador se guarda en el archivo classifier.json!
});

En nuestro código para conocer lo que ya ha aprendido tendremos que cargarlo con la siguiente sentencia.

natural.BayesClassifier.load('classifier.json', null, function(err, classifier) {
  console.log(classifier.classify('Texto a clasificar'));
  console.log(classifier.classify('Otro texto a clasificar'));
});

Ahora nuestro clasificador ya sabe todo lo que habia aprendido cada vez que nuestro sistema se levante o tenga que ser reiniciado.

Como ves es bastante sencillo clasificar nuestros artículos de manera automática con inteligencia artifical en Node.js.

Seguro habras visto muchas veces como Facebook te pregunta si algun video o alguna página concreta pertenece a algun sector o alguna categoria, esto sin duda es que Facebook esta alimentando su ≪MAQUINA≫ para que entienda cada vez mejor, Google hace algo parecido con su captcha, y WebMediums pronto tambien usara esta técnica de manera interna para ir probando, para luego hacerlo público y los usuarios puedan tambien clasificar algo o mejorar la IA si quieren hacerlo.

PD: Ejemplo de como funciona, si van a la categoria programación de WebMediums veran como este post esta categorizado en esta categoria :D.

Written by

Programador web

Artículos sobre programación gratuita y utilidades para principiantes y profesionales, análisis y soluciones para situaciones complicadas.