Mittwoch, August 12, 2009

GATE Summer School Highlights (27.07.2009 - 31.07.2009)

Tag 1 (27.07.2009)

Heute fand eine allgemeine Einfuehrung in GATE statt, es wurde gezeigt, wie man das GUI startet, ein Dokument reinlaedt, einfache Applikationen baut, einzelne PRs (Processing Resources) hinzufuegt und einfache JAPE Rules baut. Dennoch war etwas echt cooles und neues dabei, naemlich die sogenannten "Flexible Gazetteers". Und zwar machen diese gazeteers auf den root eines Terms.

Z.B.: in einer "normalen" Gazetteer steht der Term `gehen`. Im Text kommt allerdings `gehst` vor, so wird dieses Wort trotzdem mit `gehen` gleichgezetzt und entsprechend annotiert (das ganze nennt sich Stemming bzw. rueckfuehren auf die Stammform).

Um das Ganze nutzen zu koennen muss man den Token root irgendwie zu den Features (Eigenschaften) des Tokens hinzufuegen (entweder manuell in einem Vorverarbeitungsschritt oder mithilfe eines "Morphological Analyzers", welcher auch - ich hab extra gefragt - fuer Deutsch zur Verfuegung steht.

(Notiz fuer mich: beim hinzufuegen einer Flexible Gazetteer bei dem Parameter "inputFeatureNames" den Wert "Token.read" eintragen).





Tag 2 (28.07.2009)

Heute gab es eine Einfuehrung, wie GATE in einer Applikation zu verwenden ist (GATE Embedded), also ueber die GATE API. Hab ich zwar im Grossen und Ganzen auch bereits gekannt, allerdings waren einige echt wertvolle Tipps dabei (z.b.: beim Debuggen aus dem Programm heraus eine Instanz von der GATE GUI auzurufen, da kann man dann alles schoen mitverfolgen, wie der Programmcode ausgefuehrt wird).

Weiters - was auch fuer mich neu war - haben wir eine neue PR (Processing Ressource) implmentiert, und diese an die ANNIE Pipeline angehaengt. Und zwar war das ein sogenannter POSCounter (siehe Folder Tutorial, Klasse POSCounter, creole.xml), der alle Hauptwoerter in einem Satz zaehlt und diese Information zur Satz-Annotation dazuhaengt (den Sourcecode und alle restlichen Unterlagen werd ich hier hochladen). Diese Klasse wird abgeleitet von der Klasse AbstractLanguageAnalyser und ueberschreibt die Methode execute (siehe SourceCode). Dann muss man das Projekt bauen, um eine *.jar Datei zu erhalten. In den selben Folder erzeugt man dann eine Datei namens creole.xml (siehe Attachement). In der GATE Gui kann man dann dieses neue Plugin hinzufuegen (ganzen Ordner auswaehlen) und ab geht`s.

Am nachmittag gabs dann eine Session zu den JAPE Rules, wobei die Limitations der RHS (Right Hand Side) besprochen wurden, und es wurde gezeigt, wie man diese aufbohren kann mithilfe von Java. Hab ich im Prinzip auch gekannt, hab mich aber bewusst beim Beispiel ein bisschen doof angestellt, sodass mir im Gespraech einige Kniffe gezeigt wurden. Z.B. kann man irgendwo in der LHS einen Teil labeln, und diesen dann im Java Code ansprechen. In den Slides zu advanced JAPE ist am Schluss ein cooles Beispiel, dass so etwas verwendet.

Am Nachmittag wurde uns der Orthomatcher vorgestellt, dieser dient dazu, um co-references im Text zu erzeugen und verwalten.

Dann gab es noch eine kurze Session zu Evaluation, hier wurden generelle Metriken (Precision, Recall) vorgestellt, des weiteren wurde das Tool AnnotationDiff vorgestellt.





Tag 3 (29.07.2009)

Der heutige Tag hat mit dem Machine Learning Layer von GATE begonnen, war sehr cool, vielleicht sollten wir uns das mal genauer anschaun. Konkret haben wir mit ML Company Features annotiert (Name, Adresse, Anzahl der Angestellten, etc). Nachdem das System mit einem (in diesem Fall aus Zeitgruenden relativ kleinen) Trainingsset gefuettert wurde, und ein VSM (Vector Space Model) erstellt wurde, wurde dieses auf noch unbehadelte Dokumente losgelassen. Das funktionierte echt nicht schlecht....

2te Session war dann ueber Ontologien und semantische Annotationen mit Ontologien, wobei unter anderem ein GATE-interner Ontologie Editor gezeigt wurde, anhand dessen man quasi Ontologie-basierte Gazetteer auf Dokumente loslassen kann.

Am Abend war dann auch noch was sehr interessantes, das Tool ANNIC (Annotations in Context) wurdegezeigt. Hierzu muss man seinen (annotierten) Corpus in einem DataStore abspeichern, wobei dieser mithilfe von Lucene indexiert wird. Sinn des ganzen ist es, in diesem Dokumenten zu suchen, und zwar nicht nur nach dem Inhalt, auch auf einer abstrakteren Ebene (z.B.: Token). So ist zb folgende Abfrage moeglich>

{Token}{Organization=="ProKarriere"}({Token}*3)

Diese Ding gibt alle Textfragmente auf, wo zuerst ein beliebiger Token steht, dann eine Organization (und zwar die PK), und dann 1-3 weitere Tokens. Dieses Tool kann man vor allem zum testen und debuggen von JAPE Regeln verwenden, was ich von jetzt an bei komplexeren Regeln auch machen werde ;-)





Tag 4 (30.07.2009)

Der Tag hat gestartet mit einer langen (Demo-) Session ueber die GATE Teamware. Dies war zwar sehr interessant, aber ist erstens noch in der Entwicklungsphase, und zweitesn fuer unsere Zwecke nicht wirklich brauchbar. Im Groben geht es darum, Dokumente in einem Repositiry zur Verfuegung zu stellen, dort koennen sich dann Benutzer in den verschiedensten Rollen (annotator, curator, manager) einloggen um Tasks auszufuehren (zb manuell Dokumente annotieren, bzw annotierte Dokumente zu vergleichen, etc).

Die zweite Session war sehr interessant, da ging es um Opinion Mining. Konkret darum, aus geschriebenen Rezessionen von Benutzern einen "5-Star-Rating" (1 Stern == mies, 5 Sterne == superduper) zu bekommen. Klingt im ersten Moment nach einfachen Gazetteer abgleichen, die haben das aber mit Machine Learning geloest. Allerdings hat der Vortragende gesagt, um so eine Accuracy zu erreichen waren mehrere 100k Trainingdokumente notwendig. Dennoch ist der ML Ansatz etwas, dass wir uns speziell fuer Jobangebote ansehen koennen, eventuell vllt sogar als Vergleichsinstanz zum bisherigen System.

Am nachmittag war dann noch GATE + UIMA (IBM Implementierung eines aehnlichen Tools), war zwar interessant, aber nicht wirklich nuetzlich.

Die letzte Session hat gezeigt, wie man tun sollte, wenn man GATE in einer Webapplikation verwendet. Hier gab es einige nuetzliche Tips und Tricks, speziell im Umgang mit den Instanzen von PRs und dem Threadhandling.

Und das wichtigste, am Abend war das Social Buffet im Kelham Island Museum. War eine coole Location, in dem Stahl-museum, das Essen war gut, und zu trinken gabs auch reichlich ;-)





Tag 5 (31.07.2009)

Heute gings los mit dem Thema "Patent Processing". Es ging um advanced JAPE und das debuggen mit dem bereits oben beschriebenen Tool ANNIC (Annotations in Context). War wieder sehr nützlich.

Die zweite Session war mehr oder weniger eine Case Study über das sogenannte NeOn-Project, dabei gehts um Semtic Web und semantische Annotationen mit Ontologien. Dabei wurde die Applikation SARDINE gezeigt, eine Fisch-Ontologie (ja, tatsächlich ;-)). Es geht darum, in Dokumenten alles was die Fischerei in einer gewissen Region angeht zu analysieren, und dann zb vor Überfischung zu warnen.

Dann war was echt cooles. Ein NL-Interface an Ontologien für Abfragen in Dokumenten /Ontologien via GATE. Man stelt dem System eine Frage in natüricher Sprache, das Ganze wird von GATE in eine SPARQL Abfrage übersetz, an die Ontologie gegeben, und das Ergebnis dem Benutzer zurückgegeben. Hat erstaunlicherweise echt gut funktioniert.

Der Rest war dann nur noch ein wenig Rekapitulation bzw. Zukunftsaussichten. Und ich hab sogar ein Zertifikat bekommen ;-)





Fazit

Bis jetzt haben wir nur an der Oberfläche von GATE gekratzt, das Ding kann echt viel. Die (für uns) interessantesten Dinge, die wir uns auch ansehen sollten sind:



* ANNIC zum JAPE erstellen bzw Debuggen
* Machine Learning
* Morphological Analyser bzw
* Flexible Gazetteers
* Das Ganze Ontologie-Plugin (Editor, OntoGazetteer, ...)

1 Kommentar:

Unknown hat gesagt…

Great write-up! You're also right that we only scratched the surface! The new GATE training course format splits the material into multiple tracks and goes into more depth, with more opportunity for practice.

We also have a certification programme (we can negotiate some benefits for people who came to the summer school last year).

http://gate.ac.uk/conferences/fig/fig2.html