Content Recommedation Engine

Events happening in the community are now at Drupal community events on www.drupal.org.
GreenJelly's picture

Social Networking Unified Access Library. A new and better approach?

I submitted this within the forums, but I don't think it will get the attention it desires... I think this is an important step in development in Drupals Social Networking... Take a look and see if it is something that will draw the attention and the enthusiasm that it deserves. If it is deemed usable, then I will start working on an API.

Read more
Scott Reynolds's picture

New version is up

I have updated Node Recommmendation to fix some bugs in the page callback and to use teasers instead of a item list to list recommended nodes on the page. My hope of course is that node recommendation page becomes the front page of many drupal sites.

Summer of Code is offically over but I do intend to keep this list semi-updated with work on the recommendation engine. There are several different things I will be expanding the project to do. I plan on setting it up for VotingAPI's point system. And then writing a module that will work with e-commerce to add a VotingAPI 'point' to each purchase. This of course would allow the engine to draw relationships between content based on who bought what. (Which I think is particalarly cool and interesting).

Read more
Scott Reynolds's picture

New Release Brings cre_query_obj and comment_recommendation.module

Just released new version. Included in the this release is the new-fangled cre query object and comment_recommendation.module which recommends comments within the current node being viewed.

The object allows for joining on any table. Please remember to use {} and a name to identify your table.

For instance node_recommendation does this:

<?php
function node_recommendation_cre_query (&$query) {
  
$query->add_table("{node} n");
  
$query->add_column("n.title");
  
$query->add_where("n.nid=d.content_id1");
}
?>
Read more
Scott Reynolds's picture

NEW VERSION RELEASED

Ok major speed fixes. Redid the query compeletly and added a average user vote table. This allows for the movelens database to run MUCH MUCH MUCH MUCH FASTER. I will begin testing it later this week and give back some scores that should be interesting. Try running the update script for me. I did not test it out and I am worried that I didn't write it properly (my first update() :-D ).

Still working on creating a query object that will prevent the one issue that is in the queue right now. More to come soon...

http://drupal.org/project/cre

Scott

Read more
Scott Reynolds's picture

Movielens Database DRUPALIZED!`

OK,

Finally finished it. Their happens to be a permission problem still though. Users not uid=1 will not be able to view the node that is recommended or access the recommendations page. Pretty sure you can fix that in the admin panel but havent done that yet. If any can shed some light on it please do. Here is where you can find the stuff: http://scottreynolds.us/Downloads/movielenssql.tar.gz

100k movielens is not done, it is in a different file format thereby requiring a different program.
Info from readme file:

Read more
Scott Reynolds's picture

Committed to contrib

Ok did my first commit of the modules (with README and API documentation) into contrib/modules/cre. The links in the welcome message are updated of course.

NEW INSTALL METHOD

The install method now, runs through intitially as usual but only processes a limit number of votes. It then waits to process the rest of the votes once cron.php gets called again EDIT: cron only installs a certain number of votes each cron run. Thereby, lengthing the install process over several cron runs instead of one _install() call which crashes and never completes.

This is done this way so that large EXISTING votingapi datasets can be utilized. PHP only has a limited about of 'user' space, and because the amount of data involved in this module is N*N where N is the number of voted content, it gets rather large, and becomes a whole lot of DB queries. I am open for better solutions, mostly cause I don't particularlly like this one.

Read more
Scott Reynolds's picture

Creating a Filter for a derived value

Ok,

First off, sorry if this is the wrong place to post this question. But this is the one time so far that i have really struggled with Drupal and Im seeking help.

I am struggling with how to develop a views intergration with my Content Recommendation Engine [http://groups.drupal.org]. And the simple reason is that my table holds really no new information. It holds content_id's of two different content type and the sum and count of all votes made on this. (ACK! i know makes little sense....)

My scoring is done by taking this data and derving the score. Here is the db query for top function

Read more
Scott Reynolds's picture

New version up in my sandbox

New modules are up. Lots of changes to cre. Including new table name and new table format. It is setup now to be able to recommend any content(user, comments, developer defined, nodes).

And I would also like to pose a question for discussion....

When recommending some piece of content (whether a node, comment, user etc...) does the alogrithm only recommend based on content that is the same type? so when recommending a node, only use similarity matrix referencing content that is both the same type. Thats not making much sense typing it out but here is an example.

Johny is a user. The site is recommending both nodes and users. The block for 'Johny's recommended users' should be populated based only similarities between user and user votes or similarities between BOTH user to user and user to node. Should this be up to user level module (node_recommendation)?

Read more
Subscribe with RSS Syndicate content