Im Rahmen meiner Doktorarbeit habe ich mir inzwischen eine Reihe unterschiedlichster Systeme zur Verarbeitung von Texten (NLP Tools) angeschaut. Hier gibt es inzwischen auch eine ganze Reihe freier Implementierungen, am bekanntesten sind sicherlich folgende:
Weka: An sich eher ein Data-Mining-System, das aber auch “einfache” Module für Text-Verarbeitung anbietet. Scheitert aber sehr schnell an der Datenmenge (wir haben allein im Vektorraum-Model schnell Dimensionen > 70.000)
Open NLP: eine recht interessante Sammlung an NLP Bibliotheken
Sicher gibt es noch eine große Anzahl anderer “Insellösungen”. Das Problem ist nur, dass sie in der Praxis kaum zu verwenden sind. Hauptsächlich liegt es daran, dass den Systemen eine saubere Basisarchitektur für sehr große Datenmengen fehlt. Und hier kommt UIMA ins Spiel.
UIMA steht für “Unstructured Information Management Architecture” und wurde ursprünglich von IBM entwickelt. Wie der Name schon sagt ist es eigentlich kein System zur Text-Verarbeitung, sondern eine Architektur, mit der sich beliebige unstrukturierte Daten - also auch Bilder und Sound - verarbeiten lassen.
UIMA stellt dem Entwickler eine sehr einfaches System zur Verfügung, mit dem in einem linearen Prozess Daten aus einer beliebigen Datenquelle eingelesen, verarbeitet und wieder gespeichert werden können. Somit besteht eine UIMA-Architektur immer aus drei Hauptkomponenten:
Reader: liest die Daten ein.
Processor: verarbeitet die Daten. In der Regel werden mehrere Prozessoren - im UIMA-Jargon Annotatoren genannt - hintereinander geschaltet.
Consumer: schreibt die Daten wieder raus.
Die Aufgabe des Programmierers ist nun, diese drei Komponenten mit Leben zu füllen. Dazu bietet UIMA schon sehr nützliche Basisklassen an, die einfach erweitert werden können. Der Gedanke dahinter ist: jede Klasse erfüllt genau eine Aufgabe. Sie muss nichts anderes als den Text, den es verarbeiten soll, wissen. Wir haben also praktisch ein Multiagentensystem vorliegen, das man am besten mit Fließbandarbeitern vergleichen kann. Eine Beispielanwendung könnte z.B. zur Füllung eines Lucene-Datenindexes so aussehen:
CSV-Reader (Reader)
Tokenizer (Annotator)
Spelling-Correction (Annotator - benötigt die Informationen vom Tokenizer-Annotator)
Lucene-Consumer
Natürlich ist man in der Lage, für die einzelnen Agenten wieder öffentliche Bibliotheken zu verwenden, man nutzt aber dabei bereits die - meiner Meinung nach - sehr ausgereifte und flexible Basisarchitektur. Die einzelnen Agenten können dabei sehr flexibel über eine XML-Datei konfiguriert und im Ablauf auch verändert werden. Damit sind die Methoden sehr gut wiederverwendbar. Gerade im Rahmen von Forschungsarbeiten sehr nützlich!
Wer also unstrukturierte Daten irgendwie verarbeiten will, sollte sich dieses Framework auf jeden Fall mal ansehen. Für mich war die Umstellung einer selbst entwickelten Architektur auf dieses System sehr lohnenswert.
Eine Analyse, die ich für sehr unwahrscheinlich halte (aber nicht ausschließen kann, soll der Wissenschaft ja frei zur Verfügung stehen), besteht darin, die Qualität eines Blogs zu bewerten. Nur was ist Qualität? Ich habe mich erst kürzlich im Rahmen eines Papers damit beschäftigt, ob man die Expertise eines Benutzers automatisch und objektiv bewerten kann. Dafür gibt es meiner Meinung nach eine relativ große Anzahl unterschiedlicher Indizien. Aber was Expertise und damit Qualität / Professionalität letztendlich ausmacht, das kommt auf die Fragestellung an. Jemand der nur mit Fachbegriffen um sich schmeißt, macht vielleicht einen professionellen Eindruck, aber liefert er damit eine hohe Qualität? Jemand, der auch mit “Anfänger-Fragen” umgehen kann bietet doch mindestens eine ebensolche Qualität. Einen objektiven Wert für Qualität gibt es demnach meiner Meinung nach nicht. Es kommt auf die Fragestellung an.
Mit Hilfe des Weblog-Corpus verspreche ich mir Antworten auf eine Reihe ganz anderer Fragen. Sie beruhen alle auf der Analyse des Schreibstils:
Verwenden Frauen mehr Adjektive?
Verwenden junge Menschen auffallend viel Slang-Begriffe? Also Begriffe, die nicht im Lexikon auftauchen?
Schreiben Beamte wirklich “umständlicher” - z.B. im Nominalstil?
Es gibt natürlich noch eine Reihe weiterer Fragen. Sie alle haben aber die Eigenschaft, dass man mit Hilfe von statistischen Verfahren versuchen will, Benutzereigenschaften zu bestimmen. Die große Frage lautet also: was sind die relevanten Eigenschaften. So hat z.B. Prof. Koppel herausgefunden, dass im englischen Raum die durchschnittliche Satzlänge auffallend stark mit dem Alter zusammenhängt. Auch bei Slang-Begriffen sei dies der Fall.
Für mich stellt sich eben die Frage: Funktionieren die Algorithmen im deutschen ebenso gut? Und was verrät man sonst noch über sich?
Um das bestimmen zu können braucht man also zur statistischen Relevanz einen relativ großen Corpus. Bisher haben sich knapp über 30 Blogs registriert. Das ist leider deutlich zu wenig. Ich würde mich also freuen, wenn ihr den Link weiter veröffentlichen könntet.
Im Rahmen meiner Doktorarbeit stoße ich ständig auf ein Problem: im Bereich “User Generated Content” gibt es es kaum Corpora, mit denen man den Erfolg / Misserfolg der Algorithmen unter Beweis stellen kann. Besonders im deutschen Raum sieht es da sehr schlecht aus. Findet man im englischsprachigen Raum noch Daten wie den Corpus von Prof. Koppel mit dem unter anderem gezeigt werden konnte, dass man mit dem Schreibstil auf Alter und Geschlecht schließen kann (z.B. Effects of Age and Gender on Blogging oder Mining the Blogosphere: Age, gender and the varieties of self–expression), ist hier leider aus wissenschaftlicher Sicht tote Hose. Eine Vergleichbarkeit der Algorithmen ist meist nicht möglich - oft funktionieren sie gefühlt auch in deutscher Sprache nicht annähernd so gut wie in englischer Sprache. Das muss objektiv evaluiert werden.
Höchste Zeit, dass die Lücke also geschlossen wird. Ich habe deshalb eine Seite online gestellt, mit deren Hilfe ein deutscher Blog-Corpus erstellt werden soll. Jeder Blogbetreiber kann hierzu seine Blog-Adresse, sein Alter, sein Geschlecht und nach Möglichkeit auch seine Berufsgruppe hinterlegen. Ein Blog-Crawler ladet dann die Beiträge herunter und verknüpft die Daten entsprechend. Der daraus entstehende deutsche Blog-Corpus wird dann an der selben Stelle der Allgemeinheit für Forschungszwecke zur Verfügung gestellt.
Also deutsche Bloggerszene: helft der deutschsprachigen Forschung!