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();


Reply via email to