Menü

Werkzeugkasten

Während des Coli-Studiums trifft man auf vielerlei Herausforderungen konzeptueller und technischer Art. Glücklicherweise gibt es im World Wide Web eine Vielzahl an Ressourcen, die bei der Bewältigung helfen können.
Diese Liste ist ein Versuch, einen Überblick über Ressourcen zu bieten, von denen wir selbst profitiert haben.
Es tauchen verschiedene Arten von Ressourcen auf:

  • Umfangreiche Einführungen in ein Thema, für deren Studium man etwas Zeit einplanen sollte.
  • Web-Werkzeuge, um schnell etwas auszurechnen oder etwas zu zeichnen.
  • Nachschlagewerkartige Übersichten.
  • Software-Bibliotheken.

Coli-Infrastruktur

Versionskontrolle

Da git zurzeit das meistgenutzte Versionskontrollsystem ist, unterhält die Gruppe Technik eine GitLab-Instanz. GitLab ist ähnlich wie GitHub. Ihr könnt dort eigene Projekte anlegen und mit anderen zusammen daran arbeiten.

Korpora, Parser etc.

Die Wikiseite über die verfügbaren Ressourcen erklärt dazu alles Nötige. (Zumindest theoretisch.)

Server

Für Studierende nutzbare Server:

  • ella.cl.uni-heidelberg.de: Rechenserver; 32 Kerne, 125 GiB Hauptspeicher.
  • last.cl.uni-heidelberg.de: Rechenserver; 40 Kerne, 504 GiB Hauptspeicher.

Technik-Tutorial der GT

Die Gruppe Technik hat viel Wissenswertes zur Infrastruktur auf ihrer Wikiseite zusammengefasst.

Coli-News

  • Hackernews enthält News die interessant sind für Hacker (und solche die es werden wollen). Dazu zählen oft News über maschinelles Lernen oder auch Python.
  • Das Python-Subreddit enthält viele News zu Python, z.B. neue Versionen, neue Module oder Projekte die mit Python realisiert worden sind.
  • Das MachineLearning-Subreddit enthält viele News zum maschinellen Lernen, z.B. neue Algorithmen, neue Implementationen oder Diskussionen.

Web-Werkzeuge

  • Web-Anwendung zum raschen Zeichnen von deterministischen endlichen Automaten.
  • Web-Anwendung zum Entwerfen von Diagrammen wie z. B. Flussdiagrammen.
  • Minimum-Edit-Distance-Rechner mit Visualisierung.
  • Overleaf ist eine Website die es ermöglicht kollaborativ an LaTeX-Dokumenten (wie Präsentationen, Papern) zu arbeiten.

Tutorials und Übersichten

Programmieren und Automatisieren

Bash

Obwohl die Shell (und speziell Bash) wichtig für alltägliche Datenverarbeitungs- und Programmieraufgaben ist, gibt es (außer einem Tag im Ressourcenvorkurs) keine Einführung in das Thema. Selbststudium ist hier zu empfehlen.

