Topic recommendation for software repositories using multi-label classification algorithms

by Izadi, Maliheh and Heydarnoori, Abbas and Gousios, Georgios

You can get a pre-print version from here.
You can view the publisher's page here.


Many platforms exploit collaborative tagging to provide their users with faster and more accurate results while searching or navigating. Tags can communicate different concepts such as the main features, technologies, functionality, and the goal of a software repository. Recently, GitHub has enabled users to annotate repositories with topic tags. It has also provided a set of featured topics, and their possible aliases, carefully curated with the help of the community. This creates the opportunity to use this initial seed of topics to automatically annotate all remaining repositories, by training models that recommend high-quality topic tags to developers. In this work, we study the application of multi-label classification techniques to predict software repositories’ topics. First, we map the large-space of user-defined topics to those featured by GitHub. The core idea is to derive more information from projects’ available documentation. Our data contains about 152K GitHub repositories and 228 featured topics. Then, we apply supervised models on repositories’ textual information such as descriptions, README files, wiki pages, and file names. We assess the performance of our approach both quantitatively and qualitatively. Our proposed model achieves Recall\@5 and LRAP scores of 0.890 and 0.805, respectively. Moreover, based on users’ assessment, our approach is highly capable of recommending correct and complete set of topics. Finally, we use our models to develop an online tool named Repository Catalogue, that automatically predicts topics for GitHub repositories and is publicly available.

Bibtex record

  author = {Izadi, Maliheh and Heydarnoori, Abbas and Gousios, Georgios},
  title = {Topic recommendation for software repositories using multi-label classification algorithms},
  journal = {Empirical Software Engineering},
  volume = {26},
  number = {5},
  pages = {93},
  year = {2021},
  url = {},
  doi = {10.1007/s10664-021-09976-2}

The paper