Tutorials

Einige einfache, praktische Anwendungen in Python

Auf dieser Webseite präsentieren wir einige einfache Anwendungen aus dem Bereich der Sprachverarbeitung und des Textminings mit vollständigem Pythoncode. Alle Beispiele sind im Rahmen von Seminaren zu Sprachverarbeitung und Textmining an der Hochschule Hannover entstanden.

Die Beispiele auf dieser Seite ersetzen nicht die hervorragenden Einführungn in die Sprachverarbeitung mit Python und dem Natural Language Toolkit (NLTK) von Bird, Klein und Loper (hier online) oder Standardlehrbücher wie Speech and Language Processing von Jurafsky und Martin oder Foundations of Statistical Natural Language Processing von Manning und Schütze. Vielmehr wollen die Seiten diese Bücher ergänzen und einerseits Beispiele für die Arbeit mit deutschen Texten bieten und andererseits einfache Anwendungen mit einem praktischen Nutzen zeigen. Die Beispiele sollen dazu inspirieren, selber mit dem Programmieren anzufangen und die gezeigten einfachen Lösungen zu verbessern und Lösungen für andere Probleme zu implementieren. Die Seiten können aber auch dazu dienen, Technologien, mit denen jeder täglich in Berührung kommt, zu verstehen.

Diese Seite ist keine Einführung in Python. Grundkenntnisse im Programmieren und in Python werden vorausgesetzt. Die meiste Beispiele können unabhängig voneinander gelesen werden. Einige bauen aber auf vorherigen Beipielen auf. Diese Abhängigkeiten werden immer am Anfang der Beispiele angegeben.


Sprachidentifikation

Eine einfache Statistik über Buchstaben bestimmt die Sprache eines Textes.

Wenn wir etwas mit Texten machen wollen, ist es fast immer notwendig zu wissen, in welcher Sprache die Texte geschrieben sind. Egal ob wir eine Rechtschreibkorrektur machen, einen Suchindex aufbauen oder Personennamen im Text finden wollen, die Verarbeitung der Texte ist sprachspezifisch. Manchmal gibt es Metadaten zu Texten, in denen die Sprache genannt wird. Diese sind aber oft nicht korrekt und meistens haben wir übehaupt keine Sprachangaben für die Texte, mit denen wir etwas machen wollen. In vielen Fällen ist es aber einfach, die Sprache des Textes automatisch zu erkennen.


Wortvorschläge und Autovervollständigung

Woher weiss unser Handy, welches Wort wir als nächstes schreiben wollen?

Für viele Leute ist es eine unverzichtbare Funktion des Smartphones: beim Schreiben von Nachrichten wird das nächste Wort vorhergesagt. Die Vorschläge sind oft richtig und erleichtern damit das schreiben auf der Minitastatur. Das Generieren von Vorschlägen hat viele weitere Anwendungen, zum Beispiel in der Spracherkennung (das Umsetzen eines akustisches Signals in Schrift): ohne eine Erwartung über das nächste Wort, würden weder Mensch noch Computer viel verstehen. Eine einfache Variante der Wortvorhersage kann man in Python leicht implementieren. Hierbei stoßen wir direkt auf ein zentrales Problem der statistischen Sprachverarbeitung.


Wortähnlichkeiten und unscharfe Suche

Wörter können eine ähnliche Bedeutung haben, oder einfach nur ähnlich geschrieben werden. In dieser Lektion schauen wir uns diese letzte Ähnlichkeit an. Wortähnlichkeiten sind oft wichtig, um Schreibvarianten und fehlerhafte Schreibweisen zu erkennen und zu finden.


Rechtschreibkorrektur

Sie haben jetzt Edit Distance (oder Levenshtein-Distanz), unscharfe Suche und Sprachmodelle kennengelernt. Damit kennen Sie alles, was Sie für eine gute Rechschreibkorrektur brauchen. Wir bauen eine echte Rechtschreibkorrektur für das Deutsche, die Fehler im Text findet und die beste Korrektur im gegebenen Kontext vorschlägt.

Vorverarbeitung von Texten: eine Standard-Pipeline.

Für viele Aufgaben müssen Texte immer auf die gleiche Art analysiert werden. Für eine Aufgabe wie die Sprachidentifikation können wir einen Text als eine lange Zeichenkette betrachten. Meistens brauchen wir aber eine Liste von Wörtern, mit denen wir weiter arbeiten können. In diesem Abschnitt stellen wir eine Standard-Analyse-Pipeline für Deutsch und Englisch vor.

Terminologieerkennung

Viele Fachgebiete haben ihre eigene Terminologie. Wir können diese Terminologie einfach finden und durch die Frequenzen der Wörter, in einer Sammlung mit Texten aus einem Fachgebiet, mit den Wortfrequenzen in einem allgemeinen Corpus vergleichen. Außerdem sehen wir, wie wir Texte aus Wikipedia herunterladen und nutzen können.

Automatische Klassifikation von Texten

Um Dokumente oder Texte effizient zu bearbeiten, zu archivieren und auffindbar zu machen, ist es oft notwendig, sie in vordefinierte Kategorien einzusortieren. Man kann Mails automatisch in verschiedenen Postfächer einsortieren (Spam oder nicht-Spam), eingehende Post verschiedenen Abteilungen eines Unternehmens zuordnen, Konferenzbeiträge zu verschiedenen Tracks einer Konferenz usw. Diese Klassifikation funktioniert für Texte oft sehr gut, wenn wir einige wenige bis zu einigen tausenden Klassen haben, für die jeweils ausreichend Beispiele vorhanden sind. In dieser Lektion trainieren wir einen Classifier der aus richtig klassifizierten Beispielen lernt. Nebenbei sehen wir, wie wir über eine Internetschnittstelle eine große Anzahl von Dokumenten eines Hochschulservers herunterladen können um ein eigenes Corpus aufzubauen.

Distributionelle Semantik

Die linguistische Prinzipien hinter Word2Vec

Die Darstellung von Wortsemantik mit Vektoren von latenten Merkmalen, Word Embeddings genannt, gehört seit einigen Jahren zu den beliebtesten Technologien in der Computerlinguistik. Wir zeigen, wie man mit einem relativ kleinen Trainingscorpus und einfachste Algorithmen bereits gute Word Embeddings berechnen kann.