Support for Drupal 7 is ending on 5 January 2025—it’s time to migrate to Drupal 10! Learn about the many benefits of Drupal 10 and find migration tools in our resource center.
Hello, I have developed a module "OG Similar Groups" http://drupal.org/project/similargroups
Basically, it displays a list of "similar groups" on a group page based on shared membership. That is, if two groups have many members in common, then the two groups are considered as similar.
Future release of the module can also recommend similar users to any user based on shared group membership. Hopefully that feature can help connect drupalers with similar interests and make our community more dynamic.
Any thought?
Comments
Comment #1
moshe weitzman CreditAttribution: moshe weitzman commentedI think Recommendations like this are cool. I'm not so sure that group membership is the best basis but it might be. Solr can do recommendations based on relevancy matching. Lets discuss.
Comment #2
danithaca CreditAttribution: danithaca commentedThanks for the response Moshe!
I think some kind of group recommendation would be helpful to g.d.o users. The question is which algorithm to use.
To my knowledge (maybe limited), ApacheSolr MoreLikeThis recommendation is text-based, that is, group similarity is calculated based on how similar the group description texts are. I'm not sure how good it works for g.d.o. But it's definitely a possible approach.
Another alternative is to use the SimilarGroups module (based on Recommender API). I'm not sure how good it works for g.d.o either. But if the g.d.o maintainers team agrees, I can port it to D5, and give it a try on g.d.o. If it works, that's fine. Otherwise, just uninstall it.
Comment #3
moshe weitzman CreditAttribution: moshe weitzman commentedAnother approach - just let group admins name their 'related groups' as a cck field on the group node. These would be shown in a block on the group homepage.
Comment #4
moshe weitzman CreditAttribution: moshe weitzman commentedI think #3 is a good approach. Seems like we could add a multiple node ref field on the group content type and then a little custom code will create a block from the data. Folks think this is useful?
Comment #5
gregglesWe can use a standard solr more like this block, but we need #372767: Restrict MLT list to nodes of certain types, or the same type as current to be fixed first.
Marking postponed until then. I would say I'm very interested in this feature. I frequently hear of new groups or old groups that I want to be a member of...some automated way to find them would be great.
Comment #6
moshe weitzman CreditAttribution: moshe weitzman commentedNow that I reconsider, I think shared membership will lead very good results - better than MLT which has little basis for relevancy.
Comment #7
gregglesOk, an active feature.
@danithaca - any chance you are still working on this? I'm ready to roll it out when you are.
Comment #8
gregglesIt seems there's a critical bug in http://drupal.org/project/similargroups #838290: Fatal error: Call to undefined function recommender_top_similarity() in [site]/sites/all/modules/similargroups/similargroups... otherwise this seems ready to test/deploy.
Comment #9
danithaca CreditAttribution: danithaca commented@greggles, @Moshe: I have updated the "similargroups" module to use the new Recommender API module that supports cloud service. It can upload group membership info to the cloud on Amazon EC2, the cloud would use Apache Mahout to run the computation, and then send back the recommendations. If not using cloud service, g.d.o has to install Apache Mahout locally. The recommendations are shown through Views in 2 ways: 1) Personalized group recommendations based on what groups you joined, and 2) Similar groups to the current group based on membership.
To make this work either with cloud service or Apache Mahout, g.d.o. needs to install 3 modules: similargroups, recommender, and async_command. It also requires Views and Ctools. Would that be a problem? I also need to know whether g.d.o uses OG1 or OG2 in order to do some testing.
The old version of similargroups doesn't scale well. I don't think it'll work with more than thousands of users/groups on g.d.o. So I'm not maintaining the old version any more. The new version doesn't have the critical bug in the old version.
I'll attend Drupalcon in Denver. Let me know if we can spend a little time on Friday's code sprint to get this done.
Comment #10
nnewton CreditAttribution: nnewton commentedHi Dan,
So, would this solution require a hadoop cluster on which to run mahout? How often would the cluster be used for computation?
-N
Comment #11
gregglesNone of these seem like a problem to me. Group membership information is not 100% public, but it's pretty close to public since anyone can register and see it.
Comment #12
gregglesI should say, none of those are a problem from *my* perspective, but adding mahout is more work for the infrastructure team so we need to be sure there is justification for it. If we could see a roadmap of "First we add group recommendations, then we add module recommendations, etc" then that would help justify deploying mahout on g.d.o's server.
If that's not possible, it would be good to know what the costs would be for ec2 to do it there so that we can potentially get funding.
Comment #13
webchickOne of the 2012 DA goals is making Drupal.org better for site builders and developers, and the #1 Drupal.org feature request from the community is projects ratings/reviews and other metrics to determine quality. "Recommended modules" is basically the epitome of that, so if we had such technology available, I'm sure we would make good use of it on D.o "proper."
Comment #14
danithaca CreditAttribution: danithaca commentedThanks for the feedbacks!
The "recommender" part of Mahout has 2 modes: one is for Hadoop cluster, one is standalone. Currently the RecommenderAPI module that integrates Mahout only uses the "standalone" mode with multi-threading. So no Hadoop cluster is needed. However, it does require multi cores and a large memory to do the computation. But it only needs to run one or two times a week to update the recommendation results. Basically, a more powerful scratchvm would do the job.
Also, I got some funding to pay for the cloud server. So it's free to use for g.d.o. I guess it'll be easier to first try with the cloud service, and if it's good then switch to use Mahout locally within d.o. infrastructure.
However, it does require some dependent modules: http://drupal.org/project/recommender and http://drupal.org/project/async_command. These modules haven't got security reviews yet. I'm not sure if people are comfortable to deploy them to g.d.o.
Comment #15
danithaca CreditAttribution: danithaca commentedTo install to the testing site:
recommender_6.x-3.0-alpha4
async_command_6.x-1.0-alpha4
similargroups_6.x-2.0-alpha2
Comment #16
danithaca CreditAttribution: danithaca commentedwaiting to be tested on the testing site.
Comment #17
apadernoAt the moment, the only development done on groups.drupal.org is the migration on drupal.org. Once the migration is done, new modules will be deployed on drupal.org, if necessary.