Foros del Web » Programación para mayores de 30 ;) » Programación General »

Algoritmo de Etiquetas / Tags

Estas en el tema de Algoritmo de Etiquetas / Tags en el foro de Programación General en Foros del Web. Hola, Tengo una web con noticias y cada noticia tiene asociada varias tags (separadas por comas). la cosa es que queria poner un div a ...
  #1 (permalink)  
Antiguo 24/08/2008, 13:30
DMR
 
Fecha de Ingreso: noviembre-2003
Mensajes: 105
Antigüedad: 20 años, 6 meses
Puntos: 0
Pregunta Algoritmo de Etiquetas / Tags

Hola,

Tengo una web con noticias y cada noticia tiene asociada varias tags (separadas por comas).

la cosa es que queria poner un div a la derecha de mi web con los tags mas populares (con diferentes tamaños), pero no tengo claro en que criterio se basan para hacerlo.

Si un tag se repite es mas grande que otros, pero como detectan cuanto mas grande debe ser? o mas pequeño?

Salu2.
  #2 (permalink)  
Antiguo 24/08/2008, 13:34
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Algoritmo de Etiquetas / Tags

Tema trasladado a Ingeniería de Software y Gestión de Proyectos.
  #3 (permalink)  
Antiguo 24/08/2008, 16:31
 
Fecha de Ingreso: julio-2008
Mensajes: 21
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Algoritmo de Etiquetas / Tags

La primera pregunta sería:
¿En base a qué quieres crear esa nube?
  1. según las popularidad de los artículos y por ende, las etiquetas que más interés tienen.
  2. según la cantidad de tags relacionados a los artículos, que creo que te refieres a esta

para el segundo hay dos formas de hacerlo

1) necesitas una tabla de "tags" asociado a tu articulo (n:1), la relación la haces a la hora de crear el árticulo con los tags

2) la manera un poco sucia, un campo de tags en tu tabla de árticulos. Aquí te paso un código que use para uno:

Código PHP:
/* 
$data es el valor que te devuelve el campo(donde tengas tu tag) de todos los artículos. yo pongo un array de ejemplo
*/
$rows=array();
$rows[]='peras, manzanas, plátanos, uno';
$rows[]='peras, dos, tres,           cuatro, cinco, manzanas'
//los espacios valen para simular, y la función para limpiar
function _cleanSpace(&$string)
    {
        
$string ereg_replace("(\n|\t|\v|\r)"' '$string);
        if(
ereg(", +"$string)){
            
$string ereg_replace(", +"','$string);
        }
        if(
ereg(" +,"$string)){
            
$string ereg_replace(" +,"','$string);
        }
        
    }


$string '';
foreach(
$rows as $row){
            
$string .= ','.$row;
}
cleanSpace($string); //  limpia los espacios en blanco entre las comas
$string substr($string1);
        
$list split(','$string);
$out  = array();
$maxvalue 0;
for(
$i=0$n=count($list);$i<$n;$i++){
  if(
array_key_exists($list[$i], $out)){
        
$out[$list[$i]]++;                
    }else{
        
$out[$list[$i]] = 1;
    }
    if(
$out[$list[$i]]>$maxvalue){
        
$maxvalue $out[$list[$i]]; 
    }
}        
foreach(
$out as $k=>$v){
    
$out[$k] = round(($v/$maxvalue)*10);
}
var_dump($out); 
espero te valga, el foreach creo que dará error, mi ratelo a ver si te vale.
ojo, este código en una web con cientos de registros(artículos) es muy lento
  #4 (permalink)  
Antiguo 24/08/2008, 16:33
 
Fecha de Ingreso: julio-2008
Mensajes: 21
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Algoritmo de Etiquetas / Tags

se me olvidaba, lectura obligada:
http://www.sopadebits.com/content/view/sistema-tagging-nube-etiquetas
http://www.echochamberproject.com/node/247
  #5 (permalink)  
Antiguo 25/08/2008, 02:26
DMR
 
Fecha de Ingreso: noviembre-2003
Mensajes: 105
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: Algoritmo de Etiquetas / Tags

Si, la idea es en la base de datos en la tabla de las noticias hay un campo llamado tags (donde hay tags separados por comas).

La cosa es cojerlos y contarlos y luego segun cuanto mas se repitan que salgan por pantalla mas grandes o mas pequeños.

Lo que no se hacer es que criterio seguir para que un tag sea mas grande que otro y hasta que punto?

(para ello es: ? )

Código PHP:
for($i=0$n=count($list);$i<$n;$i++){
  if(
array_key_exists($list[$i], $out)){
        
$out[$list[$i]]++;                
    }else{
        
$out[$list[$i]] = 1;
    }
    if(
$out[$list[$i]]>$maxvalue){
        
$maxvalue $out[$list[$i]]; 
    }
}        
foreach(
$out as $k=>$v){
    
$out[$k] = round(($v/$maxvalue)*10);
}
var_dump($out); 
  #6 (permalink)  
Antiguo 25/08/2008, 15:16
 
Fecha de Ingreso: julio-2008
Mensajes: 21
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Algoritmo de Etiquetas / Tags

en el primer for sumo las repeticiones de las palabras.
en el foreach saco el valor en porcentaje tomando como 100% el valor máximo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:17.