Praxis der Softwareentwicklung (PSE) - Graphbasiertes Empfehlungssystem für Publikationen

Beschreibung

Firmen wie Facebook, Google oder Amazon verwenden Empfehlungssysteme um ihren Nutzern passende und neue Artikel wie etwa Produkte, Newsbeiträge oder Videos vorzuschlagen. Sie sind daher unverzichtbar für eine moderne User Experience. Aber nicht nur in der Industrie sind Empfehlungssysteme hilfreich:

Ein wichtiger Teil der Arbeit von Wissenschaftlern oder auch Studenten während ihrer Bachelor- und Masterarbeiten besteht aus dem Finden geeigneter Literatur. Dabei werden häufig nach Referenzen in bereits bekannter Literatur gesucht (forward search) oder nach Publikationen gesucht, die selber auf bereits bekannte Literatur referenzieren (backward search). Die so gefundene Literatur muss dann auf Relevanz für das eigene Thema überprüft werden, um zu einer umfassenden Sammlung von Publikationen zu kommen, die den aktuellen Stand der Technik wiedergibt. 

Diese Beziehungen von Publikationen, die sich gegenseitig referenzieren lassen sich in Form eines gerichteten Graphen repräsentieren. Referenziert eine Publikation A eine andere Publikation B, dann existiert eine Kante von A nach B. Diese Darstellung hat den Vorteil, dass sich bekannte Ansätze der Graphanalyse darauf anwenden lassen um relevante Publikationen zu finden. Auch für die graphische Darstellung von Graphen gibt es existierende Lösungen, die eine manuelle Exploration erleichtern können.

Ziele

Im Rahmen des PSE soll eine Webanwendung implementiert werden, die es dem Nutzer ermöglicht relevante Publikationen für sein Forschungsgebiet zu finden. Dazu soll die Publikationsdatenbank von “Semantic Scholar” verwendet werden.

Kernfunktionalitäten

  • Finden von Publikationen anhand Titel, DOI, ...
  • Anlegen einer Liste bekannter Publikationen
  • Anzeigen von Publikationen, die eine “Gemeinsamkeit” mit der angelegten Liste haben
  • Bewertung der Relevanz mittels des (personalisierten) PageRank Algorithmus

Mögliche zusätzliche Funktionalitäten

  • Verschiedene Gewichtungen von Publikationen
  • Zeichnen des Graphen und Hervorheben relevanter Publikationen (Farbe, Größe, ...)
  • Clustering von Zitationen einer Publikation nach Communities
  • Vorschlagen von Experten

Themengebiete

  • Graphalgorithmen
  • Graphvisualisierung

Programmiersprachen (Vorschläge)

  • Frontend: TypeScript, HTML5, CSS
  • Backend: SQL, Python (mypy)

Frameworks (Vorschläge)

  • NetworKit
  • Django
  • VueJs, AngularJS, …