Short Description:
Create a Drupal module that recommends 'Other Content You'd Like' to site visitors using data gathered by VotingAPI.

Motivation
Drupal 'nodes' can be used to store anything from personal bios to product information to news stories. Modules based on the VotingAPI can rate these pieces of content based on flexible criteria. By mining the voting data generated by a site's user base, a module could generate crowd-driven recommendations for product purchases, introduce users who would likely hit it off, or build customized news channels automatically.

Success criteria
The project will be deemed successful if a user can browse a list of 'recommended nodes' that is sensitive to both the user's own voting history, and the votes of the site's entire userbase.

The list should not include content that the user has already rated, and recommendations should take the possibility of multiple-criteria voting into account. (i.e., a movie rated highly for 'Cinematography' but badly for 'Acting' would not be shown to someone whose voting history reveals a preference for high-quality Acting.)

Roadmap

  1. Install Drupal and get acquainted with the structure of Drupal's modules and hooks.
  2. Study the the VotingAPI module, and the SimpleVote module. These two modules provide a simple mechanism for gathering content ratings.
  3. Get acquainted with the internal data storage model of the VotingAPI, and how its votes could be analyzed for preference patterns.
  4. Develop an algorithm that creates lists of 'relevant' or 'interesting' content by analyzing the current user's voting history, and the content that other users with similar histories have rated highly.
  5. Create a Drupal module that displays these lists to the current user.
  6. If time permits, allow users to fill out a survey to express their preferences, so that recommendations can be made before they have cast any votes on specific content.
  7. If time permits, create an algorithm that accepts one piece of content, and produces a list of content that is rated similarly. ('People who liked this article also liked...')

Comments on this proposal

amazing simple algorithm
shaal - June 13, 2006 - 16:54

i found a very interesting recommendation algorithm in one of drupal's nodes -
http://drupal.org/node/63758

i hope it helps
~:)
======================================================
======================================================

Ya it is...
Scott Reynolds - June 16, 2006 - 19:18

..and i think thats what got me accepted.

Please, if interested in this project join our drupal group
======================================================
======================================================

great!
miseryshining - June 14, 2006 - 03:42

I am very eager to see this being realized, as it will give a new dimension to personalization with Drupal. I was wondering if a block could be added that will display a graphical indicator that predicts whether the current page holds interesting information for the user.

Maybe a bit off topic, but Scott Reynolds mentioned that it would be very hard to inplement a filtering approach based on a learning system that analyses the users behaviour. I think it could be done by a combination of
-keeping a history of popular taxonomy terms per user (could be done by extending the drupal page logging). Terms that haven't been visited recently should be ignored.
-keeping a list of most common profile fields per node based on the profiles of users that visited the node (should be configurable for different node types).

If a node's taxonomy terms match the ones that the user visited frequently (and recently) AND profile fields match with the user's profile, the node would be recommended to the user (and when visiting the node, a relevance 'bar' could be shown). It would now also be possible to display a list of users that come closest to the user's profile for each node.

I wish Scott good luck with development and am certain that he will do a great job!
======================================================
======================================================

Taxonomy...
Scott Reynolds - June 16, 2006 - 19:26

SCARES me. People use it for such a vast majority of things. From just menus to free tags like de.lio.us (or however its spelled). And if someeone doesn't use the taxonomy correctly, it could eliminate a perfectly good node.

But i like this idea, and we have been debating it. It is a bit off from the orginal idea because it wouldn't be based on votes. (or it could be but not a requirement).

Also, reading about different ways to 'predict' a users path. Say, staring at home node, guess they will go here. And then here etc. Kindof a 'fast forward' button.
======================================================
======================================================