*/
private void test(TaggerConfig config, String saveRoot) throws IOException {
numSentences = 0;
String eosTag = "EOS";
String eosWord = "EOS";
PrintFile pf = null;
PrintFile pf1 = null;
PrintFile pf3 = null;
if(writeWords) pf = new PrintFile(saveRoot + ".words");
if(writeUnknDict) pf1 = new PrintFile(saveRoot + ".un.dict");
if(writeTopWords) pf3 = new PrintFile(saveRoot + ".words.top");
TreeReaderFactory trf = new LabeledScoredTreeReaderFactory();
DiskTreebank treebank = new DiskTreebank(trf,config.getEncoding());
TreeTransformer transformer = config.getTreeTransformer();
TreeNormalizer normalizer = config.getTreeNormalizer();
if (config.getTreeRange() != null) {
treebank.loadPath(filename, new NumberRangesFileFilter(config.getTreeRange(), true));
} else {
treebank.loadPath(filename);
}
for (Tree t : treebank) {
if (normalizer != null) {
t = normalizer.normalizeWholeTree(t, t.treeFactory());
}
if (transformer != null) {
t = t.transform(transformer);
}
List<String> sentence = new ArrayList<String>();
List<String> tagsArr = new ArrayList<String>();
for (TaggedWord cur : t.taggedYield()) {
tagsArr.add(cur.tag());
sentence.add(cur.word());
}
//the sentence is read already, add eos
sentence.add(eosWord);
tagsArr.add(eosTag);
numSentences++;
int len = sentence.size();
String[] testSent = new String[len];
String[] correctTags = new String[len];
for (int i = 0; i < len; i++) {
testSent[i] = sentence.get(i);
correctTags[i] = tagsArr.get(i);
}
TestSentence testS = new TestSentence(GlobalHolder.getLambdaSolve(), testSent, correctTags, pf, wrongWords);
if (writeUnknDict) testS.printUnknown(numSentences, pf1);
if (writeTopWords) testS.printTop(pf3);
numWrong = numWrong + testS.numWrong;
numRight = numRight + testS.numRight;
unknownWords = unknownWords + testS.numUnknown;
numWrongUnknown = numWrongUnknown + testS.numWrongUnknown;
if (testS.numWrong == 0) {
numCorrectSentences++;
}
System.out.println("Sentence number: " + numSentences + "; length " + (len-1) + "; correct: " + testS.numRight + "; wrong: " + testS.numWrong + "; unknown wrong: " + testS.numWrongUnknown);
System.out.println(" Total tags correct: " + numRight + "; wrong: " + numWrong + "; unknown wrong: " + numWrongUnknown);
}
if(pf != null) pf.close();
if(pf1 != null) pf1.close();
if(pf3 != null) pf3.close();
}