2 Stimmen

Algorithmus zur Bestimmung der "Heißheit" eines Threads

Ich versuche eine Möglichkeit zu finden, um festzustellen, wie "heiß" bestimmte Threads in einem Forum sind. Welche Kriterien würden Sie verwenden und warum? Wie würden diese zusammenkommen, um eine Hotness-Wertung zu geben?

Die Kriterien, an die ich denke, umfassen:

  • wie viele Antworten
  • wie lange her ist die letzte Antwort
  • durchschnittliche Zeit zwischen den Antworten

Die Probleme, die dieser Algorithmus lösen muss:

  • Ein Thread mit 500 Antworten ist offensichtlich heiß, es sei denn, die letzte Antwort liegt über ein Jahr zurück.
  • Ein Thread mit 500 Antworten, der vor einer Sekunde beantwortet wurde, ist offensichtlich heiß, es sei denn, es hat 4 Jahre gedauert, um 500 Antworten zu erreichen.
  • Ein Thread mit 15 Antworten in den letzten 4 Minuten ist wirklich heiß!

Gibt es irgendwelche Ideen, Gedanken oder vollständige Lösungen da draußen?

2voto

EndangeredMassa Punkte 16782

Jeff Atwood hat eine interessante Frage dazu mit einer Menge Informationen zu anderen "heißen" Algorithmen. Ich schlage vor, einen davon zu verwenden und ihn nach Ihren Wünschen anzupassen.

1voto

Brian Punkte 24901

Einfachster Algorithmus: Wenn es seit Y mehr als X Antworten gegeben hat, ist es heiß.

Wenn Sie etwas bevorzugen, das skaliert, zählen Sie einfach, wie viele Antworten seit Zeitpunkt Y erfolgt sind. Mehr Antworten bedeuten mehr Hitze.

0voto

csl Punkte 10539

Ich dachte, du könntest es wahrscheinlich mit abnehmenden Wellen hier modellieren, wobei die Amplitude (oder der Quadratwurzelmittelwert) die Hitze misst. Im Laufe der Zeit nimmt die Welle ab, sodass eine späte Antwort nur für wenig Aufregung sorgt.

In der Praxis denke ich, dass dies eine Menge Berechnungen erfordert. Du könntest den Einsatz von Caching nutzen, um die Berechnung zu beschleunigen.

Nur meine zwei Cent.

0voto

Robert Gould Punkte 66858

Kurz gesagt habe ich festgestellt, dass der logarithmische Abbau der "Attraktivität" am natürlichsten ist.

0voto

nickf Punkte 517253

Danke an diejenigen, die die Links zu den anderen Fragen/Antworten gepostet haben. Leider berücksichtigen diese Gleichungen viel mehr Dinge als das, was mit meinem Setup möglich ist (z.B. Abstimmung, Reputation des Autors usw.)

Nachdem ich damit herumgespielt habe, bin ich auf diese Gleichung gekommen, die ich vorerst verwenden werde:

log10($numOfReplies * 20000 / pow($timeSinceLastPost, 1.3))

Es könnte immer noch etwas verbessert werden. Zum Beispiel, wenn es einen wirklich sehr beliebten, aber alten Thread gibt, wird dieser geringe Aktualität haben, aber wenn eine Person darauf antwortet, wird er für ein paar Tage/Wochen wieder ganz oben stehen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X