You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@opennlp.apache.org by jo...@apache.org on 2014/03/27 15:30:07 UTC

svn commit: r1582319 - in /opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser: ParserTrainerTool.java TrainingParams.java

Author: joern
Date: Thu Mar 27 14:30:07 2014
New Revision: 1582319

URL: http://svn.apache.org/r1582319
Log:
OPENNLP-665 Added option to cmd line tool to specifiy head rules serializer class.

Modified:
    opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/ParserTrainerTool.java
    opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/TrainingParams.java

Modified: opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/ParserTrainerTool.java
URL: http://svn.apache.org/viewvc/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/ParserTrainerTool.java?rev=1582319&r1=1582318&r2=1582319&view=diff
==============================================================================
--- opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/ParserTrainerTool.java (original)
+++ opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/ParserTrainerTool.java Thu Mar 27 14:30:07 2014
@@ -36,6 +36,8 @@ import opennlp.tools.parser.ParserModel;
 import opennlp.tools.parser.ParserType;
 import opennlp.tools.parser.chunking.Parser;
 import opennlp.tools.util.ObjectStream;
+import opennlp.tools.util.ext.ExtensionLoader;
+import opennlp.tools.util.model.ArtifactSerializer;
 import opennlp.tools.util.model.ModelUtil;
 
 public final class ParserTrainerTool extends AbstractTrainerTool<Parse, TrainerToolParams> {
@@ -80,6 +82,31 @@ public final class ParserTrainerTool ext
     return type;
   }
   
+  static HeadRules creaeHeadRules(TrainerToolParams params) throws IOException {
+    
+    ArtifactSerializer headRulesSerializer = null;
+    
+    if (params.getHeadRulesSerializerImpl() != null) {
+      headRulesSerializer = ExtensionLoader.instantiateExtension(ArtifactSerializer.class, 
+              params.getHeadRulesSerializerImpl());
+    }
+    else {
+      // TODO: Use default, e.g. based on language 
+      // language can be specified in the params ... 
+      
+      headRulesSerializer = new opennlp.tools.parser.lang.en.HeadRules.HeadRulesSerializer();
+    }
+    
+    Object headRulesObject = headRulesSerializer.create(new FileInputStream(params.getHeadRules()));
+    
+    if (headRulesObject instanceof HeadRules) {
+      return (HeadRules) headRulesObject;
+    }
+    else {
+      throw new TerminateToolException(-1, "HeadRules Artifact Serializer must create an object of type HeadRules!");
+    }
+  }
+  
   // TODO: Add param to train tree insert parser
   public void run(String format, String[] args) {
     super.run(format, args);
@@ -117,11 +144,7 @@ public final class ParserTrainerTool ext
     
     ParserModel model;
     try {
-
-      // TODO hard-coded language reference
-      HeadRules rules = new opennlp.tools.parser.lang.en.HeadRules(
-          new InputStreamReader(new FileInputStream(params.getHeadRules()),
-              params.getEncoding()));
+      HeadRules rules = creaeHeadRules(params);
       
       ParserType type = parseParserType(params.getParserType());
       if(params.getFun()){

Modified: opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/TrainingParams.java
URL: http://svn.apache.org/viewvc/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/TrainingParams.java?rev=1582319&r1=1582318&r2=1582319&view=diff
==============================================================================
--- opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/TrainingParams.java (original)
+++ opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/TrainingParams.java Thu Mar 27 14:30:07 2014
@@ -35,6 +35,10 @@ interface TrainingParams extends BasicTr
   @OptionalParameter(defaultValue = "CHUNKING")
   String getParserType();
   
+
+  @ParameterDescription(valueName = "className", description = "head rules artifact serializer class name")
+  @OptionalParameter
+  String getHeadRulesSerializerImpl();
   
   @ParameterDescription(valueName = "headRulesFile", description = "head rules file.")
   File getHeadRules();