Archive for December, 2009

Dec 23 2009

Apache: kein mod_rewrite bei existierender Datei

Published by Mathias Bank. Filed under: PHP

Ich bin mir sicher, eines der großen On-Page-SEO-Themen im nächsten Jahr wird sein, wie man die Auslieferung einer Seite beschleunigen kann. Es sollte geradezu offensichtlich sein, dass man am meisten in PHP-Programmen sparen kann, wenn man PHP erst gar nicht aufruft. Deshalb ist eine mögliche Idee, die generierten Seiten mittels PHP rausschreiben zu lassen und dann diese direkt auszuliefern.

Das möchte ich jetzt an einigen Stellen auch bei meinen Framework-Modulen forcieren. Da ich aber sehr stark auf mod_rewrite gesetzt habe, stellt sich die Frage, wie ich das am einfachsten bewältigen kann. Die Antwort liefert mir dieser Code:


RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f
RewriteRule ^ %{DOCUMENT_ROOT}%{REQUEST_URI} [L]

Der macht nichts anderes wie dem Apache zu sagen: falls es eine echte Datei mit diesem Namen gibt, dann leite nicht auf andere Dateien - in meinem Fall PHP-Dateien - um. Sehr nützlich!

1 Star2 Stars3 Stars4 Stars5 Stars
Loading ... Loading ...
3 responses so far

Dec 22 2009

Deutscher Blogcorpus - Zwischenstand

Published by Mathias Bank. Filed under: Doktorarbeit

Nachdem nun ein paar Blogger bereits auf das deutsche Blogcorpus verwiesen haben, möchte ich hier mal den aktuellen Zwischenstand veröffentlichen.

Aktuell haben sich 64 Blogs bereits beteiligt. Der älteste Blogger ist dabei 65, der jüngste 17. Die Altersverteilung sieht wie folgt aus:

Altersverteilung Blog-Corpus Dez 2009

Wie man schön erkennen kann, haben wir für die Jahrgänge 1970 - 1985 schon eine anschauliche Zahl an Blogs. Ich denke, dass man mit denen durchaus schon was anfangen könnte. Für die Jahrgänge davor und insbesondere danach sieht es aber deutlich schlechter aus. Da ist es bisher unmöglich, die Verfahren zu testen.

Ähnlich sieht es bei der Geschlechtsverteilung aus:

Geschlechtsverteilung Blog-Corpus Dez 2009

Wie man leider sehen kann, sind Bloggerinnen deutlich unter repräsentiert.

Also liebe Bloggerinnen und Blogger - tragt das Projekt bitte weiter. Schreibt darüber in euren Blogs und in Twitter, damit noch mehr Blogger sich im Corpus registrieren. Gerne auch kritisch. So kann ich auch evtl. darauf reagieren.

1 Star2 Stars3 Stars4 Stars5 Stars
Loading ... Loading ...
3 responses so far

Dec 22 2009

UIMA - eine Einführung

Published by Mathias Bank. Filed under: Doktorarbeit

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:

  • Natural Language Toolkit: eine Sammlung von python-Modulen
  • 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.

1 Star2 Stars3 Stars4 Stars5 Stars
Loading ... Loading ...
No responses yet

Dec 17 2009

Blog-Analysen

Published by Mathias Bank. Filed under: Doktorarbeit

Bei Robert kam bezüglich dem deutschen Blog-Corpus die Frage auf, was denn analysiert werden soll.

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.

1 Star2 Stars3 Stars4 Stars5 Stars
Loading ... Loading ...
5 responses so far

Dec 14 2009

Deutscher Blog-Corpus

Published by Mathias Bank. Filed under: Doktorarbeit

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!

1 Star2 Stars3 Stars4 Stars5 Stars
Loading ... Loading ...
2 responses so far

^