Automatische Klassifikation von GitHub-Projekten nach Anwendungsbereichen

Aus SDQ-Institutsseminar
Vortragende(r) Hermann Krumrey
Vortragstyp Masterarbeit
Betreuer(in) Yves Kirschner
Termin Fr 12. November 2021
Vortragssprache
Vortragsmodus
Kurzfassung GitHub ist eine der beliebtesten Plattformen für kollaboratives Entwickeln von Software-Projekten und ist eine wertvolle Ressource für Software-Entwickler. Die große Anzahl von Projekten, welche auf diesem Dienst zu finden sind, erschwert allerdings die Suche nach relevanten Projekten. Um die Auffindbarkeit von Projekten auf GitHub zu verbessern, wäre es nützlich, wenn diese in Kategorien klassifiziert wären. Diese Informationen könnten in einer Suchmaschine oder einem Empfehlungssystem verwendet werden. Manuelle Klassifikation aller Projekte ist allerdings wegen der großen Anzahl von Projekten nicht praktikabel. Daher ist ein automatisches Klassifikationssystem wünschenswert. Diese Arbeit befasst sich mit der Problematik, ein automatisches Klassifikationssystem für GitHub-Projekte zu entwickeln. Bei der vorgestellten Lösung werden GitHub-Topics verwendet, welches manuelle Klassifikation von GitHub-Projekten sind, welche von den Eigentümern der Projekte vorgenommen wurden. Diese klassifizierten Projekte werden als Trainingsdaten für ein überwachtes Klassifikationssystem verwendet. Somit entfällt die Notwendigkeit, manuell Trainingsdaten zu erstellen. Dies ermöglicht die Klassifikation mit flexiblen Klassenhierarchien. Im Kontext dieser Arbeit wurde ein Software-Projekt entwickelt, welches die Möglichkeit bietet, Trainingsdaten mithilfe der GitHub-API basierend auf GitHub-Topics zu generieren und anschließend mit diesen ein Klassifikationssystem zu trainieren. Durch einen modularen Ansatz können für den Zweck der Klassifikation eine Vielzahl von Vektorisierungs- und Vorhersagemethoden zum Einsatz kommen. Neue Implementierungen solcher Verfahren können ebenfalls leicht eingebunden werden. Das Projekt bietet zudem Schnittstellen für externe Programme, welche es ermöglicht, einen bereits trainierten Klassifikator für weiterführende Zwecke zu verwenden. Die Klassifikationsleistung des untersuchten Ansatzes bietet für Klassenhierarchien, welche sich gut auf GitHub-Topics abbilden lassen, eine bessere Klassifikationsleistung als vorherige Arbeiten. Bei Klassenhierarchien, wo dies nicht der Fall ist, die Klassifikationsleistung hingegen schlechter.