Skip to content

Commit

Permalink
More cleanup and use of String switch; closes stanfordnlp#543
Browse files Browse the repository at this point in the history
  • Loading branch information
manning authored and Stanford NLP committed Nov 2, 2017
1 parent b81597f commit 5d9a781
Show file tree
Hide file tree
Showing 5 changed files with 166 additions and 130 deletions.
140 changes: 79 additions & 61 deletions src/edu/stanford/nlp/coref/data/Mention.java
Original file line number Diff line number Diff line change
Expand Up @@ -145,8 +145,8 @@ public Mention(int mentionID, int startIndex, int endIndex, List<CoreLabel> sent
// Mention is identified as being this speaker....
public SpeakerInfo speakerInfo;

transient private String spanString = null;
transient private String lowercaseNormalizedSpanString = null;
private transient String spanString = null;
private transient String lowercaseNormalizedSpanString = null;

public IntCounter<Integer> antecedentOrdering = new IntCounter<>();

Expand Down Expand Up @@ -303,16 +303,17 @@ private Gender getGender(Dictionaries dict, List<String> mStr) {
List<String> convertedStr = new ArrayList<>(2);
convertedStr.add(mStr.get(firstNameIdx));
convertedStr.add("!");
if(dict.genderNumber.containsKey(convertedStr)) return dict.genderNumber.get(convertedStr);
if (dict.genderNumber.containsKey(convertedStr)) return dict.genderNumber.get(convertedStr);

if(dict.genderNumber.containsKey(mStr.subList(firstNameIdx, firstNameIdx+1))) return dict.genderNumber.get(mStr.subList(firstNameIdx, firstNameIdx+1));
if (dict.genderNumber.containsKey(mStr.subList(firstNameIdx, firstNameIdx+1))) return dict.genderNumber.get(mStr.subList(firstNameIdx, firstNameIdx+1));
}

if(mStr.size() > 0 && dict.genderNumber.containsKey(mStr.subList(len-1, len))) return dict.genderNumber.get(mStr.subList(len-1, len));
if (mStr.size() > 0 && dict.genderNumber.containsKey(mStr.subList(len-1, len))) return dict.genderNumber.get(mStr.subList(len-1, len));
return null;
}

