package ir.ac.iust.nlp.dependencyparser.training; import ir.ac.iust.nlp.dependencyparser.BasePanel; import ir.ac.iust.nlp.dependencyparser.DependencyParser; import ir.ac.iust.nlp.dependencyparser.utility.enumeration.Flowchart; import ir.ac.iust.nlp.dependencyparser.utility.enumeration.ParserType; import ir.ac.iust.nlp.dependencyparser.utility.parsing.*; import java.io.BufferedReader; import java.io.File; import java.io.InputStreamReader; import java.io.PrintStream; /** * * @author Mojtaba Khallash */ public class RunnableTrain implements Runnable { BasePanel target; ParserType type; PrintStream out = System.out; Settings settings; public RunnableTrain(BasePanel target, ParserType type, PrintStream out, Settings settings) { this.target = target; this.type = type; if (out != null) { this.out = out; } this.settings = settings; } @Override public void run() { settings.Chart = Flowchart.Train; try { switch(type) { case MaltParser: runMalt(); break; case MSTParser: runMST(); break; case MateTools: runMate(); break; case ClearParser: runClear(); break; } } catch (Exception e) { } finally { if (target != null) { target.threadFinished(); } } } private void runMalt() throws Exception { MaltSettings st = new MaltSettings((MaltSettings)settings); Process p = null; try { st.preProcess(); String ram = ""; if (DependencyParser.maxRam.length() > 0) { ram += "-Xmx" + DependencyParser.maxRam + " "; } if (DependencyParser.minRam.length() > 0) { ram += "-Xms" + DependencyParser.minRam + " "; } p = Runtime.getRuntime().exec("java " + ram + "-jar lib" + File.separator + "maltParser.jar " + st.getTrainParameters1()); BufferedReader stdError = new BufferedReader(new InputStreamReader( p.getErrorStream())); BufferedReader stdIn = new BufferedReader(new InputStreamReader( p.getInputStream())); String s; while ((s = stdError.readLine()) != null) { out.println(s); } while ((s = stdIn.readLine()) != null) { out.println(s); } } finally { if (p != null) { p.destroy(); } st.postProcess(); } } private void runMST() throws Exception { MSTSettings st = new MSTSettings((MSTSettings)settings); mstparser.DependencyParser.out = out; mstparser.DependencyParser.main(st.getParameters()); } private void runMate() throws Exception { MateSettings st = (MateSettings)settings; is2.parser.Parser.out = out; is2.parser.Parser.main(st.getParameters()); } private void runClear() throws Exception { ClearSettings st = (ClearSettings)settings; clear.engine.DepTrain.out = out; clear.engine.DepTrain.main(st.getParameters()); } }