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.
(Web-)Anwendungen
- Visual Studio Code ist ein genialer, erweiterbarer Open-Source-Editor von Microsoft, mit allen Features, die man sich nur so wünschen könnte. Verfügbar für alle Desktop-Betriebssysteme und inzwischen tatsächlich auch als Web-Anwendung. Eignet sich zum Mitschreiben in Vorlesungen, Bearbeiten von Übungsblättern, Programmieren von Projekten usw.
- Joplin ist ein Open-Source-Markdown-Editor mit Extras (LaTeX, …). Ebenfalls geeignet, um z.B. in Vorlesungen mitzuschreiben.
- FLACI, um Automaten zu zeichnen, und mit formalen Sprachen, Grammatiken und regulären Ausdrücken zu arbeiten. Sehr praktisch für Vorlesungen wie ECL oder die Theoretische Informatik.
- diagrams.net (ehemals draw.io), um unter anderem Flussdiagramme, UI-Mockups, ER- und UML-Diagramme zu zeichnen (es gibt dafür auch ein VSCode-Plugin).
- Minimum-Edit-Distance-Rechner mit Visualisierung.
- Cryptpad, um gemeinsam an Dokumenten (Tabellen, Text, Folien, Umfragen, …) zu arbeiten. So ähnlich wie Google Docs oder Office Online, aber Open Source und Ende-zu-Ende-verschlüsselt. Ein Account ist ebenfalls nicht zwingend nötig.
- Overleaf ist eine Website, die es ermöglicht kollaborativ an LaTeX-Dokumenten (wie Präsentationen, Papern) zu arbeiten.
- LateX Tables Editor ist ein grafischer Editor für LaTeX-Tabellen, damit man sich nicht mehr selbst mit dem Code dafür herumschlagen muss.
- Deepnote bietet Jupyter Notebooks (werden weiter unten noch genauer erklärt, falls ihr sie nicht kennt) in der Cloud, mit kollaborativen Bearbeitungsfähigkeiten (also so etwas wie Overleaf für Code).
Vorlagen
Wir sammeln (LaTeX-)Vorlagen für Übungsblattabgaben, Seminararbeiten, etc. in diesem GitLab-Repository.
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 in ihrem Technik-FAQ 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.
Tutorials und Übersichten
Programmieren und Automatisieren
Bash
Obwohl die Shell (und speziell Bash) wichtig für alltägliche Datenverarbeitungs- und Programmieraufgaben ist, gibt es keine Einführung in das Thema. Selbststudium ist hier zu empfehlen.
- Einführung in Bash und Umgebung, also auch in Werkzeuge wie sed und awk.
- Einführung in Bash mit einigen netten Tabellen am Ende.
Computerlinguistik
- Die Seite Natural Language Processing with Python stellt ein Tutorial für das Arbeiten mit NLTK zur Verfügung.
- Der Youtube-Kanal Sentdex enthält sehr viele Tutorials, die aufzeigen, was alles mit Python gemacht werden kann (Stock Market Prediction, maschinelles Lernen und auch NLP).
- Der YouTube-Kanal Sirajalogy enthält sehr viele Tutorials, die aktuelle Entwicklungen in der Forschung, wie Reinforcement Learning oder GANs, sehr einfach an den Zuschauer versucht ranzubringen.
- Auch der Kanal AI Coffee Break with Letitia ist durchaus zu empfehlen. Falls euch die Videos gefallen: Letiţia gibt hier auch Seminare und Vorlesungen.
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.