public static String getExactMatchFeature(MentionContext ec, MentionContext xec) { //System.err.println("getExactMatchFeature: ec="+mentionString(ec)+" mc="+mentionString(xec)); if (mentionString(ec).equals(mentionString(xec))) { return "exactMatch"; } else if (excludedHonorificMentionString(ec).equals(excludedHonorificMentionString(xec))) { return "exactMatchNoHonor"; } else if (excludedTheMentionString(ec).equals(excludedTheMentionString(xec))) { return "exactMatchNoThe"; } else if (excludedDeterminerMentionString(ec).equals(excludedDeterminerMentionString(xec))) { return "exactMatchNoDT"; } return null; }
/** * Returns a list of features for deciding whether the specified mention refers to the specified discourse entity. * @param mention the mention being considers as possibly referential. * @param entity The discourse entity with which the mention is being considered referential. * @return a list of features used to predict reference between the specified mention and entity. */ protected List<String> getFeatures(MentionContext mention, DiscourseEntity entity) { List<String> features = new ArrayList<String>(); features.add(DEFAULT); features.addAll(ResolverUtils.getCompatibilityFeatures(mention, entity,simModel)); return features; }
@Override protected List<String> getFeatures(MentionContext mention, DiscourseEntity entity) { List<String> features = new ArrayList<String>(); features.addAll(super.getFeatures(mention, entity)); if (entity != null) { features.addAll(ResolverUtils.getContextFeatures(mention)); features.addAll(ResolverUtils.getStringMatchFeatures(mention,entity)); features.addAll(ResolverUtils.getDistanceFeatures(mention,entity)); } return (features); } }
@Override protected List<String> getFeatures(MentionContext mention, DiscourseEntity entity) { List<String> features = new ArrayList<String>(); features.addAll(super.getFeatures(mention, entity)); if (entity != null) { features.addAll(ResolverUtils.getContextFeatures(mention)); features.addAll(ResolverUtils.getStringMatchFeatures(mention,entity)); } return features; }
features.addAll(ResolverUtils.getPronounMatchFeatures(mention,entity)); MentionContext cec = entity.getLastExtent(); features.addAll(ResolverUtils.getDistanceFeatures(mention,entity)); features.addAll(ResolverUtils.getContextFeatures(cec)); features.add(ResolverUtils.getMentionCountFeature(entity));
List<String> features = new ArrayList<String>(); Parse[] mtokens = mention.getTokenParses(); Set<String> ecModSet = constructModifierSet(mtokens, mention.getHeadTokenIndex()); String mentionHeadString = mention.getHeadTokenText().toLowerCase(); Set<String> featureSet = new HashSet<String>(); for (Iterator<MentionContext> ei = entity.getMentions(); ei.hasNext();) { MentionContext entityMention = ei.next(); String exactMatchFeature = getExactMatchFeature(entityMention, mention); if (exactMatchFeature != null) { featureSet.add(exactMatchFeature); String mentionStrip = stripNp(mention); String entityMentionStrip = stripNp(entityMention); if (mentionStrip != null && entityMentionStrip != null) { if (isSubstring(mentionStrip, entityMentionStrip)) { featureSet.add("substring"); modsMatch = true; nonTheModsMatch = true; Set<String> entityMentionModifierSet = constructModifierSet(xtoks, headIndex); for (Iterator<String> mi = ecModSet.iterator(); mi.hasNext();) { String mw = mi.next(); Set<String> descModSet = constructModifierSet(xtoks, entityMention.getNonDescriptorStart()); if (descModSet.contains(mentionHeadString)) { titleMatch = true;
/** * Returns features indicating whether the specified mention and the specified entity are compatible. * @param mention The mention. * @param entity The entity. * @return list of features indicating whether the specified mention and the specified entity are compatible. */ public static List<String> getCompatibilityFeatures(MentionContext mention, DiscourseEntity entity, TestSimilarityModel simModel) { List<String> compatFeatures = new ArrayList<String>(); String semCompatible = getSemanticCompatibilityFeature(mention, entity, simModel); compatFeatures.add(semCompatible); String genCompatible = getGenderCompatibilityFeature(mention, entity); compatFeatures.add(genCompatible); String numCompatible = ResolverUtils.getNumberCompatibilityFeature(mention, entity); compatFeatures.add(numCompatible); if (semCompatible.equals(SIM_COMPATIBLE) && genCompatible.equals(GEN_COMPATIBLE) && numCompatible.equals(ResolverUtils.NUM_COMPATIBLE)) { compatFeatures.add("all.compatible"); } else if (semCompatible.equals(SIM_INCOMPATIBLE) || genCompatible.equals(GEN_INCOMPATIBLE) || numCompatible.equals(ResolverUtils.NUM_INCOMPATIBLE)) { compatFeatures.add("some.incompatible"); } return compatFeatures; }
/** * Returns a list of features used to predict whether the specified mention is non-referential. * @param mention The mention under consideration. * @return a list of features used to predict whether the specified mention is non-referential. */ protected List<String> getNonReferentialFeatures(MentionContext mention) { List<String> features = new ArrayList<String>(); Parse[] mtokens = mention.getTokenParses(); //System.err.println("getNonReferentialFeatures: mention has "+mtokens.length+" tokens"); for (int ti = 0; ti <= mention.getHeadTokenIndex(); ti++) { Parse tok = mtokens[ti]; List<String> wfs = ResolverUtils.getWordFeatures(tok); for (int wfi = 0; wfi < wfs.size(); wfi++) { features.add("nr" + wfs.get(wfi)); } } features.addAll(ResolverUtils.getContextFeatures(mention)); return features; }
@Override protected List<String> getFeatures(MentionContext mention, DiscourseEntity entity) { List<String> features = new ArrayList<String>(); features.addAll(super.getFeatures(mention, entity)); if (entity != null) { features.addAll(ResolverUtils.getPronounMatchFeatures(mention,entity)); List<String> contexts = ResolverUtils.getContextFeatures(mention); MentionContext cec = entity.getLastExtent(); if (mention.getHeadTokenTag().startsWith("PRP") && cec.getHeadTokenTag().startsWith("PRP")) { features.add(mention.getHeadTokenText() + "," + cec.getHeadTokenText()); } else if (mention.getHeadTokenText().startsWith("NNP")) { for (int ci = 0, cl = contexts.size(); ci < cl; ci++) { features.add(contexts.get(ci)); } features.add(mention.getNameType() + "," + cec.getHeadTokenText()); } else { List<String> ccontexts = ResolverUtils.getContextFeatures(cec); for (int ci = 0, cl = ccontexts.size(); ci < cl; ci++) { features.add(ccontexts.get(ci)); } features.add(cec.getNameType() + "," + mention.getHeadTokenText()); } } return (features); }
public boolean canResolve(MentionContext mention) { String firstTok = mention.getFirstTokenText().toLowerCase(); String firstTokTag = mention.getFirstToken().getSyntacticType(); boolean rv = mention.getHeadTokenTag().equals("NNS") && !ResolverUtils.definiteArticle(firstTok, firstTokTag); return rv; }
if (entity != null) { MentionContext ant = entity.getLastExtent(); List<String> leftContexts = ResolverUtils.getContextFeatures(ant); for (int ci = 0, cn = leftContexts.size(); ci < cn; ci++) { features.add("l" + leftContexts.get(ci)); List<String> rightContexts = ResolverUtils.getContextFeatures(mention); for (int ci = 0, cn = rightContexts.size(); ci < cn; ci++) { features.add("r" + rightContexts.get(ci));
features.addAll(ResolverUtils.getPronounMatchFeatures(mention,entity)); MentionContext cec = entity.getLastExtent(); features.addAll(ResolverUtils.getDistanceFeatures(mention,entity)); features.addAll(ResolverUtils.getContextFeatures(cec)); features.add(ResolverUtils.getMentionCountFeature(entity));
List<String> features = new ArrayList<String>(); Parse[] mtokens = mention.getTokenParses(); Set<String> ecModSet = constructModifierSet(mtokens, mention.getHeadTokenIndex()); String mentionHeadString = mention.getHeadTokenText().toLowerCase(); Set<String> featureSet = new HashSet<String>(); for (Iterator<MentionContext> ei = entity.getMentions(); ei.hasNext();) { MentionContext entityMention = ei.next(); String exactMatchFeature = getExactMatchFeature(entityMention, mention); if (exactMatchFeature != null) { featureSet.add(exactMatchFeature); String mentionStrip = stripNp(mention); String entityMentionStrip = stripNp(entityMention); if (mentionStrip != null && entityMentionStrip != null) { if (isSubstring(mentionStrip, entityMentionStrip)) { featureSet.add("substring"); modsMatch = true; nonTheModsMatch = true; Set<String> entityMentionModifierSet = constructModifierSet(xtoks, headIndex); for (Iterator<String> mi = ecModSet.iterator(); mi.hasNext();) { String mw = mi.next(); Set<String> descModSet = constructModifierSet(xtoks, entityMention.getNonDescriptorStart()); if (descModSet.contains(mentionHeadString)) { titleMatch = true;
/** * Returns features indicating whether the specified mention and the specified entity are compatible. * @param mention The mention. * @param entity The entity. * @return list of features indicating whether the specified mention and the specified * entity are compatible. */ public static List<String> getCompatibilityFeatures(MentionContext mention, DiscourseEntity entity, TestSimilarityModel simModel) { List<String> compatFeatures = new ArrayList<String>(); String semCompatible = getSemanticCompatibilityFeature(mention, entity, simModel); compatFeatures.add(semCompatible); String genCompatible = getGenderCompatibilityFeature(mention, entity); compatFeatures.add(genCompatible); String numCompatible = ResolverUtils.getNumberCompatibilityFeature(mention, entity); compatFeatures.add(numCompatible); if (semCompatible.equals(SIM_COMPATIBLE) && genCompatible.equals(GEN_COMPATIBLE) && numCompatible.equals(ResolverUtils.NUM_COMPATIBLE)) { compatFeatures.add("all.compatible"); } else if (semCompatible.equals(SIM_INCOMPATIBLE) || genCompatible.equals(GEN_INCOMPATIBLE) || numCompatible.equals(ResolverUtils.NUM_INCOMPATIBLE)) { compatFeatures.add("some.incompatible"); } return compatFeatures; }
@Override protected List<String> getFeatures(MentionContext mention, DiscourseEntity entity) { List<String> features = new ArrayList<String>(); features.addAll(super.getFeatures(mention, entity)); if (entity != null) { features.addAll(ResolverUtils.getContextFeatures(mention)); features.addAll(ResolverUtils.getStringMatchFeatures(mention,entity)); } return features; }
/** * Returns a list of features used to predict whether the specified mention is non-referential. * @param mention The mention under consideration. * @return a list of features used to predict whether the specified mention is non-referential. */ protected List<String> getNonReferentialFeatures(MentionContext mention) { List<String> features = new ArrayList<String>(); Parse[] mtokens = mention.getTokenParses(); //System.err.println("getNonReferentialFeatures: mention has "+mtokens.length+" tokens"); for (int ti = 0; ti <= mention.getHeadTokenIndex(); ti++) { Parse tok = mtokens[ti]; List<String> wfs = ResolverUtils.getWordFeatures(tok); for (int wfi = 0; wfi < wfs.size(); wfi++) { features.add("nr" + wfs.get(wfi)); } } features.addAll(ResolverUtils.getContextFeatures(mention)); return features; }
@Override protected List<String> getFeatures(MentionContext mention, DiscourseEntity entity) { List<String> features = new ArrayList<String>(); features.addAll(super.getFeatures(mention, entity)); if (entity != null) { features.addAll(ResolverUtils.getPronounMatchFeatures(mention,entity)); List<String> contexts = ResolverUtils.getContextFeatures(mention); MentionContext cec = entity.getLastExtent(); if (mention.getHeadTokenTag().startsWith("PRP") && cec.getHeadTokenTag().startsWith("PRP")) { features.add(mention.getHeadTokenText() + "," + cec.getHeadTokenText()); } else if (mention.getHeadTokenText().startsWith("NNP")) { for (int ci = 0, cl = contexts.size(); ci < cl; ci++) { features.add(contexts.get(ci)); } features.add(mention.getNameType() + "," + cec.getHeadTokenText()); } else { List<String> ccontexts = ResolverUtils.getContextFeatures(cec); for (int ci = 0, cl = ccontexts.size(); ci < cl; ci++) { features.add(ccontexts.get(ci)); } features.add(cec.getNameType() + "," + mention.getHeadTokenText()); } } return (features); }
public boolean canResolve(MentionContext mention) { Object[] mtokens = mention.getTokens(); String firstTok = mention.getFirstTokenText().toLowerCase(); boolean rv = mtokens.length > 1 && !mention.getHeadTokenTag().startsWith("NNP") && ResolverUtils.definiteArticle(firstTok, mention.getFirstTokenTag()); //if (rv) { // System.err.println("defNp "+ec); //} return (rv); }
if (entity != null) { MentionContext ant = entity.getLastExtent(); List<String> leftContexts = ResolverUtils.getContextFeatures(ant); for (int ci = 0, cn = leftContexts.size(); ci < cn; ci++) { features.add("l" + leftContexts.get(ci)); List<String> rightContexts = ResolverUtils.getContextFeatures(mention); for (int ci = 0, cn = rightContexts.size(); ci < cn; ci++) { features.add("r" + rightContexts.get(ci));
MentionContext cec = entity.getLastExtent(); features.addAll(ResolverUtils.getPronounMatchFeatures(mention,entity)); features.addAll(ResolverUtils.getContextFeatures(cec)); features.addAll(ResolverUtils.getDistanceFeatures(mention,entity)); features.add(ResolverUtils.getMentionCountFeature(entity));