从 Java 代码更改 GATE 中 ANNIE 资源的默认值

数据挖掘 nlp 爪哇
2021-10-05 08:13:21

在 GATE 中,ANNIE 的默认值是在初始化期间设置的,但有时根据要求必须更改它们。

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

  1. 使用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 文件中找到更改其值的位置。

  1. 初始化 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());
         }
     }
    

但是 Parameter 没有setDefaultvalue方法。

我怎样才能解决这个问题?

2个回答

对于任何这些情况,最好的方法是使用 GATE Developer 根据需要构建应用程序,“保存应用程序状态”以创建您自己的自定义 gapp 文件,然后将新的 gapp 传递给PersistenceManager而不是加载标准的ANNIE_with_defaults.

我通过使用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>

然后从后端代码加载ANNIE_with_defaults.gapp,如问题所示。

希望它可能会有所帮助。