Content Discovery

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

Is there a module that achieves personalized recommendations of community content from a users tags against all other users content tags?

So if user A tags a community node with 'drinks', 'entertainment', and 'bar' the resulting recommendation block would push similar tagged content to user A.

I've been reviewing the following modules but still confused

http://drupal.org/project/recommendation

setup for a subscribed friend to friend recommendation???

http://drupal.org/project/cre

only recommends content that has been voted on via VotingAPI.

Im looking for a module that will push answers to questions that users don't know how to ask from the systems community tagged nodes. In other words, finding things you don't know about. Maybe there is a taxonomy linked recommendation engine I haven't seen yet?

Comments

I'm not sure what you're going for

dudenhofer's picture

It sounds like you want a user to CREATE content, and then based on what they create, suggest other content that is similar? Or do you want it more across the board where if any user is looking at a page, they will be fed similar content based on those tags?

I guess it's a little confusing when you say to push the content to user A... are you pushing it to that user's profile? Or any page that they look at? Or will it be published next to the content that the user just created?

User A submits a Restaurant type with tags "Bar", "Drinks", ect..... Then when they save it, the page they just created is displayed with a list in a block of restaurants with the same "Bar" and "Drinks" tags?

I know if you label the url's a certain way, you can call a view based on that, using pathauto.... like if this content was created under the URL domain.com/restaurants/bars/name, then you could set the block up to display other pages with restaurant/bars in the URL. I'm not sure if that's what you're going for though.

RE: I'm not sure

toursheet's picture

It sounds like you want a user to CREATE content, and then based on what they create, suggest other "community tagged" content that is similar?

Yes.
---
Or do you want it more across the board where if any user is looking at a page, they will be fed similar content based on those tags?

No, content is fed from a request to the users profile tag history - then recommends ("Bar", "Drinks", "Piano", ect) content they didn't know about. If he tagged content before it will not be in results.
---
are you pushing it to that user's profile? Or any page that they look at? Or will it be published next to the content that the user just created?

To a user profile wall - or a 'Discover' button that would load result.
---

I'll try to put it another way. Thanks for your help.

User A logs in and tags content ("Bar", "Drinks", "Piano") in a effort to form social recommendations - then visits his user profile 'content discovery wall' and will only see content which friends and like(tag)-minded users have recommended.

in addition

toursheet's picture

In addition to my last example - I think tags would not be enough - the content discovery engine would need to also use the Fivestar module or a like/dislike module to save the opinion of viewed content to users profile history.

ie: User A logs in and tags content ("Bar", "Drinks", "Piano") and associates a vote of like or dislike to it - In a effort to form social recommendations. Users B, C, D, thru Z all do the same thing. Then community discovered results are displayed on User A profile tab or block. Note: User A will only see content which friends and like(tag)-minded users B, C, D, thru Z have recommended.

My reaction. WAY

Scott Reynolds's picture

My reaction. WAY overthinking....

I could see a clean way of displaying two types of recommended content, one based on tags and one based on votes (similarity module can do this soon. Almost done with votes). But I think trying to find a system that does both is a bit crazy... very crazy. This feels like text book case of over-engineering...

Uh, I don't think so. When

Flying Drupalist's picture

Uh, I don't think so. When you have either very little content, or is not interested in specificity, just doing a similar to this via taxonomy or votes is fine. But when your library gets a little bigger you should become more interested in more accurate recommendations, and the way to do that is the suggestion in the parent.

collaborative filtering is

Scott Reynolds's picture

collaborative filtering is the technique for this (and the basis for CRE module).

Doing this on multiple axis gets hairy. Need to represent things as the same data. VERY hairy.

Afraid you didn't understand me (happens a lot i think to fast and type to slow).

The act of a user "tags content ("Bar", "Drinks", "Piano") and associates a vote of like or dislike to it" then transfering that vote to the taxonomy terms. That is over-engineering.

not personalized recommendations.

What i was getting at was allow for instance, similarity module to calculate two similarities, tags and votes. The tag one would be used to fine similar content that has similar tags. Where the vote one would be used to find very peronalized content. Thus this becomes two distinct actions, tag applied to node and a vote is cast for it. And the tag applied by the user is not associated with the user, the vote is. Thus personalized recommendations based on the vote.

phew, hope that clears it up. I struggle with explaining this stuff...

Sorry I can't help more

dudenhofer's picture

Unfortunately I'm not very familiar with this. I think I understand now where you're going, but not sure how to get there. I did start to explore the Favorite Nodes module, but that doesn't seem to help for the suggestions. Maybe a combination of the Favorite Nodes and some custom work? Like maybe pulling the tags from the favorites to display content? Not sure if that's even possible, but could get you closer. I think it will probably require some custom dev work.

