Archivo de la etiqueta: bonus temporal

Explicación simple del algoritmo de promoción de noticias (promote)

Actualización noviembre 4, 2012: Se modifica el punto 4, con la explicación del nuevo algoritmo de afinidad.

Actualización mayo 7, 2009: En la pestaña log de cada noticia se puede observar en qué momento se hicieron los reajustes de karma y las notas informativas del algoritmo.

Siempre que una noticia controvertida con varios votos negativos  (y/o que algunos piensen que no “queremos que salga” aunque le hayamos votado positivo o dado publicidad en nuestros blogs) no sale publicada surgen sospechas o conspiranoias de que “hay manipulación”, aunque el algoritmo de promoción es público, como así también los cálculos que realiza. Sigue leyendo

Bonus temporal de las noticias

Casi desde el primer día del menéame, el programa que selecciona la noticia a publicar aplica un bonus a las noticias más recientes. El único objetivo de dichos bonus es publicar rápidamente las noticias que captan el interés de los que votan, en son aquellas que impactan más o que se refieren a un suceso importante.

Obviamente, una noticia que sale publicada en poco tiempo gracias a ese bonus tiene menos votos que las “normales”. Así, cada vez que se publica una noticia gracias a su bonus surgen comentarios conspiranoicos de que hay manipulación o que existe una “mafia” que hace que ocurra esto. Nada más lejos de la realidad, es así como funciona el algoritmo y se puede verificar en los resultados del cálculo: la columna BONUS indica el coeficiente que se le aplica, normalmente vale uno, pero en caso de noticias recientes se observará que el coeficiente es mayor que uno.

Cómo funciona

La parte fundamental del código es el siguiente

// BONUS
// Give more karma to news voted very fast during the first two hours (ish)
if ($link->content_type != 'image'
		&& $link->negatives < ($link->votes/10)
		&& $now - $link->date < 7200
		&& $now - $link->date > 600) {
	$link->new_coef = 2 - ($now-$link->date)/7200;
	// if it's has bonus and therefore time-related, use the base min_karma
	if ($decay > 1)
		$karma_threshold = $past_karma;
	else
		$karma_threshold = $min_karma;
} else {
	// Otherwise use normal decayed min_karma
	$karma_threshold = $min_karma;
	$link->new_coef = 1;
}

Lo que hace es muy sencillo. Si una noticia fue enviada hace menos de 2 horas y más de 10 minutos –para evitar que salga demasiado rápido sin que otros tengan oportunidad de votar– su karma se verá multiplicado por un coeficente mayor que  1 y menor 2. Este es el valor que se puede ver en la columna BONUS explicada anteriormente.

El valor del coeficiente depende del tiempo que ha pasado –decae proporcionalmente–, es lo que se hace la primera línea resaltada.  Valdrá casi 2 a los pocos minutos de haber sido enviada y decaerá proporcionalmente a 1 al llegar a las 2 horas

Además hay otra restricción. El bonus no se aplica si la noticia tiene más de un 10% de votos negativos.

No hay magia, no hay manipulación. Es un algoritmo que está implementado desde el principio y que funcionó en general muy bien para publicar rápidamente aquellas noticias que los votantes consideran muy relevantes.