private void setDiscourse() {
// utter = headWord.get(CoreAnnotations.UtteranceAnnotation.class);
// utter = headWord.get(CoreAnnotations.UtteranceAnnotation.class);

Pair<IndexedWord, String> verbDependency = findDependentVerb(this);
String dep = verbDependency.second();
Expand All @@ -323,24 +324,29 @@ private void setDiscourse() {
isIndirectObject = false;
isPrepositionObject = false;

if(dep==null) {
return;
} else if(dep.equals("nsubj") || dep.equals("csubj")) {
isSubject = true;
} else if(dep.equals("dobj") || dep.equals("nsubjpass")){
isDirectObject = true;
} else switch(dep) {
case "iobj" :
isIndirectObject = true;
break;
default :
if(dep.startsWith("nmod")
&& ! dep.equals("nmod:npmod")
&& ! dep.equals("nmod:tmod")
&& ! dep.equals("nmod:poss")
&& ! dep.equals("nmod:agent")) {
isPrepositionObject = true;
}
if (dep != null) {
switch(dep) {
case "nsubj":
case "csubj":
isSubject = true;
break;
case "dobj":
case "nsubjpass":
case "nsubj:pass":
isDirectObject = true;
break;
case "iobj":
isIndirectObject = true;
break;
default:
if (dep.startsWith("nmod")
&& !dep.equals("nmod:npmod")
&& !dep.equals("nmod:tmod")
&& !dep.equals("nmod:poss")
&& !dep.equals("nmod:agent")) {
isPrepositionObject = true;
}
}
}
}

Expand Down Expand Up @@ -627,54 +633,66 @@ private void setAnimacy(Dictionaries dict) {
} else {
animacy = Animacy.UNKNOWN;
}
} else if (nerString.equals("PERSON") || nerString.startsWith("PER")) {
animacy = Animacy.ANIMATE;
} else if (nerString.equals("LOCATION")|| nerString.startsWith("LOC")) {
animacy = Animacy.INANIMATE;
} else switch(nerString) {
case "MONEY" :
animacy = Animacy.INANIMATE;
break;
case "NUMBER" :
animacy = Animacy.INANIMATE;
break;
case "PERCENT" :
animacy = Animacy.INANIMATE;
break;
case "DATE" :
animacy = Animacy.INANIMATE;
break;
case "TIME" :
animacy = Animacy.INANIMATE;
break;
case "MISC" :
animacy = Animacy.UNKNOWN;
break;
default :
if (nerString.startsWith("VEH")) {
} else {
switch(nerString) {
case "PERSON":
case "PER":
case "PERS":
animacy = Animacy.ANIMATE;
break;
case "LOCATION":
case "LOC":
animacy = Animacy.INANIMATE;
break;
case "MONEY":
animacy = Animacy.INANIMATE;
break;
case "NUMBER":
animacy = Animacy.INANIMATE;
break;
case "PERCENT":
animacy = Animacy.INANIMATE;
break;
case "DATE":
animacy = Animacy.INANIMATE;
break;
case "TIME":
animacy = Animacy.INANIMATE;
break;
case "MISC":
animacy = Animacy.UNKNOWN;
break;
case "VEH":
case "VEHICLE":
animacy = Animacy.UNKNOWN;
} else if (nerString.startsWith("FAC")) {
break;
case "FAC":
case "FACILITY":
animacy = Animacy.INANIMATE;
} else if (nerString.startsWith("GPE")) {
break;
case "GPE":
animacy = Animacy.INANIMATE;
} else if (nerString.startsWith("WEA")) {
break;
case "WEA":
case "WEAPON":
animacy = Animacy.INANIMATE;
} else if (nerString.startsWith("ORG")) {
break;
case "ORG":
case "ORGANIZATION":
animacy = Animacy.INANIMATE;
} else {
break;
default:
animacy = Animacy.UNKNOWN;
}
}
if(mentionType != MentionType.PRONOMINAL) {
}
// Better heuristics using DekangLin:
if(animacy == Animacy.UNKNOWN) {
if(dict.animateWords.contains(headString)) {
if (animacy == Animacy.UNKNOWN) {
if (dict.animateWords.contains(headString)) {
animacy = Animacy.ANIMATE;
}
else if(dict.inanimateWords.contains(headString)) {
} else if (dict.inanimateWords.contains(headString)) {
animacy = Animacy.INANIMATE;
}
}

}
}

Expand Down
131 changes: 75 additions & 56 deletions src/edu/stanford/nlp/dcoref/Mention.java
Original file line number Diff line number Diff line change
Expand Up @@ -308,6 +308,7 @@ private Gender getGender(Dictionaries dict, List<String> mStr) {
if(mStr.size() > 0 && dict.genderNumber.containsKey(mStr.subList(len-1, len))) return dict.genderNumber.get(mStr.subList(len-1, len));
return null;
}

private void setDiscourse() {
utter = headWord.get(CoreAnnotations.UtteranceAnnotation.class);

Expand All @@ -320,28 +321,33 @@ private void setDiscourse() {
isIndirectObject = false;
isPrepositionObject = false;

if(dep==null) {
return;
} else if(dep.equals("nsubj") || dep.equals("csubj")) {
isSubject = true;
} else switch(dep) {
case "dobj" :
isDirectObject = true;
break;
case "iobj" :
isIndirectObject = true;
break;
default :
if(dep.startsWith("nmod")
&& ! dep.equals("nmod:npmod")
&& ! dep.equals("nmod:tmod")
&& ! dep.equals("nmod:poss")
&& ! dep.equals("nmod:agent")) {
isPrepositionObject = true;
}
if (dep != null) {
switch(dep) {
case "nsubj":
case "csubj":
isSubject = true;
break;
case "dobj":
case "nsubjpass":
case "nsubj:pass":
isDirectObject = true;
break;
case "iobj":
isIndirectObject = true;
break;
default:
if (dep.startsWith("nmod")
&& !dep.equals("nmod:npmod")
&& !dep.equals("nmod:tmod")
&& !dep.equals("nmod:poss")
&& !dep.equals("nmod:agent")) {
isPrepositionObject = true;
}
}
}
}


private void setPerson(Dictionaries dict) {
// only do for pronoun
if(!this.isPronominal()) person = Person.UNKNOWN;
Expand Down Expand Up @@ -619,53 +625,65 @@ private void setAnimacy(Dictionaries dict) {
} else {
animacy = Animacy.UNKNOWN;
}
} else if (nerString.equals("PERSON") || nerString.startsWith("PER")) {
animacy = Animacy.ANIMATE;
} else if (nerString.equals("LOCATION")|| nerString.startsWith("LOC")) {
animacy = Animacy.INANIMATE;
} else switch(nerString) {
case "MONEY" :
animacy = Animacy.INANIMATE;
break;
case "NUMBER" :
animacy = Animacy.INANIMATE;
break;
case "PERCENT" :
animacy = Animacy.INANIMATE;
break;
case "DATE" :
animacy = Animacy.INANIMATE;
break;
case "TIME" :
animacy = Animacy.INANIMATE;
break;
case "MISC" :
animacy = Animacy.UNKNOWN;
break;
default :
if (nerString.startsWith("VEH")) {
} else {
switch(nerString) {
case "PERSON":
case "PER":
case "PERS":
animacy = Animacy.ANIMATE;
break;
case "LOCATION":
case "LOC":
animacy = Animacy.INANIMATE;
break;
case "MONEY":
animacy = Animacy.INANIMATE;
break;
case "NUMBER":
animacy = Animacy.INANIMATE;
break;
case "PERCENT":
animacy = Animacy.INANIMATE;
break;
case "DATE":
animacy = Animacy.INANIMATE;
break;
case "TIME":
animacy = Animacy.INANIMATE;
break;
case "MISC":
animacy = Animacy.UNKNOWN;
break;
case "VEH":
case "VEHICLE":
animacy = Animacy.UNKNOWN;
} else if (nerString.startsWith("FAC")) {
break;
case "FAC":
case "FACILITY":
animacy = Animacy.INANIMATE;
} else if (nerString.startsWith("GPE")) {
break;
case "GPE":
animacy = Animacy.INANIMATE;
} else if (nerString.startsWith("WEA")) {
break;
case "WEA":
case "WEAPON":
animacy = Animacy.INANIMATE;
} else if (nerString.startsWith("ORG")) {
break;
case "ORG":
case "ORGANIZATION":
animacy = Animacy.INANIMATE;
} else {
break;
default:
animacy = Animacy.UNKNOWN;
}
}
if(mentionType != MentionType.PRONOMINAL) {
if(Constants.USE_ANIMACY_LIST){
}
if (Constants.USE_ANIMACY_LIST) {
// Better heuristics using DekangLin:
if(animacy == Animacy.UNKNOWN) {
if(dict.animateWords.contains(headString)) {
if(animacy == Animacy.UNKNOWN) {
if (dict.animateWords.contains(headString)) {
animacy = Animacy.ANIMATE;
SieveCoreferenceSystem.logger.finest("Assigned Dekang Lin animacy:\tANIMATE:\t" + headString);
}
else if(dict.inanimateWords.contains(headString)) {
else if (dict.inanimateWords.contains(headString)) {
animacy = Animacy.INANIMATE;
SieveCoreferenceSystem.logger.finest("Assigned Dekang Lin animacy:\tINANIMATE:\t" + headString);
}
Expand All @@ -674,6 +692,7 @@ else if(dict.inanimateWords.contains(headString)) {
}
}


private static final String [] commonNESuffixes = {
"Corp", "Co", "Inc", "Ltd"
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -430,7 +430,7 @@ private static String normalizedMoneyString(String s, String nextWord) {
boolean notMatched = true;
// We check multiCharCurrencyWords first
for (String currencyWord : multiCharCurrencyWords.keySet()) {
if(notMatched && StringUtils.find(s, currencyWord)) {
if (notMatched && StringUtils.find(s, currencyWord)) {
switch(currencyWord) {
case "美分" :
multiplier = 0.01;
Expand Down
11 changes: 5 additions & 6 deletions src/edu/stanford/nlp/trees/treebank/TreebankPreprocessor.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package edu.stanford.nlp.trees.treebank;
package edu.stanford.nlp.trees.treebank;
import edu.stanford.nlp.util.logging.Redwood;

import java.util.Date;
Expand Down Expand Up @@ -107,12 +107,11 @@ private static boolean validateCommandLine(String[] args) {
String key = opt.getKey();
if (key == null) {
// continue;

} else if(key.equals("-d")) {
MAKE_DISTRIB = true;
distribName = opt.getValue()[0];

} else switch(key) {
case "-d":
MAKE_DISTRIB = true;
distribName = opt.getValue()[0];
break;
case "-v" :
VERBOSE = true;
break;
Expand Down
Loading

0 comments on commit 5d9a781

Please sign in to comment.