如何从java代码更改GATE中ANNIE资源的默认值?

如何从java代码更改GATE中ANNIE资源的默认值?,java,nlp,gate,Java,Nlp,Gate,在门内,ANNIE的默认值是在初始化期间设置的,但有时必须根据需要进行更改 我的要求:我想提取英语句子,不考虑“下一行字符”,而是考虑给出正确句子的“句号”。为此,我需要更改ANNIE中SentenceSplitter中transducerURL的默认值。 这可以通过两种方式实现: 使用ANNIE_with_defaults.gapp-更改Sentencesplitter中的initparams值并从java访问 Gate.setGateHome(new File(Configurati

在门内,ANNIE的默认值是在初始化期间设置的,但有时必须根据需要进行更改

我的要求:我想提取英语句子,不考虑“下一行字符”,而是考虑给出正确句子的“句号”。为此,我需要更改ANNIE中SentenceSplitter中transducerURL的默认值。 这可以通过两种方式实现:

  • 使用ANNIE_with_defaults.gapp-更改Sentencesplitter中的initparams值并从java访问

        Gate.setGateHome(new File(Configuration.GATE_HOME));                        
        Gate.init();
        // Load ANNIE with defaults from the plug-ins folder
        File pluginsHome = Gate.getPluginsHome();
        File anniePlugin = new File(pluginsHome, ANNIEConstants.PLUGIN_DIR);
        File annieGapp = new File(anniePlugin, ANNIEConstants.DEFAULT_FILE);
        annieController = (CorpusController) PersistenceManager.loadObjectFromFile(annieGapp);
    
  • 我无法在gapp文件中找到更改其值的位置。

  • 初始化GATE后,使用CreoleRegister访问ResourceData,并更改参数transducerURL的默认值,如下所示

    String resourceClassName = "gate.creole.splitter.SentenceSplitter";
            ResourceData resData = Gate.getCreoleRegister().get(resourceClassName);
            //System.out.println(resData.getParameterList());
            ParameterList params = resData.getParameterList();
            List<List<Parameter>> param =  params.getInitimeParameters();
            System.out.println(param);
            //System.out.println(param.get(0));
            for(List<Parameter> plist : param)
            {
                for(Parameter pm : plist)
                {
                    System.out.println("Name : "+pm.getName()+", "+pm.getDefaultValue());
                }
            }
    
    String resourceClassName=“gate.creole.splitter.SentenceSplitter”;
    ResourceData resData=Gate.getCreoleRegister().get(resourceClassName);
    //System.out.println(resData.getParameterList());
    ParameterList params=resData.getParameterList();
    List param=params.getInitimeParameters();
    系统输出打印项次(参数);
    //System.out.println(参数get(0));
    对于(列表plist:param)
    {
    用于(参数pm:plist)
    {
    System.out.println(“名称:“+pm.getName()+”,“+pm.getDefaultValue());
    }
    }
    
  • 但参数没有setDefaultvalue方法。

    如何解决这个问题


    欢迎任何帮助。我使用creole.xml解决了这个问题。我试过使用SentenceSplitter,但它给了我错误的句子。因此,我改用RegexSentenceSplitter。 在creole.xml中添加了几行-

    <RESOURCE>
        <CLASS>gate.creole.splitter.RegexSentenceSplitter</CLASS>
        <PARAMETER NAME="externalSplitListURL" DEFAULT="file:/C:/Program%20Files/GATE_Developer_8.1/plugins/ANNIE/resources/regex-splitter/external-split-patterns.txt" COMMENT="The URL to the custom external-split-patterns.txt" SUFFIXES="txt;text">java.net.URL</PARAMETER>
        <PARAMETER NAME="internalSplitListURL" DEFAULT="file:/C:/Program%20Files/GATE_Developer_8.1/plugins/ANNIE/resources/regex-splitter/internal-split-patterns.txt" COMMENT="The URL to the custom internal-split-patterns.txt" SUFFIXES="txt;text">java.net.URL</PARAMETER>
        <PARAMETER NAME="nonSplitListURL" DEFAULT="file:/C:/Program%20Files/GATE_Developer_8.1/plugins/ANNIE/resources/regex-splitter/non-split-patterns.txt" COMMENT="The URL to the custom non-split-patterns.txt" SUFFIXES="txt;text">java.net.URL</PARAMETER>
    </RESOURCE>
    
    
    gate.creole.splitter.RegexSentenceSplitter
    java.net.URL
    java.net.URL
    java.net.URL
    
    然后从后端代码用_defaults.gapp加载ANNIE_,如问题所示

    希望这可能会有帮助。