java - GATE 加载处理资源/代词解析

标签 java gate

我正在尝试加载 pronomial coreference module使用 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();

执行 pipelineController 后,我尝试访问“MatchesAnnots”功能或任何其他功能,但收到一条错误消息:Coref 警告:未找到可处理的注释!。谁能指出我的错误方向?我不应该使用 pipelineController.setPRs() 吗?

最佳答案

您的代码几乎是正确的。 文档需要预处理,通常由 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"));
    }
}

关于java - GATE 加载处理资源/代词解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47623480/

相关文章:

java - 在 Java 中合并两个 Map 值,如果键相同,则附加在 Java 7 或 Java 8 中不会覆盖的值

java - 门Java错误

java - 如何在 JAPE 右侧制作 if-else 语句?

nlp - GATE 如何将本体用于 NLP?

java - 将 GATE 嵌入到 JAR 中以与 gatewayHome 一起使用

Java - 查找数组的平均值,同时排除特定值。

java - 我是否必须为序列图的每个类函数传递制定生命线?

java - 如何找到在字符串中至少出现两次且不重叠的任意两个字母对

java - 不循环并显示错误消息