Difference between revisions of "Github Repo Recommendation:Topic Model meets Code"
Line 37: | Line 37: | ||
* How should we preprocess the code so as to improve the resulting topics? | * How should we preprocess the code so as to improve the resulting topics? | ||
* What are the effects of including/removing code comments and README files, as they can sometimes contain useful information about the repository content ([http://github.com/rails/rails/blob/master/README.rdoc README file from an example repo]: ''Rails is a web-application framework that includes everything needed to create database-backed web applications according to the Model-View-Controller (MVC) pattern...'') | * What are the effects of including/removing code comments and README files, as they can sometimes contain useful information about the repository content ([http://github.com/rails/rails/blob/master/README.rdoc README file from an example repo]: ''Rails is a web-application framework that includes everything needed to create database-backed web applications according to the Model-View-Controller (MVC) pattern...'') | ||
− | * In order to reduce computational costs, can we learn topics from a subset of the documents? | + | * In order to reduce computational costs, can we learn topics from a subset of the documents? If yes, how can we collect sample documents that are representative of the original distribution? |
==Challenges== | ==Challenges== |
Revision as of 09:06, 16 October 2012
Contents
Comments
Looks like a nice, well-defined project. It's not immediately obvious to me how you plan to do the content-based recommendation. Are you going to use Blei's CTR? or is there some other approach you want to use?
Suggestions: the GraphLab matrix factorization code has been pretty widely used, and is fairly scalable
Good luck! --Wcohen 15:20, 10 October 2012 (UTC)
Task
Item recommendation
Overview
Github is a social network site for programmers, where they can host source code repositories (also called repos). Users can watch repos they are interested in; when a user is watching a repo, s/he will receive status updates on its activities (such as commits, tagging, etc…).
In 2009, Github hosted a recommendation contest, where the objective was to recommend repositories to users. The dataset contained 56K users, 120K repositories, and 440K user-watches-repo relationships between them.
Collaborative filtering typically uses some form of matrix factorization technique, and ignores content (in this case, the repos/code). Alternatively, in this project, we propose to incorporate inherent topics of the source code (of repos) to improve predictions.
Team
Naoki Orii and I'm looking for teammates
Datasets
- The dataset from the Github contest is available at https://github.s3.amazonaws.com/data/download.zip
Methodology
Baseline method
A collaborative-filtering based method, such as SVD
Collaborative Topic Modeling
We will basically use the Collaborative Topic Regression model from Wang and Blei's "Collaborative Topic Modeling for Recommending Scientific Articles". An initial approach would be to combine all files in a given repository and treat it as a single document.
Some possible questions worth addressing:
- How should we preprocess the code so as to improve the resulting topics?
- What are the effects of including/removing code comments and README files, as they can sometimes contain useful information about the repository content (README file from an example repo: Rails is a web-application framework that includes everything needed to create database-backed web applications according to the Model-View-Controller (MVC) pattern...)
- In order to reduce computational costs, can we learn topics from a subset of the documents? If yes, how can we collect sample documents that are representative of the original distribution?
Challenges
- As it may be expensive to perform topic modeling on 120K repos, we may perform prediction on a subset of this data
More info about the Github contest
More information about the Github contest is available below:
- https://github.com/blog/466-the-2009-github-contest
- https://github.com/blog/481-about-the-github-contest
Related Work
Using topic models to improve collaborative filtering has been investigated in the following paper:
- C Wang and D Blei, "Collaborative Topic Modeling for Recommending Scientific Articles", in KDD 2011
The following papers describe applying topic models to code:
- E Linstead, P Rigor, S Bajracharya, C Lopes, and P Baldi, "Mining concepts from code with probabilistic topic models", ASE '07 Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
- K Tian, M Revelle, and D Poshyvanyk, "Using latent dirichlet allocation for automatic categorization of software", MSR '09 Proceedings of the 2009 6th IEEE International Working Conference on Mining Software Repositories