Erstellung und Visualisierung einer Distanz-Matrix zwischen Jupyter-Notebooks

Erkenntnisinteresse:

  • Identifikation von sozialen Gruppen auf Basis von Textähnlichkeit am Beispiel von kooperativen (Python-) Programmierübungen

Geeignet als:

  • Bachelorarbeit
  • Studienprojekt Bachelor

Usecase

In einem Programmier-Praktikum sei folgende Aufgabenstellung gegeben:

  • Recherchieren Sie im Netz Python-Lösungen zu "visualization of distance matrices with python".
  • Implementieren Sie - gerne mit copy & paste (aber natürlich die Quelle zitieren!) - ein minimales Beispiel.
  • Erklären und kommentieren Sie den Code in eigenen Worten auf DE.

Hinweis:

  • Zusammenarbeit und Austausch bzgl. des Codes in Kleingruppen ist explizit erwünscht. Lernziel ist das Verstehen von Code, wie er z.B. bei stackexchange etc. typischerweise zu finden ist.
  • Es ist erforderlich, dass jeder seine eigene Erklärungen oder Kommentare zum Code in eigenen Worten verfasst.
  • Entsprechend reicht auch jeder ein eigenes Jupyter-Notebook als Lösung ein. Dieses darf gerne Code-Kopien (mit Quellennachweis), jedoch keine Kopien von selbstformulierten Kommentierungen enthalten.

Gesucht ist ein Python-Programm, das durch einen Textabstands-Vergleich Lösungen zu Programmieraufgaben clustert und visualisiert. Ähnliche Lösungen weisen auf Kommunikation in Kleingruppen hin.

Teilaufgaben

Teil 1: Texte einlesen, in Text-Zellen aufteilen

  • json einlesen
  • ipynb-Zellen geeignet in Textsnippets zerschneiden*
  • ggf. ipynb-Stuktur ausnutzen: Markdown-Zellen anders behandeln als Code-Zellen?

Teil 2: Erstellen tf/idf-basierten Cosinus-Ähnlichkeitsmatrix

Teil 3: Interpretation: Welche Teilnehmer arbeiten als Gruppe zusammen?

  • Visualisierungen*
    • Heamap, Dendrogram, ordered dissimilarity matrix, force-directed graph etc.
  • rechnerische Zusammenfassen von Zellen-Ähnlichkeiten zu Ähnlichkeiten für ganze ipynb-Dateien*

Legende: * ... hier ist Phantasie gefragt!

Anmerkungen

Wir untersuchen lediglich syntaktische, keine semantische Änlichkeit.

Insbesondere haben wir kein starkes Interesse, absichtlichen Betrug festzustellen: Umformulierungen von Code oder Kommentaren in eigenen Worten dürfen im Kontext dieser Arbeit als unterschiedliche Lösungen interpretiert werden.

Unsere Lösung muss nicht allgemein für viele Textsorten etwickelt werden (schwieriger). Es genügt eine Entwicklung speziell für Python Jupyter Notebooks im Format ipynb (einfacher).

In ipynb nutzen wir die die interne Struktur aus: Ähnlichkeit wird nicht zwischen ganzen Notebooks (d.h. den ipynb-Dateien), sondern zwischen einzelnen (Markdown- und Text-) Zellen gesucht.

Zum Einlesen:

Bag of Words-Model

MOSS

Python lernen