Search in sources :

Example 1 with Number

use of edu.stanford.nlp.dcoref.Dictionaries.Number in project CoreNLP by stanfordnlp.

the class Rules method entityAttributesAgree.

public static boolean entityAttributesAgree(CorefCluster mentionCluster, CorefCluster potentialAntecedent, boolean ignoreGender) {
    boolean hasExtraAnt = false;
    boolean hasExtraThis = false;
    // number
    if (!mentionCluster.numbers.contains(Number.UNKNOWN)) {
        for (Number n : potentialAntecedent.numbers) {
            if (n != Number.UNKNOWN && !mentionCluster.numbers.contains(n)) {
                hasExtraAnt = true;
                break;
            }
        }
    }
    if (!potentialAntecedent.numbers.contains(Number.UNKNOWN)) {
        for (Number n : mentionCluster.numbers) {
            if (n != Number.UNKNOWN && !potentialAntecedent.numbers.contains(n)) {
                hasExtraThis = true;
                break;
            }
        }
    }
    if (hasExtraAnt && hasExtraThis)
        return false;
    // gender
    hasExtraAnt = false;
    hasExtraThis = false;
    if (!ignoreGender) {
        if (!mentionCluster.genders.contains(Gender.UNKNOWN)) {
            for (Gender g : potentialAntecedent.genders) {
                if (g != Gender.UNKNOWN && !mentionCluster.genders.contains(g)) {
                    hasExtraAnt = true;
                    break;
                }
            }
        }
        if (!potentialAntecedent.genders.contains(Gender.UNKNOWN)) {
            for (Gender g : mentionCluster.genders) {
                if (g != Gender.UNKNOWN && !potentialAntecedent.genders.contains(g)) {
                    hasExtraThis = true;
                    break;
                }
            }
        }
    }
    if (hasExtraAnt && hasExtraThis)
        return false;
    // animacy
    hasExtraAnt = false;
    hasExtraThis = false;
    if (!mentionCluster.animacies.contains(Animacy.UNKNOWN)) {
        for (Animacy a : potentialAntecedent.animacies) {
            if (a != Animacy.UNKNOWN && !mentionCluster.animacies.contains(a)) {
                hasExtraAnt = true;
                break;
            }
        }
    }
    if (!potentialAntecedent.animacies.contains(Animacy.UNKNOWN)) {
        for (Animacy a : mentionCluster.animacies) {
            if (a != Animacy.UNKNOWN && !potentialAntecedent.animacies.contains(a)) {
                hasExtraThis = true;
                break;
            }
        }
    }
    if (hasExtraAnt && hasExtraThis)
        return false;
    // NE type
    hasExtraAnt = false;
    hasExtraThis = false;
    if (!mentionCluster.nerStrings.contains("O") && !mentionCluster.nerStrings.contains("MISC")) {
        for (String ne : potentialAntecedent.nerStrings) {
            if (!ne.equals("O") && !ne.equals("MISC") && !mentionCluster.nerStrings.contains(ne)) {
                hasExtraAnt = true;
                break;
            }
        }
    }
    if (!potentialAntecedent.nerStrings.contains("O") && !potentialAntecedent.nerStrings.contains("MISC")) {
        for (String ne : mentionCluster.nerStrings) {
            if (!ne.equals("O") && !ne.equals("MISC") && !potentialAntecedent.nerStrings.contains(ne)) {
                hasExtraThis = true;
                break;
            }
        }
    }
    return !(hasExtraAnt && hasExtraThis);
}
Also used : Animacy(edu.stanford.nlp.dcoref.Dictionaries.Animacy) Number(edu.stanford.nlp.dcoref.Dictionaries.Number) Gender(edu.stanford.nlp.dcoref.Dictionaries.Gender)

Aggregations

Animacy (edu.stanford.nlp.dcoref.Dictionaries.Animacy)1 Gender (edu.stanford.nlp.dcoref.Dictionaries.Gender)1 Number (edu.stanford.nlp.dcoref.Dictionaries.Number)1