May 2010 Archives

Texthaufen, Code und Regen

  • Posted on May 30, 2010 at 3:40 pm

Der Mai verging schneller als geplant. Ich habe daher nicht so viel vom Regen mitbekommen wie andere. Abgesehen davon war das der angenehmste Mai seit langem. Wer die Kühle der hessischen Wälder kennt, der wird vom Wüstenklima in Wien sehr unangenehm überrascht. Ich ziehe satte 17°C allem über 25°C jederzeit vor. Leider stehen für nächste Woche 30°C an…

Der Code zum Indizieren von Texthaufen ist gewachsen und wurde mit Korpi von 60000+ Dokumenten getestet. Die Erkenntnisse haben zur Beseitigung einiger Bugs geführt. Alle, die bisher dachten, daß der Unrat auf Dateiservern aus wohldefinierten und zugänglichen Dokumenten besteht, sollten diese Einstellung dringend hinterfragen. Dateiformate wie PDF, ODT, ODP oder ODS sind sehr gut zugänglich und meisten auch in eine indizierbare Form wandelbar. Dicht gefolgt ist dann XLS und PostScript®. Bei DOC kann es schon passieren, daß es statt DOC ein Text in RTF ist, aber die Dateierweiterung das nicht anzeigt. Dann gibt es noch DOC Dateien, die per Cut & Paste mit Text in einer seltsamen Kodierung gefüllt wurden. Es resultiert nach Normalisierung ein Text, der sich nicht in UTF-8 konvertieren läßt. Überhaupt ist die Kodierung ein großes Problem, da TXT und HTM(L) Dateien die verwendete Kodierung selten bis nie angeben. Genau aus diesem Grund haben Webbrowser Code an Bord, der Kodierungen errät.

Dateiformate sind das nächste Problem. Der Indexer wandelt alle interessanten Dokumente in reinen Text, da nur dieser indiziert wird. Es gibt nicht für alle Formate kommandozeilenbasierte Konverter. OOXML fällt mir spontan ein, dicht gefolgt von proprietären e-Book-Formaten. Solche Formate fallen derzeit durch den Rost.

Hört ihr Leut’ und laßt euch sagen, Textformate lassen mich verzagen. Bisher sind PDF, PostScript® und die OpenOffice Formate meine Favoriten.

Homöopathischer Selbstmordversuch

  • Posted on May 18, 2010 at 4:32 pm

Wie bringt man sich mit homöpathischen Medikamenten am besten um? Sicher nicht durch eine Überdosis, denn diese schmälert ja nur die Wirkung. Man kann nur durch eine passende abgemischte Unterdosis sterben. Alexa Ray Joel dürfte das falsch gemacht haben. Auf das richtige Mischungsverhältnis kommt es eben an. Gerade deswegen verstehe ich auch nicht was an abgebrannten Kernbrennstäben so schlecht sein soll. Die Homöopathie lehrt, daß die Dinger erst in verschwindender Konzentration so richtig wirksam werden. Geballt oder gepreßt auf einem Haufen (oder in Glas) ist die Wirkung viel geringer.

Textabenteuer

  • Posted on May 18, 2010 at 1:31 pm

Der Mai ist dichter gepackt als ich dachte. Vorletzte Woche habe ich bei den Wiener Linuxwochen im Alten Rathaus verbracht. GNU/Linux gepaart mit barocker Architektur sieht man nicht alle Tage. Aus Denkmalschutzgründen gab es daher nur ein Funknetzwerk. Jetzt widme ich mich wieder anderen Problemen und viel Text – in Form von Code und eigentlichem Text. Ich teste CLucene und den PostgreSQL Textindizierer an Dokumenten aus dem „echten” Leben. Die Fragen, die sich dabei aufwerfen, sind schwieriger zu beantworten als es die Dokumentation erahnen läßt.

Zuerst muß man mal auf den eigentlich Text kommen. Es gibt einen Haufen von Dokumentformaten – .doc, .pdf, .odt, .html, .xml, .rtf, .odp, .xls, .txt, .ps, … . Diese muß man zuerst normalisieren bevor man sie indizieren kann. Man benötigt den puren Text, die einzelnen Worte, und sonst nichts. Obendrein sollte die Kodierung der Zeichen einheitlich sein. Es bietet sich UTF-8 an, also muß man ausreichend Konverter haben. Da einige der Dokumentenformate proprietär oder einfach nur schlecht entworfen sind, ist das keine triviale Aufgabe. Ich habe genug Konverter gefunden, aber einige sind besser als andere. Die Tests an den Dokumentensammlungen werden zeigen wie gut sie wirklich sind.

Dann kommt die Sprache. Das Indizieren von Text reduziert die darin vorkommenden Worte auf ihre Stammform und entfernt Stopworte. Beides hängt von der Sprache des Dokuments ab. Nun wird die Sprache leider nicht in allen Formaten als Metainformation mitgegeben. Man muß sie also ermitteln. Dazu kann man sich der Publikation N-Gram-Based Text Categorization bedienen bzw. eine ihrer Implementationen bemühen. Was passiert mit Texten gemischter Sprache?

Die Liste ist lang. Der Code ist C++, und mir fehlt eine schöne, erweiterbare Klasse, die Dokumente einliest, sie in UTF-8 und puren Text normalisiert sowie einige Metainformationen ausliest. Bisher habe ich nichts gefunden, was ich verwenden möchte. Ich werde es selbst mal versuchen. HTML und XML kann ich schon normalisieren. Für PDF empfehle ich die exzellente PoDoFo Bibliothek (die Spenden von mir bekommen wird). Für den Rest suche ich noch.

Apropos Worte: Kennt wer die Sprache Yup’ik? Sie wird von sehr wenigen Inuit in Alaska und dergleichen gesprochen. Dort gibt es Worte, die andere Sprachen in Sätze fassen würden. Beispielsweise heißt Kaipiallrulliniuk soviel wie: „The two of them were apparently really hungry.” Faszinierend.

Top