a couple more starting points

raystuart's picture

Hi tourguide, let us know what you eventually come up with. Not sure if I can truly help either, but here are a couple other starting points that come to mind.

http://drupal.org/project/faceted_search - I don't have much experience with this, but it might provide the kind of search you are interested in. Server-intensive, but if it only exists on the user's profile or a Discovery button, then you might be able to get away with it. Also, maybe it is cache-able to some degree?

Something that can use faceted_search:
http://drupal.org/project/biblio

Also, check out the demonstration link here for a related idea... not sure how to throw in free tagging however:
http://drupal.org/project/usercontent

The other thing that occurs to me is Organic Groups. It might change the way you are looking at it, but it's probably worth a think anyway.

Actually, are you talking about free tagging, or would users choose specific tags that already exist?

Free Tagging

toursheet's picture

Yes all user profiles have the option for free tagging and rating of content nodes. The faceted_search module is a Discovery Tool but after reading the Faceted classification on Wikipedia it declares it’s a systems or module that is distinct from folksonomies that do not break out the tags into independent facets (ie: social recommendations). I'll look at this module more with the local user group.

Faceted Search solves a slightly different problem

David Lesieur's picture

Based on the requirements from your initial post, Faceted Search does not solve exactly the same problem. Yes it is an information discovery tool, but it works from arbitrary, user-selected search terms rather than fixed ones as it would be the case with a typical content recommendation tool.

Like any faceted navigation system, Faceted Search also works better with well organized metadata, ideally structured as "mutually exclusive and jointly exhaustive facets". If your site uses free-tagging in a single vocabulary, Faceted search probably won't be very useful.

faceted search across tags and rating?

raystuart's picture

Thanks David! I was actually thinking about faceted search across the tags and whichever rating-type module, plus whatever baseline search requirements that might be thrown in via drop-down boxes or other method. I don't know enough about faceted search, but I'm sure you do! :) Would that be a logical use for it, assuming the relevant fields are exposed as necessary?

The problem here it seems to me is first gathering the necessary information (tags, frequency of tags, friends' tags and possibly frequency, like-mindeds' tags and possibly frequency, ratings across the tagged content...) and then presenting the results in some meaningful way without an empty set (which is always a bit annoying.) Does Faceted Search help with this? Many thanks.

Also, if the content was tagged using multiple vocabularies (vocabulary in parentheses following), like Bar (Type of Establishment), Drinks (Services), and Piano (Features), would that allow Faceted Search to be more effective?

You might want to check

David Lesieur's picture

You might want to check Faceted Search's demo site to experiment with its user interface. It will be much more effective if tags are distributed across multiple vocabularies since Faceted Search only allows the selection of a single term per vocabulary.

Ratings are ignored at the moment, but one could easily develop a new filter (facet) for ratings. Sorting the results by rating would be another matter. At the moment results can only be sorted by relevance, unless a view is used for displaying the search results. There is currently no easy way to provide users with sort options.

I'm not sure how information such as friend's tags would fit in there unless it can be turned into a facet... "content tagged by my friends", with on/off values, perhaps.

Friends facet

toursheet's picture

The 'friend's' facet (filter) could possibly stem from the earlier system of information filtering, where relevant information is brought to the attention of the user by observing patterns in previous behaviour and building a user profile.

I have just recently

Scott Reynolds's picture

I have just recently released a new module: http://drupal.org/project/similarity . I plan on rerolling CRE to use this module as its basis for similarity. Then provide recommendations on top of that.

But according to your post

So if user A tags a community node with 'drinks', 'entertainment', and 'bar' the resulting recommendation block would push similar tagged content to user A.

similarity module would be able to provide similar content based on tags. It won't be personalized to user A (that means that user C will get the same recommendations when viewing the same node).

The module itself is very much in development/alpha phase. It works, it provides Views2 handlers, but doesn't provide a default block or page.

I hope you take a look at it and I welcome feedback

CRE Reroll

toursheet's picture

The plan to reroll CRE with a basis on similarity module is exciting. Check out the in addition comment from this thread, it adds more insight to discovering personalized content in the system with a like or dislike rating.

ie: User A logs in and tags content ("Bar", "Drinks", "Piano") and associates a vote of like or dislike to it - In a effort to form social recommendations. Users B, C, D, thru Z all do the same thing. Then community discovered results are displayed on User A profile tab or block. Note: User A will only see content which friends and like(tag)-minded users B, C, D, thru Z have recommended.

On the rating side of capturing like or dislike I wonder what contrib module is best suited to handle it?

http://drupal.org/project/updown
http://drupal.org/project/plus1
http://drupal.org/project/fivestar

Chicago

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds:

Hot content this week