in opennlp-coref/src/main/java/opennlp/tools/coref/sim/SimilarityModel.java [534:618]
private List<String> getFeatures(Context np1, Context np2) {
List<String> features = new ArrayList<>();
features.add("default");
// semantic categories
String w1 = np1.getHeadTokenText().toLowerCase();
String w2 = np2.getHeadTokenText().toLowerCase();
if (w1.compareTo(w2) < 0) {
features.add("ww=" + w1 + "," + w2);
}
else {
features.add("ww=" + w2 + "," + w1);
}
if (w1.equals(w2)) {
features.add("sameHead");
}
// features.add("tt="+np1.headTag+","+np2.headTag);
if (isName(np1)) {
if (isName(np2)) {
features.addAll(getNameNameFeatures(np1, np2));
}
else if (isCommonNoun(np2)) {
features.addAll(getNameCommonFeatures(np1, np2));
}
else if (isPronoun(np2)) {
features.addAll(getNamePronounFeatures(np1, np2));
}
else if (isNumber(np2)) {
features.addAll(getNameNumberFeatures(np1, np2));
}
}
else if (isCommonNoun(np1)) {
if (isName(np2)) {
features.addAll(getNameCommonFeatures(np2, np1));
}
else if (isCommonNoun(np2)) {
features.addAll(getCommonCommonFeatures(np1, np2));
}
else if (isPronoun(np2)) {
features.addAll(getCommonPronounFeatures(np1, np2));
}
else if (isNumber(np2)) {
features.addAll(getCommonNumberFeatures(np1, np2));
}
else {
logger.warn("unknown group for: {} -> {}", np1.headTokenText, np2.headTokenText);
}
}
else if (isPronoun(np1)) {
if (isName(np2)) {
features.addAll(getNamePronounFeatures(np2, np1));
}
else if (isCommonNoun(np2)) {
features.addAll(getCommonPronounFeatures(np2, np1));
}
else if (isPronoun(np2)) {
features.addAll(getPronounPronounFeatures(np1, np2));
}
else if (isNumber(np2)) {
features.addAll(getNumberPronounFeatures(np2, np1));
}
else {
logger.warn("unknown group for: {} -> {}", np1.headTokenText, np2.headTokenText);
}
}
else if (isNumber(np1)) {
if (isName(np2)) {
features.addAll(getNameNumberFeatures(np2, np1));
}
else if (isCommonNoun(np2)) {
features.addAll(getCommonNumberFeatures(np2, np1));
}
else if (isPronoun(np2)) {
features.addAll(getNumberPronounFeatures(np1, np2));
}
else if (isNumber(np2)) {
}
else {
logger.warn("unknown group for: {} -> {}", np1.headTokenText, np2.headTokenText);
}
}
else {
logger.warn("unknown group for: {}", np1.headTokenText);
}
return (features);
}