Frage

Ich habe kürzlich von uima (http://uima.apache.org/). Es sieht vielversprechend für einfache NLP-Aufgaben wie Tokenisierung, Satzaufteilung, Spezifikmagging usw. aus usw.

Ich habe es geschafft, ein bereits konfiguriertes minimales Java -Sample in die Hände zu bekommen, bei dem OpenNLP -Komponenten für seine Pipeline verwendet werden.

Der Code sieht so aus:

public void ApplyPipeline() throws IOException, InvalidXMLException,
        ResourceInitializationException, AnalysisEngineProcessException {

    XMLInputSource in = new XMLInputSource(
            "opennlp/OpenNlpTextAnalyzer.xml");
    ResourceSpecifier specifier = UIMAFramework.getXMLParser()
            .parseResourceSpecifier(in);

    AnalysisEngine ae = UIMAFramework.produceAnalysisEngine(specifier);

    JCas jcas = ae.newJCas();
    jcas.setDocumentText("This is my text.");

    ae.process(jcas);
    this.doSomethingWithResults(jcas);

    jcas.reset();
    ae.destroy();
}

private void doSomethingWithResults(JCas jcas) {
    AnnotationIndex<Annotation> idx = jcas.getAnnotationIndex();
    FSIterator<Annotation> it = idx.iterator();

    while (it.hasNext()) {
        System.out.println(it.next().toString());
    }

}

Auszug aus openNlptextanalyzer.xml:

<delegateAnalysisEngine key="SentenceDetector">
    <import location="SentenceDetector.xml" />
</delegateAnalysisEngine>
<delegateAnalysisEngine key="Tokenizer">
    <import location="Tokenizer.xml" />
</delegateAnalysisEngine>

Der Java -Code erzeugt eine solche Ausgabe:

Token
   sofa: _InitialView
   begin: 426
   end: 435
   pos: "NNP"

Ich versuche, die gleichen Informationen von jedem Annotationsobjekt zu erhalten, das die Methode toString () verwendet. Ich habe bereits den Quellcode von UIMA untersucht, um zu verstehen, woher die Werte stammen. Meine Versuche, sie abzurufen, funktioniert, aber sie sind in keiner Weise schlau.

Ich kämpfe darum, einfache Beispiele zu finden, die Informationen aus den JCAS -Objekten herausholen.

Ich suche nach einer Möglichkeit, zum Beispiel alle Annotationen zu erhalten, die von meiner Postbringung oder beim Sätzen für die weitere Verwendung produziert werden.

ich vermute

List<Feature> feats = it.next().getType().getFeatures();

ist ein Start, um Werte zu erhalten, aber aufgrund von UIMA besitzt auch der Klassen für primitive Typen, selbst der Quellcode der ToString -Methode in der Annotationsklasse liest sich wie ein Schlag ins Gesicht.

Wo finde ich Java -Code, der grundlegende UIMA -Sachen verwendet, und wo sind gute Tutorials (außer Javadoc aus dem Framework selbst)?

War es hilfreich?

Lösung

Generieren Sie JCAS -Wrapper -Klassen für Ihre Annotationstypen (Sie können dies mit dem Typ -System -Editor -UIMA -Plugin für Eclipse tun, der mit UIMA geliefert wird). Auf diese Weise erhalten Sie Java -Kurse, mit denen Sie auf die Anmerkungen zugreifen können - diese bieten Getter und Setter für Funktionen.

Sie sollten sich ansehen uimafit, die eine bequemere API bietet, einschließlich Convenience -Methoden zum Abrufen von Annotationen aus den JCAS, z.

Sie könnten schnell starten finden Groovy -Skripte und eine Sammlung von UIMA -Komponenten auf der DKPRO -Kern Seite.

Es gibt Material aus dem UIMA@GSCL 2013 -Tutorial (Folien und Beispielcode), das für Sie möglicherweise nützlich sein könnte. gehen hier und scrollen Sie nach "Tutorial".

Offenlegung: Ich bin Entwickler von UIMA, UIMAFIT, DKPRO CORE und Co-Organizer auf dem UIMA@GSCL 2013 Workshop.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top