Inhaltsverzeichnis
Das NLTK - eine Einführung
Kurzvortrag am 5. November 2009
Was ist das NLTK?
- Das Natural Language Toolkit (NLTK) ist eine (Open Source) Sammlung von Python-Modulen für die Verarbeitung natürlicher Sprachen. Es wurde und wird entwickelt unter der Leitung von Steven Bird, Edward Loper, Ewan Klein.
- Große und aktive Entiwckler-Community
Ziele
- Language Analysis
- Manipulating large corpora, exploring linguistic models, and testing empirical claims.
- Using techniques in data modelling, data mining, and knowledge discovery to analyze natural language.
- Language Technology
- Building robust systems to perform linguistic tasks with technological applications
- Using linguistic algorithms and data structures in robust language processing software
Systemvoraussetzung
- MacOS X 10.5 oder größer (das NLTK läuft auch mit 10.4, aber wer kein »altes« Matplotlib, NumPy und SciPy auf seinem Rechner hat, bekommt dieses nicht mehr für 10.4)
- Python ab 2.4 oder größer. Nach meinen Erfahrungen läuft das NLTK am Besten mit Python 2.5. Python 3 wird (noch) nicht unterstützt.
Zusätzliche Software
- NLTK-Data – eine (freie) Sammlung von Text-Corpora verschiedenster Coleur und Sprachen (erhältlich auf der NLTK-Website).
- Matplotlib (empfohlen) – eine 2D-Plotting-Library für die Visualisierung einiger Ergebnisse
- Prover9 (optional) – ein Theorem Prover
Abhängigkeiten
- Installationsreihenfolge
- pytz (Hilfsmodul)
- python.dateutil (Hilfsmodul)
- SciPy
- NumPy
- Matplotlib
- NLTK
Installation
Da der Ein-Klick-Installer »mein« Python 2.5 nicht sofort erkannte, war folgender Schritt notwendig:
cd /tmp/nltk-installer sudo python setup.py install
Danach lief alles wie geschmiert.
Beispielcorpora runterladen
Beispiele
Beispiel 1
#!/usr/local/bin/python/ from nltk.book import * text4.dispersion_plot(["citizens", "democracy", "freedom", "duties", "America"])
Beispiel 2
#!/usr/local/bin/python/ from nltk.book import text3 text3.concordance("lived")
UTF-8: Beispiel 1
#!/usr/local/bin/python # -*- coding: utf-8 -*- import nltk f = open('/Users/kantel/Documents/wolkegoogle.txt') raw = f.read() # print raw tokens = nltk.word_tokenize(raw) utf8text = nltk.Text(tokens) utf8text.concordance('Cloud')
UTF-8: Beispiel 2
#!/usr/local/bin/python # -*- coding: utf-8 -*- import nltk import codecs f = codecs.open('/Users/kantel/Documents/wolkegoogle.txt', encoding='utf-8') raw = f.read() # print raw.encode('utf-8') tokens = nltk.word_tokenize(raw.encode('unicode_escape')) utf8text = nltk.Text(tokens) search = 'Cloud' utf8text.concordance(search)
Probleme
- Unicode! (Geht sicher, aber ich habe es weder der Dokumentation (dem Buch) entnehmen können, noch es durch Probieren herausgefunden.)
Arbeitsumgebung
Fazit
- NLTK ist ein sehr leistungsfähiges Tool, das mit Hilfe von Python auch noch beliebig erweitert werden kann (+)
- NLTK ist besitzt kein GUI, sondern der Nutzer muß »programmieren« (-)
- Die Anfangshürden sind ziemlich hoch (-)
- Wegen der Integration mit Python kann man aber in der Regel »alles« damit machen (+)
- Was spricht also dagegen, das NLTK in das Standard-Image des Instituts mit aufzunehmen?
Literatur
- Das NLTK-Buch (Natural Language Processing with Python) (gibt es online) ist nicht gerade ein Ausbund an Didaktik (insbesondere fehlt mir eine Referenz der Befehle)
- Dafür ist im Gegenzug auf der NLTK-Website eine ziemlich umfang- und hilfreiche Dokumentation zu finden
- Zusätzlich ist das Buch Text Processing in Python von David Mertz zu empfehlen (gibt es ebenfalls online)

