Unendliches Wachstum doch möglich?
Geschrieben von DrNI
am Samstag, 2. Februar 2008
um 17:02
in Computational Linguistics
Nachdem Kilian von seiner Arbeit und seinen lustigen Erlebnissen beim Konvertierten annotierter Korpora berichtete, will ich auch mal was rauslassen aus meinem aktuellen Dasein als Student der Computerlinguistik. Letztendlich »lassen wir annotieren« in einem Team, so könnte man das nennen. Der Rechner macht die Arbeit des Annotierens. Und zwar werden einzelne NP Chunks (im Englischen, richtig geraten!) mit ihren dazugehörigen Word Senses aus WordNet versehen. Im Endeffekt ist es eigentlich keine Annotation sondern eine Art Conceptual Indexing für eine Spielzeug-Suchmaschine, aber belassen wir es mal dabei. Jedenfalls, damit diese teuren Lookups in WordNet reduziert werden können, arbeiten wir mit einem Cache:
Das sieht aber wirklich beängstigend aus: Wenn man den Cache nicht regelmäßig ausmistet, dann wächst er linear. Das ist ziemlich eklig. Normalerweise wächst das Vokabular in einem Korpus nämlich nicht linear … je mehr Wörter man sich anschaut, desto weniger unbekannte Wörter sieht man. Also misten wir regelmäßig aus. Alles, was zu selten nachgeschlagen wird (im Diagram: Weniger als zwei Mal), fliegt wieder raus. Und so sehen die Tendenzen ja auch gut aus – der Cache wächst immer langsamer. Um das Problem richtig gut zu lösen, müsste man WordNet umbauen (quasi invertiert indizieren) und man könnte mit einer konstanten Größe auskommen. Dann muss man nämlich die Wörter nicht speichern, die man nicht kennt.
Doch leider gibt es andere Probleme: Irgendwo hat jemand ein Memory Leak versteckt, so dass nach etwas über 8000 Tokens im Input immer der Heap überläuft. Der Verdacht fällt auf JAWS, Beweise stehen noch aus.
Fazit für Computerlinguisten: Ein Cache ist nicht die perfekte Lösung. Und ein Crash knapp hinter 8000 Tokens ist für eine Suchmaschine undenkbar.
Fazit für Nichtcomputerlinguisten: Einmal Bahnhof und zurück!




