in opennlp-tools/src/main/java/opennlp/tools/parser/AbstractContextGenerator.java [122:154]
protected void cons2(List<String> features, Cons c0, Cons c1, Collection<Parse> punct1s, boolean bigram) {
if (punct1s != null) {
for (Parse p : punct1s) {
String punctbo = punctbo(p, c1.index <= 0 ? c1.index - 1 : c1.index);
//punctbo(1);
features.add(punctbo);
if (c0.index == 0) { //TODO look at removing case
//cons(0)punctbo(1)
if (c0.unigram) features.add(c0.cons + "," + punctbo);
features.add(c0.consbo + "," + punctbo);
}
if (c1.index == 0) { //TODO look at removing case
//punctbo(1)cons(1)
if (c1.unigram) features.add(punctbo + "," + c1.cons);
features.add(punctbo + "," + c1.consbo);
}
//cons(0)punctbo(1)cons(1)
if (bigram) features.add(c0.cons + "," + punctbo + "," + c1.cons);
if (c1.unigram) features.add(c0.consbo + "," + punctbo + "," + c1.cons);
if (c0.unigram) features.add(c0.cons + "," + punctbo + "," + c1.consbo);
features.add(c0.consbo + "," + punctbo + "," + c1.consbo);
}
}
else {
//cons(0),cons(1)
if (bigram) features.add(c0.cons + "," + c1.cons);
if (c1.unigram) features.add(c0.consbo + "," + c1.cons);
if (c0.unigram) features.add(c0.cons + "," + c1.consbo);
features.add(c0.consbo + "," + c1.consbo);
}
}