Relations-Extraktion – Vorfilterung notwendig

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?

Ein Gedanke zu „Relations-Extraktion – Vorfilterung notwendig

  1. Ich habe mich ja zuletzt noch mit den POS-Tags im Zusammenhang mit der Relationen-Extraktion beschäftigt.

    Für mich persönlich haben sie hierbei als eine Art Filterung durchaus Sinn gemacht. Extrahierte Wort-Fragmente können mit POS-Tags daraufhin untersucht werden, ob sie dem überhaupt entsprechen was man sucht. Nehmen wir an, man sucht Bauteile aus einem Automobil-Forum, bekommt aber bei der Relationen-Extraktion ein Verb als Wort-Fragment, dann kann man dieses bereits als “falsch” extrahierte Information verwerfen. Solch eine Filterung eignet sich zum Beispiel, wenn keine Lexika existieren, die zur Prüfung auf Korrektheit der extrahierten Information herangezogen werden können (z.B. eine Liste möglicher Bauteile).

    Zusätzlich können POS-Tags dazu verwendet werden, extrahierte Fragmente dahingehend zu verfeinern, dass sie mehr wichtige/nützliche Informationen tragen. Beispielsweise könnte hier eine Regel besagen, dass im Falle eines gefundenen Substantives zusätzlich ein vorangestelltes Adjektiv mit extrahiert wird, da ein Adjektiv vor einem Substantiv zu dessen näherer Beschreibung dient.

    Zum Bootstrapping: Die Frage ist für mich, weshalb kann ein Mensch bei extrahierten Tupeln entscheiden, ob sie dem entsprechen, was man gesucht hat? Beim Lesen eines Dokumentes haben Menschen zu einem einzelnen Term aufgrund ihrer Erfahrungen bzw. ihres Wissens sehr viele Assoziazionen. Zu dem Wort “Meer” könnten beispielsweise Assoziazionen zu weiteren Begriffen wie “blau”, “Himmel”, “Wellen”, “Sonne”, … aufkommen. All diese Informationen werden von uns bei der Entscheidung, ob ein Wort in einem bestimmten Kontext “korrekt”/”falsch” ist, herangezogen. Aus diesem Grund können auch POS-Tags bereits zu einer Art Filterung herhalten. Suche ich nach Bauteilen eines Autos, bekomme aber ein Verb zurück geliefert, dann ist das mit hoher Wahrscheinlichkeit nicht das, wofür ich mich interessiere.

    Ich denke durchaus, dass auch Menschen (un)bewusst grammatikalische Informationen mit in ihre Entscheidungen ob etwas korrekt oder falsch ist, einbeziehen.

    Für eine solche Entscheidung können während des Bootstrappings Datenbanken wie z.B. WordNet helfen. Besser geeignet sind aber oft branchenspezifische Wissensdatenbanken (z.B. Listen von Bauteilen, …), mit denen extrahierte Tupel einer Relation abgeglichen werden können. Meist stehen diese aber nicht zur Verfügung.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.