package rainbownlp.machinelearning.featurecalculator; import java.util.ArrayList; import java.util.List; import rainbownlp.core.Artifact; public class FeatureCalculatorUtil { public static List<String> getNGramBefore(Artifact startArtifact, int n) { ArrayList<String> ngrams = new ArrayList<String>(); int stepRemained = n; Artifact curArtifact = startArtifact.getPreviousArtifact(); String curInclusiveString = startArtifact.getContent(); while(stepRemained > 0 && curArtifact != null) { String curContent = curArtifact.getContent().trim(); if(curContent.equals("")) continue; curInclusiveString = curContent + "_" + curInclusiveString; String jumpString = curContent+"_"+startArtifact.getContent(); curArtifact = curArtifact.getPreviousArtifact(); stepRemained--; ngrams.add(curInclusiveString); ngrams.add(jumpString); } return ngrams; } public static List<String> getNGramAfter(Artifact endArtifact, int n) { ArrayList<String> ngrams = new ArrayList<String>(); int stepRemained = n; Artifact curArtifact = endArtifact.getNextArtifact(); String curInclusiveString = endArtifact.getContent(); while(stepRemained > 0 && curArtifact != null) { String curContent = curArtifact.getContent().trim(); if(curContent.equals("")) continue; curInclusiveString += "_" + curContent; String jumpString = endArtifact.getContent() + "_" + curContent; curArtifact = curArtifact.getNextArtifact(); stepRemained--; ngrams.add(curInclusiveString); ngrams.add(jumpString); } return ngrams; } }