  Software Categorization is the task of organizing software into groups that
broadly describe the behavior of the software, such as "editors" or "science."
Categorization plays an important role in several maintenance tasks, such as
repository navigation and feature elicitation. Current approaches attempt to
cast the problem as text classification, to make use of the rich body of
literature from the NLP domain. However, as we will show in this paper, text
classification algorithms are generally not applicable off-the-shelf to source
code; we found that they work well when high-level project descriptions are
available, but suffer very large performance penalties when classifying source
code and comments only. We propose a set of adaptations to a state-of-the-art
neural classification algorithm and perform two evaluations: one with reference
data from Debian end-user programs, and one with a set of C/C++ libraries that
we hired professional programmers to annotate. We show that our proposed
approach achieves performance exceeding that of previous software
classification techniques as well as a state-of-the-art neural text
classification technique.
