Aprendizaje automático en agregadores

Wesner Moise no es ni mucho menos la primera persona a la que se le ocurre aplicar un filtro bayesiano a los feeds en nuestro agregador para intentar clasificar estos según la probabilidad de que nos interesare o no (podeis leer la entrada relacionada en su bitácora, .NET Undocumented)

La idea como decimos consiste en aplicar un filtro bayesiano, del que tan buen uso están haciendo los lectores de correo, a los feeds en nuestro agregador. La principal utilidad de los agregadores de feeds y por lo que tan buena acogida tuvieron es que nos ahorraba un tiempo precioso, pero cuando el número de feeds en nuestro agregador comienza a crecer, el tiempo necesario para encontrar la información que nos interesa crece de forma exponencial.

El agregador debe tener la capacidad de aprender de la interación con el usuario, y recopilar información sobre que temas le interesan mas, de forma que se pueda adaptar al usuario. Ese es el verdadero futuro de las aplicaciones, el aprendizaje.

Y la forma mas efectiva de utilizar el aprendizaje automático sería haciéndolo de forma transparente al usuario. En lugar de obligar al usuario a dar puntuaciones a las entradas que lee, usando un sistema del tipo StumbleUpon, el aprendizaje podría basarse simplemente en datos como si se borró la entrada directamente, el tiempo que estuvimos leyendo la entrada (según su longitud, logicamente), si se guardo para leerlo mas tarde o si se pulso sobre un enlace para ir a la web correspondiente.

Además su uso no se limitaría simplemente a clasificar según la probabilidad de que nos interese la entrada. La mayoría de los agregadores nos dan la posibilidad de poder hacer consultas sobre nuestros feeds para buscar aquellas entradas en las que aparezca determinada palabra, pero ¿no podríamos utilizar también el aprendizaje automático para categorizar las entradas de los feeds según temas?

El primer paso no tendría porque ser el aprendizaje automático, se podría empezar por categorizar las entradas basándose en palabras clave definidas por el usuario, algo parecido a los filtros de Gmail. Y por supuesto como se hace en Gmail, en lugar de mover la entrada a una carpeta simplemente se etiquetaría la entrada, de forma que una misma entrada pueda pertenecer a varios temas.

Aunque logicamente también existen inconvenientes. La aproximación mas rudimentaria no tendría en cuenta algo tan importante como el contexto. Como ejemplo podemos tomar dos bitácoras conocidas como mini-d, orientada a usabilidad y diseño y Error500, mas orientado a las noticias para el público en general. Supongamos que tenemos un filtro que etiqueta las entradas como pertenecientes a la categoría XML si encuentra la palabra XML en el artículo. Si estas dos bitácoras escribieran una entrada sobre XML las dos irían a parar a la categoría XML, lo cual es perfectamente lógico. Pero si eres un usuario avanzado seguramente prefieras artículos técnicos sobre XML y no un artículo que explique a un usuario de a pie en que consiste esta tecnología.

Un filtro bayesiano serviría para descartar entradas en las que se mencione una o dos veces la palabra XML simplemente de pasada; sería algo parecido a establecer valor umbral para clasificar la entrada como perteneciente a la categoría XML si se menciona la palabra un número de veces mayor que el umbral. Pero como ya hemos dicho puede que el número de veces que aparece la palabra XML en el artículo de introducción sea mayor que el que aparece en el documento técnico. El agregador debería entonces tener en cuenta el contexto y aprender que cierto feed es mas propenso a escribir artículos sobre desarrollo web, que en otro feed se suelen encontrar entradas relacionadas con la política y que en ese otro suelen ser reflexiones del autor.

Comentarios
  1. No pides na tio!
    Si te das cuenta en la ultima frase de tu post pones varias de las palabras que explican por que no es posible un aprendizaje como el que propones, al menos de momento.
    CONTEXTO: para conocer un contexto no basta con ver las palabras de alrededor, hay que ENTENDER lo que significan.
    PROPENSO: la propensión es una capacidad humana bastante difusa y complicada de medir.
    ¿Como haces que un programa CLASIFIQUE el contenido de un post si el autor no lo ha hecho antes? Para eso el programa tendría que entenderlo y aún así no sería fácil.
    Otra opción sería la creación de una lista de categorías universal que todos usasemos en nuestros posts, pero ahora la tarea imposible sería para nosotros: ¿como clasificamos nuestros posts si la mayor parte de las veces pertenencen a varias categorias que no somos capaces de discernir? Tendriamos que conocer la lista completa de clasificación de posts para poder usar bien esa herramienta.:o
    No se, creo que de momento prefiero guiarme por Autores que suelen hablar de cosas que me interesan y por busquedas concretas. De todos modos hay demasiada información y si ocupo todo mi tiempo leyendo lo que un programa le parece que me interesa pierdo la oportunidad de encontrar cosas nuevas.

    Responder

  2. no tienen que entender lo que significa. coge una red de neuronas por ejemplo… tu no tienes que saber de que trata el problema, simplemente le das una serie de patrones y ajustas los pesos y el umbral para que se adapte a la respuesta deseada (en aprendizaje supervisado, el no supervisado no m acuerdo como funcionaba :uch:)… pero tu le das unos datos numericos y no le tienes que explicar que son esos datos 😛 son ecuaciones simplemente… no es algo tipo yo robot o minority report que el bicho vaya a tener una charla inteligente contigo

    asi que lo que va a hacer no es leer el texto y decir, oye, ¡pues esto tiene que ver con desarrollo web! sino por ejemplo aprender que palabras clave tienen que ver con el desarrollo web y sacar una probabilidad sobre eso de que tal bitacora tenga que ver con el desarrollo web

    vale, esta aproximacion por ejemplo puede tener la desventaja de que a un guru del desarrollo web le de por explicar los conceptos mas basicos que a ti no te interesan, por ejemplo… pero ni los filtros bayesianos ni ningun otro metodo son perfectos, el filtro bayesiano solo te da una probabilidad… y siempre hay mas formas de abordar el problema, esto es lo primero que se me ha ocurrido

    para aprender palabras clave relacionadas con tal tema ya no puedes usar un filtro bayesiano.. pero puedes usar otras cosas

    Responder

  3. de todas formas aunque no se tuviera en cuenta el contexto siempre estaria mejor que lo que tenemos ahora 🙁

    Responder

Deja un comentario