package ivory.lsh.bitext; import java.io.IOException; import java.io.InputStream; import opennlp.maxent.io.GISModelReader; import opennlp.model.AbstractModel; import opennlp.model.AbstractModelReader; import opennlp.model.DataReader; import opennlp.model.PlainTextFileDataReader; import opennlp.perceptron.PerceptronModelReader; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.log4j.Level; import org.apache.log4j.Logger; public class MoreGenericModelReader { private static final Logger sLogger = Logger.getLogger(MoreGenericModelReader.class); private AbstractModelReader delegateModelReader; public MoreGenericModelReader(String f, FileSystem localFs) throws IOException { this(new Path(f), localFs); } public MoreGenericModelReader(Path f, FileSystem localFs) throws IOException { sLogger.setLevel(Level.DEBUG); sLogger.debug(f); InputStream modelIn = localFs.open(f); sLogger.debug("input stream created: "+modelIn); DataReader reader = new PlainTextFileDataReader(modelIn); String modelType = reader.readUTF(); sLogger.debug("model type: "+modelType); if (modelType.equals("Perceptron")) { delegateModelReader = new PerceptronModelReader(reader); }else if (modelType.equals("GIS")) { delegateModelReader = new GISModelReader(reader); }else { throw new IOException("Unknown model format: "+modelType); } } public AbstractModel constructModel() throws IOException { return delegateModelReader.constructModel(); } }