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 String getLabel() { if (this.label == null) { final StringBuilder builder = new StringBuilder(); Term term = this.terms.get(0); for (final Dep dep : this.deps) { builder.append(dep.getRfunc().toLowerCase()); if (term.equals(dep.getFrom())) { builder.append('D'); term = dep.getTo(); } else { builder.append('U'); term = dep.getFrom(); } } this.label = builder.toString(); } return this.label; }
public static Term syntacticToSRLHead(final KAFDocument document, final Term term) { for (final Dep dep : document.getDepsFromTerm(term)) { final String func = dep.getRfunc(); if ("VC".equals(func) || "IM".equals(func)) { return syntacticToSRLHead(document, dep.getTo()); } } return term; }
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; }
private static String getDepPathString(final Term from, final Iterable<Dep> path) { final StringBuilder builder = new StringBuilder("_"); Term term = from; // current node in the path for (final Dep dep : path) { char prefix; if (dep.getFrom() == term) { prefix = '+'; term = dep.getTo(); } else { prefix = '-'; term = dep.getFrom(); } for (final String label : dep.getRfunc().split("-")) { final Character letter = getDepPathChar(label); builder.append(prefix).append(letter); } builder.append("_"); } return builder.toString(); }
private static String getDepPathString(final Term from, final Iterable<Dep> path) { final StringBuilder builder = new StringBuilder("_"); Term term = from; // current node in the path for (final Dep dep : path) { char prefix; if (dep.getFrom() == term) { prefix = '+'; term = dep.getTo(); } else { prefix = '-'; term = dep.getFrom(); } for (final String label : dep.getRfunc().split("-")) { final Character letter = getDepPathChar(label); builder.append(prefix).append(letter); } builder.append("_"); } return builder.toString(); }
for (int i = 1; i < path.size(); ++i) { final Dep dep = path.get(i); final String func = dep.getRfunc(); final Term term = dep.getFrom(); if (!func.equalsIgnoreCase("COORD") && !func.equals("CONJ")) {
final Term term = queue.remove(0); for (final Dep dep : document.getDepsFromTerm(term)) { final String func = dep.getRfunc(); if ("COORD".equals(func) || "CONJ".equals(func)) { final Term t = dep.getTo();
final Term parent = termDep == null ? term : termDep.getFrom(); final int parentIndex = this.indexes.get(parent); final String label = termDep == null ? "" : termDep.getRfunc().toLowerCase(); centerVerticalLines[termIndex] = true; if (termIndex < parentIndex) { // term <-- parent (right to left)
private void emitOpinionArgument(final URI opinionID, @Nullable final URI spanProperty, @Nullable final URI headProperty, @Nullable final Span<Term> span, @Nullable final Set<Term> heads) { if (span != null) { outer: for (final Term term : span.getTargets()) { final Annotation ann = this.annotations.get(term.getId()); URI uri = ann == null ? null : ann.objectURI != null ? ann.objectURI : ann.predicateURI; if (uri == null && "AGV".contains(term.getPos())) { for (final Dep dep : this.document.getDepsFromTerm(term)) { if (dep.getRfunc().equals("VC")) { continue outer; } } uri = emitTerm(term); } if (uri != null) { if (spanProperty != null) { emitFact(opinionID, spanProperty, uri, null, null); } if (headProperty != null && heads != null && heads.contains(term)) { emitFact(opinionID, headProperty, uri, null, null); } } } } }
private static boolean extractHeadsHelper(final KAFDocument document, final Term term, final java.util.function.Predicate<Term> predicate, final Collection<Term> result) { final String pos = extendedPos(document, term); boolean accepted = false; if (pos.startsWith("V")) { final Term srlHead = syntacticToSRLHead(document, term); if (!term.equals(srlHead)) { accepted = extractHeadsHelper(document, srlHead, predicate, result); } } if (!accepted && (predicate == null || predicate.test(term))) { result.add(term); accepted = true; } if (accepted) { for (final Dep dep : document.getDepsFromTerm(term)) { if (dep.getRfunc().toUpperCase().contains("COORD")) { extractHeadsHelper(document, dep.getTo(), predicate, result); } } } else { for (final Dep dep : document.getDepsFromTerm(term)) { extractHeadsHelper(document, dep.getTo(), predicate, result); } } return accepted; }
out.append(", ").append(dep.getRfunc()).append(" of '") .append(dep.getFrom().getForm().replace("\"", """)).append("' (") .append(dep.getFrom().getId()).append(")");
private void applyCorefForRoleDependencies(final KAFDocument document) { final String label = dep.getRfunc(); if ("APPO".equals(label) || "TITLE".equals(label) || "NMOD".equals(label)) {
final Dep dep = document.getDepToTerm(term); final boolean namePart = pos == 'R' && dep != null && dep.getRfunc().toLowerCase().contains("name") && Character.toUpperCase(dep.getFrom().getPos().charAt(0)) == 'R' && document.getEntitiesByTerm(dep.getFrom()).isEmpty();
final String depLabel = dep.getRfunc().toUpperCase(); if (depLabel.contains("NMOD") || depLabel.contains("AMOD")) { return;
depElem.setAttribute("from", dep.getFrom().getId()); depElem.setAttribute("to", dep.getTo().getId()); depElem.setAttribute("rfunc", dep.getRfunc()); if (dep.hasCase()) { depElem.setAttribute("case", dep.getCase());
depElem.setAttribute("from", dep.getFrom().getId()); depElem.setAttribute("to", dep.getTo().getId()); depElem.setAttribute("rfunc", dep.getRfunc()); if (dep.hasCase()) { depElem.setAttribute("case", dep.getCase());