martes, 15 de marzo de 2011

Menéame es ineficiente: Analisis experimental

He realizado este análisis tomando las noticias enviadas por 50 usuarios de meneame. Para escoger a estos usuarios he partido de las noticias publicadas en portada, de tal manera que garantizásemos una calidad mínima de usuarios, y no entrasen en la muestra gente que enviase noticias al azar. Tampoco he usado todas las noticias de cada usuario, sino tansolo las que entraban en la primera página de estos.

El resultado es el siguiente. De 1589 noticias enviadas solo llegaron a portada 216, es decir 86 de cada 100 noticias enviadas no llegaron al gran público. Esto carecería de importancia si aún las noticias sin publicar recibiesen una atención proporcional a su éxito, pero este no es el caso. Veamos el siguiente gráfico:


La línea amarilla representa el número de noticias no publicadas en portada (eje y) respecto al número de meneos recibidos (eje x) la línea naranja representa la misma información respecto a las noticias publicadas en portada. Podemos observar una "depresión" entre la línea amarilla y la subida inicial de la línea naranja. Esto significa que no hay una relación de continuidad entre las noticias publicadas y no publicadas, sino que las no publicadas reciben mucha menos atención en relación a su potencial que las que alcanzan la portada.

En concreto, 798 noticias recibieron 10 meneos o menos, y otras 357 entre 10 y 20 meneos. Es decir, la gran mayoría de noticias enviadas a penas recibieron atención. Pero lo importante es que existe un punto crítico que separa las noticias publicadas de las no publicadas, y noticias a priori igualmente válidas para su publicación obtienen un resultado muy distinto debido al hecho de llegar a portada o no.

Conclusión: Las noticias que no llegan a portada se pueden considerar automáticamente fracasadas y por tanto los usuarios mostraban de media menos de un 14% de "éxitos", o lo que es lo mismo una eficiencia menor del 14%. Tengamos en cuenta que se han escogido usuarios con noticias en portada, y por tanto quienes envían con cierto grado de eficacia.

El problema radica en gran medida en que las noticias perfectamente válidas pero que no llegan a portada no dispongan de una alternativa que incremente su visibilidad, quedando aplastadas por el resto de noticias.

Obviamente si quien envía noticias pretende simplemente probar su habilidad para alcanzar la portada como en una especie de "juego", meneame puede cumplir sus expectativas, pero para quien pretende simplemente difundir una idea o noticia su funcionamiento resulta claramente mejorable.

Adjunto a continuación el código fuente del programa en PHP usado para recoger los datos:


<form method='get'>
<input type="text" name="dir"/>
<input type="submit" />
</form>

<?php

session_start();

echo count($_SESSION['urls']).' publicadas: '.count($_SESSION['publicadas']).'/'.(count($_SESSION['no_publicadas'])+count($_SESSION['publicadas'])).
'='.(count($_SESSION['publicadas'])*100/(count($_SESSION['no_publicadas'])+count($_SESSION['publicadas'])));
$rangos=array();
foreach($_SESSION['no_publicadas'] as $noticia)
if(!isset($rangos[ceil($noticia/50)*50])) $rangos[ceil($noticia/50)*50]=1;
else $rangos[ceil($noticia/50)*50]++;

ksort($rangos);

echo '<table><tr><th>Rango</th><th>Apariciones</th></tr>';
foreach($rangos as $rango=>$apariciones)
echo '<tr><td>'.$rango.'</td><td>'.$apariciones.'</td></tr>';
echo '</table>';

$rangos=array();
foreach($_SESSION['publicadas'] as $noticia)
if(!isset($rangos[ceil($noticia/50)*50])) $rangos[ceil($noticia/50)*50]=1;
else $rangos[ceil($noticia/50)*50]++;

ksort($rangos);

echo '<table><tr><th>Rango</th><th>Apariciones</th></tr>';
foreach($rangos as $rango=>$apariciones)
echo '<tr><td>'.$rango.'</td><td>'.$apariciones.'</td></tr>';
echo '</table>';

if(!isset($_GET['dir'])) return;
$dir=$_GET['dir'];

if(!isset($_SESSION['urls']))
$_SESSION['urls']=array();
if(!isset($_SESSION['publicadas']))
$_SESSION['publicadas']=array();
if(!isset($_SESSION['no_publicadas']))
$_SESSION['no_publicadas']=array();

//print_r($_SESSION);

if(isset($_SESSION['urls'][$dir])) return;
$_SESSION['urls'][$dir]=1;

// Crear un nuevo recurso cURL
$ch = curl_init();

// Establecer URL y otras opciones apropiadas
curl_setopt($ch, CURLOPT_URL, $dir);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

@$info=new SimpleXMLElement(curl_exec($ch));
curl_close($ch);

foreach ($info->body[0]->div[0]->div[2]->div[0]->div as $new){
$noticia_datos=array();
if($new->div[0]->div[0]->div[0]->attributes()->class=='mnm-published') $_SESSION['publicadas'][]=intval($new->div[0]->div[0]->div[0]->a[0]);
else $_SESSION['no_publicadas'][]=intval($new->div[0]->div[0]->div[0]->a[0]);
}
?>


Por último dejo aquí algunas de las tablas usadas para la elaboración de la gráfica:

Meneos No publicadas Publicadas
50 1324
100 38 1
150 8
200 1 6
250 1 22
300 1 23
350
22
400
20
450
20
500
17
550
14
600
6
650
10
700
2
750
5
800
5
850
5
900
8
950
5
1000
3
1050
3
1100
3
1200
1
1250
3
1400
2
1450
1
1500
2
1600
1
1800
2
1950
1
2100
1
2350
1
2500
1