Network: Needish · clandescuento · Willka Travel & Adventures
// you’re reading...

Reedición: Como clasificar contenidos de forma automática (I)

Revisando articulos antiguos publicados me encontré con uno, de tiene más de un año de publicado, y que puede resultar de interés. Dado que tengo poco tiempo de escribir algo acá lo dejo, por si alguien no lo leyó.

Articulo original

Hace unos ideas me uní a una idea surgida en 43 Ideas, algo similar a 43 Thing pero donde se plantean ideas. El tema era como clasificar dos metas como similares.

De inmediato, y sin pretender originalidad, se me vino a la mente utilizar las tags aplicadas como forma de clasificación. Desde ese momento estoy pensando en una forma de concretar esto y se me han ocurrido algunas ideas, fundamentalmente nacidas de leer cosas en otros sitios, asi como algunos problemas y sus posible soluciones, voy a tratar de explicar aquí mi idea. Hay algunas partes que son más bien matemáticas, pero no son fundamentales para seguir el desarrollo, trataré de no complicar demasiado las cosas.

Problema original

Supongamos, para generalizar, que tenemos un conjunto de elementos en el que cada uno está marcado con ciertos tags (que supongamos correctamente aplicados). Nuestro objetivo es que los nuevos elementos que se introduzcan al conjuntos, a los que se los clasifica mediante sus tags, se relacionen con los existentes, permitiendo establecer un nivel de relacionamiento con cada uno de los elementos existentes, o algun subconjunto de esos (por ejemplo, los n con mayor similitud)

Midiendo la similitud

Lo primero que debemos hacer es establecer una forma de medir la similitud entre dos elementos. En nuestro caso sería a través de los tags aplicados

La forma más facil sería comparar el elemento A y el B (donde B sería cada uno de los elementos del conjunto sin incluir a A) contando la cantidad de tags que ambos tengan en conjunto y dividiendolo entre el máximo número de tags de A o de B podemos tener una idea de la similitud entre ambos. de este modo si ambos elementos comparten todos sus tags serían 100% similares mientras que si no comparten ninguna serían 0% similares

Como primera aproximación está bien, pero en este caso todas las tags tendrían el mismo peso relativo. Sería mejor si le asignáramos a cada tag un “peso relativo” basado en el número de elementos que tengan esa tag. Con esto logramos que si un tag aparece en muchos elementos su peso relativo sea pequeño. Podríamos decir que es muy común marcar los elementos con esa tag y por lo tanto se utiliza para clasificar un conjunto grande de elementos, por lo tanto aunque dos elementos la incluyan tal vez no tengan demasiada relación entre sí. Por el contrario, si una tag aparece en pocos elementos, podemos decir que el uso de dicha tag genera un conjunto relativamente pequeño de elementos y si tengo dos elementos que la incluyen la probabilidad de que tengan relación es mayor.

Por lo tanto podríamos poner que el peso(llamemosle wi de cada tag sería algo así como: wi = k * (1/(ni)).

Donde: nt es el número total de elementos y ni es el número de elementos marcados con la tagi (sin considerar al elemento A).

De este modo si hay solo 1 elemento diferente de A con dicha tag, wi=k, y si tengo más elementos, wi disminuye, tendiendo a cero si ni se vuelve muy grande. Más adelante veremos como hacer para calcular la constante k

Ahora tendríamos que calcular el porcentaje de similitud entre dos elementos, para esto simplemente “contamos”, como hicimos antes el número de tags similares, pero asignandole a cada coincidencia el peso recien calculado. Por lo tanto la función similitud SA, B sería algo así como:

SA, B = (suma_para_cada_tag_que_coincide(wi))/nt

Donde nt es el máximo número de tags de A o de B

Lo único que resta es ajustar esta suma para que en caso que todas las tags de A coincidan con las de B el resultado sea 1. Para esto utilizamos la constante k, a la que le asignamos un valor conveniente que podemos calcular en cada caso. Como todas las tags de A estan en B, entonces simplemente podríamos sumar el “peso” de todas las tags de A e igualarlo al número de tags de A, con eso tenemos una ecuación de la cuál obtenemos k.

Y con esto ya sabemos que tan similares son A y B.

En este punto podemos ver una cosa bastante interesantes, de cara a optimizar el funcionamiento del algoritmo de clasificación: Los “pesos” wi de cada tag de A no dependen del elemento B, por lo tanto no es necesario calcularlos en cada comparación. Sería lógico que este cálculo se realice al comienzo, antes de compararlo con los restantes elementos (recordar que B representa cualquier otro elemento)

Bueno, hasta acá por ahora, voy a armar una página para empezar a probar estas cosas a partir de los posts que tengo en mi blog, en cuanto tenga algo pongo aqúi el link

Comments

No comments for “Reedición: Como clasificar contenidos de forma automática (I)”

Post a comment

Mi nombre es Pablo Viojo y tengo 27 años. Nací en Uruguay el 7 de agosto de 1981. Actualmente vivo en Santiago, Chile
Aparte de esto me interesa todo lo que tenga que ver con Internet y las nuevas tecnologías. Más info aquí, en mi hCard o en formato FOAF

View Pablo Viojo's profile on LinkedIn

Featured Posts

Romper paradigmas
February 23, 2009

A veces es necesario romper paradigmas…
¿Por qué la vista, o un elemento de la vista, no puede comunicarse con el modelo?
Paradigma: Un paradigma es —desde fines de la década de 1960— un modelo o patrón en cualquier disciplina científica u otro contexto epistemológico. El concepto fue originalmente específico de la gramática; en 1900 el diccionario [...]

Reedición: Microformatos, los bloques de la web semántica
November 18, 2008

¿Que son los microformatos?
Se trata de formatos de marcado XHTML, aplicables en contextos particulares, que utilizan los atributos definidos por los estándares para mejorar la semántica de los documentos. Son una herramienta muy util para aquellas estructuras que se repiten frecuentemente en documentos, ya sea que se trate de documentos creados por una persona, por [...]

La importancia del Undo en las Web Applications
November 11, 2008

Tomado de Needish the Blog, con permiso del autor
Robert O’Callahan, en su artículo The Essence Of Web Applications, resume algunos aspectos de las aplicaciones web y su relación con las aplicaciones de escritorio.
En lo personal no estoy muy de acuerdo con lo que opina, sobre todo cuando menciona aspectos relacionados con los elementos [...]

La importancia de las interfaces en los nuevos modelos de interacción web
May 14, 2006

Últimamente este blog ha tenido bastante poco movimiento, fundamentalmente debido a falta de tiempo por parte de quien escribe por estos lados.
Si bien tengo unos cuantos temas que me gustaría tocar, fundamentalmente porque en los últimos meses me ha tocado entrar en un área bastante nueva de la programación para la web (sí, esa, la [...]

Suscribe

Enter your email address: