Log in Help
Print
HomewikiTrainingCourseJune2019developers 〉 Main.java
 
package module8.part1;

import gate.*;
import gate.creole.Plugin;
import gate.creole.ResourceReference;
import gate.gui.MainFrame;
import gate.util.persistence.PersistenceManager;

import javax.swing.*;
import java.io.File;
import java.net.URL;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
// other imports go here


public class Main {
  public static void main(String... args) throws Exception {
    Gate.init();

    //SwingUtilities.invokeAndWait(() -> MainFrame.getInstance().setVisible(true));

    System.out.println("Loading ANNIE plugin");
    Plugin.Maven annie = new Plugin.Maven("uk.ac.gate.plugins", "annie", "8.6");
    Gate.getCreoleRegister().registerPlugin(annie);

    System.out.println("Loading ANNIE app");
    ResourceReference annieApp = new ResourceReference(annie, "resources/ANNIE_with_defaults.gapp");
    CorpusController annieController = (CorpusController)PersistenceManager.loadObjectFromUri(annieApp.toURI());

    System.out.println("Loading GATE homepage");
    Document doc = Factory.newDocument(new URL("https://gate.ac.uk"), "UTF-8");

    Corpus corpus = Factory.newCorpus("Test corpus");
    corpus.add(doc);

    System.out.println("Running ANNIE");
    annieController.setCorpus(corpus);
    annieController.execute();

    Set<String> annTypes = doc.getAnnotations().getAllTypes();
    for(String type : annTypes) {
      doc.getAnnotations().get(type).forEach((a) -> {
        System.out.println(type + ": " + Utils.stringFor(doc, a));
      });
    }

    Plugin.Maven jsonPlugin = new Plugin.Maven("uk.ac.gate.plugins", "format-json", "8.6");
    Gate.getCreoleRegister().registerPlugin(jsonPlugin);

    DocumentExporter jsonExporter = DocumentExporter.getInstance("gate.corpora.export.GATEJsonExporter");
    jsonExporter.export(doc, new File("export.json"), Utils.featureMap(
            "annotationTypes", new HashSet<String>(Arrays.asList("Person", "Location", "Organization"))
    ));
  }
}