karma, menéame, novedades, software

Penalización de “endogamia de votos”

Desde hace unas horas está funcionando el nuevo “promote” (código fuente) que calcula y penaliza las “altas endogamias” (o afinidades) de votos entre usuarios. Así se evitarán que un grupo de usuarios se voten siempre entre ellos y puedan publicar las noticias más fácilmente.

La técnica es algo similar a la “diversidad” que usan en Digg –al menos así lo cuentan– pero en nuestro caso se usa directamente el karma que aporta cada usuario a una noticia y se aplicará a aquellos usuarios que votan a [casi] todos los envíos de otros usuarios.

La penalización consiste de un coeficiente entre 0 y <1  que se calcula al karma aportado por cada usuario. El coeficiente de afinidad representa el porcentaje de votos a los envíos de un usuario. Así en el último mes A votó un 30% de los envíos de B que obtuvieron muchos votos (aunque no haya salido publicada), los siguientes votos de A a B valdrán 0.7. Si en cambio votó al 90%, el voto valdrá 0.1 de su valor original –con un mínimo de 5–. Si en cambió no llegó a votar al 10% (por ahora, mientras está de pruebas) el voto no sufrirá penalización alguna.

Además de la ventaja fundamental de evitar “endogamias”, también penaliza a aquellos usuarios que votan “a lo loco” basado sólo en el título o autor del envío.

Pueden surgir problemas, como que requiera varias horas hasta que los coeficientes de cálculo se estabilicen, o que haya que hacer ajustes al promote por penalizaciones injustas. Estaremos muy pendientes de esto en los días siguientes.

Actualización (9/10 21 hs): Después de probar en parelelo durante casi 24 horas –casi no hay casos para comprobar–, lo mismo funciona para los votos negativos. El cálculo es similar pero negativos, es decir que el mínimo valor negativo que puede dar es -5.

Aclaración: No afecta al karma de los usuarios, sólo afecta al cálculo del karma total de las noticias. Aunque haya “afinidad” del 100% el voto siempre cuenta como positivo y suma karma según lo explicado arriba.

Nota: Para los que vayan a mirar el código fuente, la función que calcula la afinidad está al final, se llama check_affinity(). Puede verse como se aplica en el coeficiente un par de líneas más abajo desde donde es llamada la función (que devuelve un diccionario con los coeficientes para cada usuario).

[*] Sí, los hay, especialmente esos que usan foros –y mésenyers— para avisar que han subido noticias de sus sitios/foros/temáticas. Últimamente hemos detectado varios, es la motivación, para evitar estos “abusos” sin que nos obliguen a banear sitios o cuentas de usuarios.