ParsingRenderer(final Appendable out, final KAFDocument document, final int sentence) { this.out = out; this.document = document; this.sentence = sentence; this.terms = document.getTermsBySent(sentence); this.deps = Lists.newArrayListWithCapacity(this.terms.size()); this.indexes = Maps.newIdentityHashMap(); for (int index = 0; index < this.terms.size(); ++index) { final Term term = this.terms.get(index); this.deps.add(document.getDepToTerm(term)); this.indexes.put(term, index); } }
public Term getTermsHead(Iterable<Term> descendents) { final Set<Term> termSet = new HashSet<Term>(); for (Term term : descendents) { termSet.add(term); } Term root = null; for (final Term term : termSet) { final Dep dep = getDepToTerm(term); if (dep == null || !termSet.contains(dep.getFrom())) { if (root == null) { root = term; } else if (root != term) { return null; } } } return root; }
public Term getTermsHead(final Iterable<Term> descendents) { final Set<Term> termSet = new HashSet<Term>(); for (final Term term : descendents) { termSet.add(term); } Term root = null; for (final Term term : termSet) { final Dep dep = getDepToTerm(term); if (dep == null || !termSet.contains(dep.getFrom())) { if (root == null) { root = term; } else if (root != term) { return null; } } } return root; }
public static String extendedPos(final KAFDocument document, final Term term) { final String pos = term.getMorphofeat(); final String lemma = term.getLemma().toLowerCase(); if ("some".equals(lemma) || "many".equals(lemma) || "all".equals(lemma) || "few".equals(lemma) || "this".equals(lemma) || "these".equals(lemma) || "that".equals(lemma) || "those".equals(lemma)) { final Dep dep = document.getDepToTerm(term); if (dep == null || !"NMOD".equals(dep.getRfunc())) { return pos + "P"; // determiner (DT) or adj (JJ) used as demonstrative pronoun } } return pos; }
public static Set<Term> extractHeads(final KAFDocument document, @Nullable final Iterable<Term> ancestors, @Nullable final Iterable<Term> span, @Nullable final java.util.function.Predicate<Term> predicate) { Set<Term> ancestorSet; if (ancestors != null) { ancestorSet = ImmutableSet.copyOf(ancestors); } else { ancestorSet = Sets.newHashSet(); final Set<Term> termSet = Sets.newHashSet(span); for (final Term term : termSet) { final Dep dep = document.getDepToTerm(term); if (dep == null || !termSet.contains(dep.getFrom())) { ancestorSet.add(term); } } } final Set<Term> result = Sets.newHashSet(); for (final Term ancestor : ancestorSet) { extractHeadsHelper(document, ancestor, predicate, result); } if (span != null) { result.retainAll(ImmutableSet.copyOf(span)); } // System.err.println(document.getPublic().uri + " -> " + termFilter + " / " + ancestors // + " -> " + result); return result; }
public static Term srlToSyntacticHead(final KAFDocument document, final Term term) { final Dep dep = document.getDepToTerm(term); if (dep != null) { final String func = dep.getRfunc(); if ("VC".equals(func) || "IM".equals(func)) { return srlToSyntacticHead(document, dep.getFrom()); } } return term; }
public List<Dep> getDepPath(final Term from, final Term to) { if (from == to) { return Collections.emptyList(); } final List<Dep> toPath = new ArrayList<Dep>(); for (Dep dep = getDepToTerm(to); dep != null; dep = getDepToTerm(dep.getFrom())) { toPath.add(dep); if (dep.getFrom() == from) { Collections.reverse(toPath); return toPath; } } final List<Dep> fromPath = new ArrayList<Dep>(); for (Dep dep = getDepToTerm(from); dep != null; dep = getDepToTerm(dep.getFrom())) { fromPath.add(dep); if (dep.getFrom() == to) { return fromPath; } for (int i = 0; i < toPath.size(); ++i) { if (dep.getFrom() == toPath.get(i).getFrom()) { for (int j = i; j >= 0; --j) { fromPath.add(toPath.get(j)); } return fromPath; } } } return null; // unconnected nodes }
public List<Dep> getDepPath(final Term from, final Term to) { if (from == to) { return Collections.emptyList(); } final List<Dep> toPath = new ArrayList<Dep>(); for (Dep dep = getDepToTerm(to); dep != null; dep = getDepToTerm(dep.getFrom())) { toPath.add(dep); if (dep.getFrom() == from) { Collections.reverse(toPath); return toPath; } } final List<Dep> fromPath = new ArrayList<Dep>(); for (Dep dep = getDepToTerm(from); dep != null; dep = getDepToTerm(dep.getFrom())) { fromPath.add(dep); if (dep.getFrom() == to) { return fromPath; } for (int i = 0; i < toPath.size(); ++i) { if (dep.getFrom() == toPath.get(i).getFrom()) { for (int j = i; j >= 0; --j) { fromPath.add(toPath.get(j)); } return fromPath; } } } return null; // unconnected nodes }
private static Boolean isActiveFormHelper(final KAFDocument document, final Term term) { final Dep dep = document.getDepToTerm(term); if (dep == null) { return Boolean.FALSE; } final Term parent = dep.getFrom(); final String word = parent.getStr().toLowerCase(); final String pos = parent.getMorphofeat(); if (pos.startsWith("NN")) { return Boolean.FALSE; } if (word.matches("am|are|is|was|were|be|been|being")) { return Boolean.FALSE; } if (word.matches("ha(ve|s|d|ving)")) { return Boolean.TRUE; } if (pos.matches("VBZ|VBD|VBP|MD")) { return Boolean.FALSE; } return isActiveFormHelper(document, parent); }
for (Dep dep = document.getDepToTerm(to); dep != null; dep = document.getDepToTerm(dep .getFrom())) { toPath.add(dep); for (Dep dep = document.getDepToTerm(from); dep != null; dep = document .getDepToTerm(dep.getFrom())) { fromPath.add(dep); if (dep.getFrom() == to) {
for (Dep dep = document.getDepToTerm(head); dep != null && ("CONJ".equals(dep.getRfunc()) || "COORD".equals(dep.getRfunc())); dep = document .getDepToTerm(dep.getFrom())) { if (clusters.keySet().contains(dep.getFrom())) { clusters.get(head).add(dep.getFrom()); terms.addAll(extents.get(head)); final List<Term> path = Lists.newArrayList(); for (Dep dep = document.getDepToTerm(head); dep != null; dep = document .getDepToTerm(dep.getFrom())) { final Term term = dep.getFrom(); path.add(term);
final Set<Term> terms = ImmutableSet.copyOf(span.getTargets()); for (final Term term : terms) { final Dep dep = document.getDepToTerm(term); if (dep == null || !terms.contains(dep.getFrom())) { roots.add(term); for (final Term root : roots) { final List<Term> path = Lists.newArrayList(root); for (Dep dep = document.getDepToTerm(root); dep != null; dep = document .getDepToTerm(dep.getFrom())) { path.add(dep.getFrom()); Dep dep = document.getDepToTerm(term); if (dep == null) { map.put(term, term); } else { for (; dep != null; dep = document.getDepToTerm(dep.getFrom())) { if (!terms.contains(dep.getFrom())) { map.put(dep.getTo(), term);
final Dep dep = document.getDepToTerm(term); if (dep != null) { out.append(", ").append(dep.getRfunc()).append(" of '")
break; final Dep dep = document.getDepToTerm(t); if (dep == null) { break;
final Dep dep = document.getDepToTerm(term); final boolean namePart = pos == 'R' && dep != null && dep.getRfunc().toLowerCase().contains("name")
final Dep dep = this.document.getDepToTerm(head); if (isProperty && dep != null) { final String depLabel = dep.getRfunc().toUpperCase();
final Dep dep = this.document.getDepToTerm(term); if (dep == null || !isAttributeTerm(dep.getFrom())) { processAttribute(term);