GATE Загрузка ресурсов обработки / Разрешение местоимений

Я пытаюсь загрузить модуль pronomial coreference используя ANNIE (на Java), но у меня возникают проблемы со следующим кодом:

FeatureMap params = Factory.newFeatureMap();

params.put("resolveIt", "true");
ProcessingResource coref = (ProcessingResource) Factory.createResource("gate.creole.coref.Coreferencer", params);
Collection<ProcessingResource> processingResources = new ArrayList<ProcessingResource>();
processingResources.add(coref);
pipelineController.setPRs(processingResources);

params.clear();
params.put("sourceUrl", url); # this is the url of a test document
params.put("collectRepositioningInfo", new Boolean(true));
Document doc = (Document) Factory.createResource("gate.corpora.DocumentImpl", params);
corpus.add(doc);

pipelineController.setCorpus(corpus);
pipelineController.execute();

После выполнения pipeController я пытаюсь получить доступ к функции "MatchesAnnots" или любой другой функции, но получаю сообщение об ошибке Coref Warning: Аннотации для обработки не найдены!. Может ли кто-нибудь указать мне направление моей ошибки? Не следует ли мне использовать pipeController.setPRs()?


person Anne Rose    schedule 03.12.2017    source источник


Ответы (1)


Ваш код почти правильный. Документ нуждается в предварительной обработке, обычно выполняемой приложением ANNIE GATE. Вот почему он жалуется на «Аннотации для обработки не найдены!».

В приведенном ниже коде я сначала загружаю ANNIE, а затем добавляю Coreferencer в качестве последнего PR.

import java.io.File;
import gate.*;
import gate.creole.ConditionalSerialAnalyserController;
import gate.util.persistence.PersistenceManager;

public class CoreferencerTest {
    public static void main(String[] args) throws Exception {
        Gate.setGateHome(new File("C:\\Program Files\\GATE_Developer_8.4"));
        Gate.init();

        //load ANNIE GATE app
        Object gapp = PersistenceManager.loadObjectFromFile(
                new File(Gate.getPluginsHome(), "ANNIE/ANNIE_with_defaults.gapp"));
        ConditionalSerialAnalyserController pipelineController = (ConditionalSerialAnalyserController) gapp;

        //add Coreferencer to the end of ANNIE
        ProcessingResource coref = (ProcessingResource) Factory.createResource(
                "gate.creole.coref.Coreferencer", Utils.featureMap("resolveIt", true));
        pipelineController.add(coref);


        //execute it
        Corpus corpus = Factory.newCorpus("corpus name");
        Document doc = Factory.newDocument("Peter was driving his car.");
        corpus.add(doc);
        pipelineController.setCorpus(corpus);
        pipelineController.execute();

        //see the result
        System.err.println(doc.getFeatures().get("MatchesAnnots"));
    }
}
person dedek    schedule 04.12.2017