Hacker Newsnew | comments | show | ask | jobs | submit login
Ask HN: How do you determine "hot" or "popular" user-generated items?
5 points by pamelafox 1538 days ago | 5 comments
I put together a little app this weekend which lets people translate phrases through different languages and see the often funny or interesting results: http://translation-telephone.com

On the sidebar, I display "recent" and "popular" phrases, to encourage people to browse others. Right now, "popular" is a random three of the top 30 viewed phrases - really basic. I'd like to make it smarter and I imagine there are a variety of techniques that I can use, like the HN metric for frontpage news.

What techniques do you guys suggest? Thanks!

(Note: Architecture is App Engine/Python, if that's relevant)




The most straightforward way is to start with some default value for "hotness" and then decay the hotness by time (a logarithmic basis is popular for this), and increase hotness based on activity (votes, comments, etc.)

For a real-world example (albeit one from code that's not much beyond "prototype" status) feel free to look at what we do in Neddick:

https://github.com/fogbeam/Neddick/blob/master/grails-app/se...

look at the calculateScore() and calculateHotness() methods in particular.

What we do there is basically just use 0 as the default, count each upvote as +1 to score and each downvote as -1 to score, then use the score as the hotness, before decaying by age. It's simple and not optimized at all, but it gives the general effect we're looking for.

-----


The clearest explanation I've ever seen of this method is here:

http://www.evanmiller.org/rank-hotness-with-newtons-law-of-c...

-----


Heh, yeah, I think that's the same page I originally used to come up with an approach to doing this. There are also some discussions of this same topic on StackExchange and some other sites.

-----


Might be able to use something like this as a starting point (though it's vote-based, but seems to support decay over time) http://code.google.com/appengine/articles/overheard.html

-----


hotness needs a time based component like velocity coupled with relevance

e.g. responded to ('liked' or viewed) x times within y minutes + relevance (it's very funny &| it's topical &| it's trending elsewhere)

-----




Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact

Search: