Wie ich bereits anklingen ließ, besteht meine Doktorarbeit unter anderem darin, vollautomatisch Texte so zu analysieren, dass aus an sich unstrukturierten Texten strukturelle Daten ermittelt werden können. Eine Methode hierfür stellt die Informationsextraktion dar. So will ich z.B. aus einem Automobil-Forum die Kilometeranzahl herausbekommen, aus einem Kochforum die Zutatenliste, etc.
Das bedeutet, ich suche einen Algorithmus der n-stellige Relationen herausfinden kann. Das Snowball-Konzept bietet das bereits für 2-stellige Relationen. Dabei handelt es sich um ein Bootstrapping-Verfahren, das mit einer kleinen Ausgangsmenge neue Relationstupel erkennen kann. Diese neu erkannten Relationstupel werden nun bei der nächsten Iteration mit verwendet, wodurch mit jeder Iteration immer mehr Tupel erkannt werden.
Das Problem mit Bootstrapping-Verfahren besteht nun darin, dass ein einmal gemachter Fehler – also ein falsches Tupel – sich mit jeder Iteration fortsetzt und die Resultate damit mit der Laufzeit immer schlechter werden. Das könnte man nun natürlich abschwächen, indem man neue Tupel im Laufe der Zeit immer schlechter bewertet (Simulated Anealing). Das Snowball-System verwendet hierzu jedoch einen ganz anderen Ansatz: Named Entities.
Die Texte werden vorverarbeitet und es werden nur Begriffe mit bestimmten Named Entities (z.B. Organization, Location) als mögliche Tupel zugelassen. Das grenzt die möglichen Tupel deutlich ein. In meinem Fall stellt das jedoch ein Problem dar, da ich oft an Daten interessiert bin, die nicht mit Named Entities repräsentiert werden (z.B. Laufleistung, Alter, etc.). Man müsste immer einen Tagger extra trainieren, was wohl auf lange Sicht bescheuert ist.
Die alternative Idee war deshalb von mir, POS-Tags zu verwenden (Substantiv, Verb, …). Hierzu gibt es auch jede Menge Tagger (Stanford Tagger, TreeTagger, …). Diese Tagger müssten nur für die entsprechende Sprache angelernt werden, eine Anpassung an bestimmte Attribute wäre nicht notwendig. Eine Filterung – auch wenn sie weicher ist – wäre also möglich.
Ich frage mich jedoch, ob das wirklich notwendig ist. Als Mensch geh ich ja auch nicht hin und frage mich, was für eine Wortart der Begriff ist. Ich suche eher nach Mustern in Form von regulären Ausdrücken.
Hat jemand eine Idee oder Erfahrung, ob man diese Filterung vernachlässigen kann oder gibt es vielleicht eine gute Idee, wie man filtern sollte?