Computerlinguistik

  • Die Seite Natural Language Processing with Python stellt ein Tutorial für das Arbeiten mit NLTK zur Verfügung.
  • Die Youtubechannel Sentdex enthält sehr viele Tutorials die aufzeigen, was alles mit Python gemacht werden kann (Stock Market Prediction, maschinelles Lernen und auch NLP.
  • Die Youtubechannel Sirajalogy enthält sehr viele Tutorials die aktuelle Entwicklungen in der Forschung, wie Reinforcement Learning oder GANs, sehr einfach an den Zuschauer versucht ranzubringen.

Texte verfassen

  • Die Seite LaTeX for Linguists gibt einen Überblick über eine Vielzahl von LaTeX-Paketen, die für linguistische Texte relevant sind.
  • Ein Heidelberger Student gibt regelmäßig eine sehr gute und grundlegende Einführung in LaTeX, für die alle Vorlesungen und Übungen auch online verfügbar sind. Sehr zu empfehlen zum Durcharbeiten von vorne bis hinten oder zum kurzen Nachschlagen zu bestimmten Themen.

Python-Bibliotheken

Oft weiß man nicht, welche Pythonmodule überhaupt existieren und versucht, die Funktionalität selbst zu implementieren.
Dies geht auch einfacher, weswegen wir hier eine (eventuell wachsende) Übersicht an interessanten Python-Bibliotheken geben.

Stringmatching

  • fuzzywuzzy: fuzzywuzzy ist eine Bibliothek, die es z. B. erlaubt Strings ungenau miteinander zu matchen (Levenshtein) und somit zu filtern.

Spracherkennung

  • langdetect: langdetect ist eine nützliche Bibliothek, die es erlaubt die Sprache eines Textes einfach herauszufinden.

Statistische Module

  • statsmodels: statsmodels enthält viele Funktionen zur statistischen Analyse von Daten, z. B. Korrelation.
  • sklearn: sklearn ist eine Bibliothek, die sehr viele Algorithmen fürs maschinelle Lernen implementiert.
  • scipy: scipy implementiert sehr viele Algorithmen für wissenschaftliches Arbeiten, wie Korrelationstests oder bereits implementierte Ähnlichkeitsmaße wie Kosinusähnlichkeit.
  • sympy: sympy erlaubt es mathematische Formeln in Python zu formulieren, die dann vereinfacht, abgeleitet, integriert oder mit eingesetzten Zahlen evaluiert werden können.
  • pandas: pandas ist eine Bibliothek, die es erlaubt mit tabellarischen Daten sehr einfach umgehen zu können.

Textverarbeitung

  • nltk: nltk enthält viele Algorithmen zur Textverarbeitung.
  • spacy: spacy implementiert State of the Art Algorithmen für POS-Tagging, Dependency Parsing und NER.
  • textblob: Enthält Algorithmen zur Verarbeitung von englischen Texten, wie eine automatische Sentiment-Analyse basierend auf einem Wörterbuch.
  • textblob-de: Dasselbe wie textblob, bloß für deutsche Algorithmen.
  • polyglot: Enthält Algorithmen wie POS-Tagging und Sentiment Analyse für über 100 verschiedene Sprachen.

Scraping

  • requests: Vereinfacht das Arbeiten mit HTTP-Anfragen an Seiten.
  • bs4: Ist eine Bibliothek zum einfachen Parsen von XML und HTML.
  • scrapy: Ist ein Framework zum schreiben von Scrapern.

Homepages

  • flask: Web-Framework, das sehr viele Freiheiten lässt. V. a. für kleine Projekte oder sehr ausgefallene Anwendungsfälle zu empfehlen.
  • django: Web-Framework, das einen einigermaßen festen Rahmen für ein Projekt vorgibt. V. a. für größere Projekte geeignet; gerade bei Verwendung einer Datenbank.

Deep Learning

  • keras: Ist ein Framework zum sehr einfachen erstellen von Neuronalen Netzen. Fungiert als Abstraktionslayer on top von Tensorflow oder Theano.
  • tensorflow: Tensorflow ist eine plattformunabhängige Open-Source-Programmbibliothek für künstliche Intelligenz bzw. maschinelles Lernen im Umfeld von Sprache und Bildverarbeitungsaufgaben.
  • pytorch: Pytorch erlaubt eine ähnliche Funktionalität wie tensorflow mit einer besseren Integration in Python. So werden for-loops in Python beim erstellen von neuronalen Netzen auch wirklich gut eingebunden.

Textextraktion

  • textract: Ist eine Bibliothek um Texte aus Dokumenten wie PDFs zu extrahieren.

Geiler Shit

  • jupyter-notebook: Ist ein Modul welches Code und Dokumentation direkt miteinander verbindet und damit sehr gut für die Lehre nutzbar ist. Dabei ist ein jupyter-notebook ein webbasierter interaktiver Modus von Python, in welchem z.B. auch Bilder direkt eingebettet werden können.

Visualisierung

  • matplotlib: Dies ist die klassische Visualisierungsbibliothek für Pythonprogramme.
  • seaborn: Ist eine Erweiterung von matplotlib mit viel schöneren Defaults und automatischer Integration von pandas Dataframes.