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")) )); } }