Calcule la puntuación de GitHub hottness

Estoy tratando de implementar un puntaje de bondad para la aplicación que estoy creando actualmente. La aplicación tiene algunos repos de github con todos los datos obtenidos de GH API en la database. Actualizo periódicamente estos datos (como el recuento de requestes de extracción, recuento de estrellas, etc.) para mantenerlo actualizado.

Me preguntaba cómo implementar mi propia puntuación de hottness, pero el problema es que mis habilidades matemáticas probablemente no sean tan altas como para poder deviselas por mi count. Entonces me veo obligado a usar o adaptar soluciones ajenas. No hay muchos de ellos para los repos de github (hay más bien fórmulas para, por ejemplo, puntuación de networkingdit o hackernews), en realidad he encontrado uno aquí: https://github.com/sendgridlabs/sendgridlabs.github.com/blob/ master / index.html y reescribirlo a ruby. Aquí está mi código:

def calculate_hottness week_half_life = 1.146 * (10 ** -9) push_delta = DateTime.now.to_i - repo_pushed_at.to_i created_delta = DateTime.now.to_i - repo_created_at.to_i push_weight = 1 watchers_weight = 1.314 * (10 ** 7) hottness = push_weight * (Math::E ** (-1 * week_half_life * push_delta)) hottness += watchers_weight * repo_watchers_count / created_delta return hottness end 

En realidad, estoy bastante satisfecho con la forma en que funciona, pero hay un problema: con los "repositorys urgentes" no me refiero a los que son populares en general, sino más bien populares en los últimos días / semanas / meses. Por ejemplo, al usar ese método, el repository de Ruby on Rails siempre será el más popular, ya que es uno de los repos publicados más populares en ruby, no porque tenga tendencia recientemente .

Entonces, la pregunta es: ¿cómo puedo mejorar ese método para ayudarme a encontrar repos recientes con tendencia en lugar de los populares porque "son viejos y conocidos"? Tal vez se trata de cambiar algo en el método dado, pero, para ser honesto, no estoy muy seguro de cómo funciona y por qué alguien lo ha implementado así. Gracias por adelantado.

Necesita más datos para calcular el tipo de tendencia que está describiendo. Por ejemplo, cuántas estrellas obtuvo el repository este día / semana / mes, con esto puede clasificar los repos en function de quién obtuvo la mayor cantidad de estrellas recientemente. Lo mismo ocurre con los observadores y puede colocar más de un peso en la puntuación de los observadores, ya que es una pista más directa de lo popular que es. No he profundizado mucho en la API de GH, pero el concepto sería algo así como get un historial del recuento de estrellas / observadores y si la API no proporciona eso, tendrás que mantener esa historia por ti mismo. Actualizando periódicamente los recuentos y luego una vez por semana, puede calcular los incrementos de recuento desde la semana pasada y poder encontrar los repos que booston su número de estrellas / observadores más en el range de time.

    Intereting Posts