package ir.ac.iust.nlp.dependencyparser.utility.parsing;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import org.apache.commons.io.FileUtils;
/**
*
* @author Mojtaba Khallash
*/
public class MSTStackSettings extends MSTSettings {
// 0 or 1
public int Level;
public int AugmentNParts = 5;
public String AugmentedTrainFile;
// Stack Features
public boolean UsePredEdge = true;
public boolean UsePrevSibling = true;
public boolean UseNextSibling = true;
public boolean UseGrandParents = true;
public boolean UseAllchildren = true;
public boolean UsePredHead = true;
public boolean UseValency = true;
public MSTStackSettings() {}
public MSTStackSettings(MSTStackSettings settings) {
super(settings);
this.Level = settings.Level;
this.AugmentNParts = settings.AugmentNParts;
this.UsePredEdge = settings.UsePredEdge;
this.UsePrevSibling = settings.UsePrevSibling;
this.UseNextSibling = settings.UseNextSibling;
this.UseGrandParents = settings.UseGrandParents;
this.UseAllchildren = settings.UseAllchildren;
this.UsePredHead = settings.UsePredHead;
this.UseValency = settings.UseValency;
}
@Override
protected String[] getTrainParameters() {
List<String> pars = new LinkedList<>(Arrays.asList(super.getTrainParameters()));
pars.add("stacked-level" + Level);
if (Level == 0) {
pars.add("augment-nparts:" + AugmentNParts);
pars.add("output-file:" + AugmentedTrainFile);
}
else if (Level == 1) {
pars.add("stackedfeat-pred-edge:" + (UsePredEdge == true ? "1" : "0"));
pars.add("stackedfeat-prev-sibl:" + (UsePrevSibling == true ? "1" : "0"));
pars.add("stackedfeat-next-sibl:" + (UseNextSibling == true ? "1" : "0"));
pars.add("stackedfeat-grandparents:" + (UseGrandParents == true ? "1" : "0"));
pars.add("stackedfeat-allchildren:" + (UseAllchildren == true ? "1" : "0"));
pars.add("stackedfeat-pred-head:" + (UsePredHead == true ? "1" : "0"));
pars.add("stackedfeat-valency:" + (UseValency == true ? "1" : "0"));
}
return pars.toArray(new String[0]);
}
@Override
protected String[] getTestParameters() {
List<String> pars = new LinkedList<>(Arrays.asList(super.getTestParameters()));
pars.add("stacked-level" + Level);
if (Level == 1) {
pars.add("stackedfeat-pred-edge:" + (UsePredEdge == true ? "1" : "0"));
pars.add("stackedfeat-prev-sibl:" + (UsePrevSibling == true ? "1" : "0"));
pars.add("stackedfeat-next-sibl:" + (UseNextSibling == true ? "1" : "0"));
pars.add("stackedfeat-grandparents:" + (UseGrandParents == true ? "1" : "0"));
pars.add("stackedfeat-allchildren:" + (UseAllchildren == true ? "1" : "0"));
pars.add("stackedfeat-pred-head:" + (UsePredHead == true ? "1" : "0"));
pars.add("stackedfeat-valency:" + (UseValency == true ? "1" : "0"));
}
return pars.toArray(new String[0]);
}
public void preProcess() throws IOException {
switch (Chart) {
case Parse:
Input = Gold;
break;
}
}
public void postProcess() throws IOException {
switch (Chart) {
case Parse:
File model = new File(Model);
if (model != null) {
FileUtils.forceDelete(model);
}
break;
}
}
}