Map<AnnotationType, List<Annotation>> getReferencedAnnotations() { Map<AnnotationType, List<Annotation>> referenced = new HashMap<AnnotationType, List<Annotation>>(); List<Annotation> terms = new ArrayList<Annotation>(); terms.add(this.getFrom()); terms.add(this.getTo()); referenced.put(AnnotationType.TERM, terms); return referenced; }
public List<Dep> getDepsFromTerm(final Term term) { final List<Dep> result = new ArrayList<Dep>(); for (final Dep dep : getDepsByTerm(term)) { if (dep.getFrom() == term) { result.add(dep); } } return result; }
public List<Dep> getDepsFromTerm(final Term term) { final List<Dep> result = new ArrayList<Dep>(); for (final Dep dep : (List<Dep>)(List<?>)annotationContainer.getInverse(term, AnnotationType.DEP)) { if (dep.getFrom() == term) { result.add(dep); } } return result; }
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 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 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 Set<Term> getTermsByDepDescendants(Iterable<Term> descendents) { final Set<Term> terms = new HashSet<Term>(); final List<Term> queue = new LinkedList<Term>(); for (final Term term : descendents) { terms.add(term); queue.add(term); } while (!queue.isEmpty()) { final Term term = queue.remove(0); final List<Dep> deps = getDepsByTerm(term); for (final Dep dep : deps) { if (dep.getTo() == term) { if (terms.add(dep.getFrom())) { queue.add(dep.getFrom()); } } } } return terms; }
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(); }
public static Path create(final Term from, final Term to, final Iterable<Dep> deps) { Term term = from; List<Dep> depList = new ArrayList<>(); final List<Term> termList = new ArrayList<>(); termList.add(term); for (final Dep dep : deps) { depList.add(dep); term = dep.getTo() == term ? dep.getFrom() : dep.getTo(); if (!termList.add(term)) { throw new IllegalArgumentException("Path contains loop"); } } if (!term.equals(to)) { throw new IllegalArgumentException("Invalid path"); } return new Path(depList, termList); }
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 Set<Term> getTermsByDepAncestors(final Iterable<Term> ancestors) { final Set<Term> terms = new HashSet<Term>(); final List<Term> queue = new LinkedList<Term>(); for (final Term term : ancestors) { terms.add(term); queue.add(term); } while (!queue.isEmpty()) { final Term term = queue.remove(0); final List<Dep> deps = getDepsByTerm(term); for (final Dep dep : deps) { if (dep.getFrom() == term) { if (terms.add(dep.getTo())) { queue.add(dep.getTo()); } } } } return terms; }
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 Set<Term> getTermsByDepAncestors(final Iterable<Term> ancestors) { final Set<Term> terms = new HashSet<Term>(); final List<Term> queue = new LinkedList<Term>(); for (final Term term : ancestors) { terms.add(term); queue.add(term); } while (!queue.isEmpty()) { final Term term = queue.remove(0); final List<Dep> deps = getDepsByTerm(term); for (final Dep dep : deps) { if (dep.getFrom() == term) { if (terms.add(dep.getTo())) { queue.add(dep.getTo()); } } } } return terms; }
Dep(Dep dep, HashMap<String, Term> terms) { this.from = terms.get(dep.from.getId()); if (this.from == null) { throw new IllegalStateException("Couldn't find the term when loading dep (" + dep.getFrom().getId()+", "+dep.getTo().getId()+")"); } this.to = terms.get(dep.to.getId()); if (this.to == null) { throw new IllegalStateException("Couldn't find the term when loading dep (" + dep.getFrom().getId()+", "+dep.getTo().getId()+")"); } this.rfunc = dep.rfunc; this.depcase = dep.depcase; }
Dep(Dep dep, HashMap<String, Term> terms) { this.from = terms.get(dep.from.getId()); if (this.from == null) { throw new IllegalStateException("Couldn't find the term when loading dep (" + dep.getFrom().getId()+", "+dep.getTo().getId()+")"); } this.to = terms.get(dep.to.getId()); if (this.to == null) { throw new IllegalStateException("Couldn't find the term when loading dep (" + dep.getFrom().getId()+", "+dep.getTo().getId()+")"); } this.rfunc = dep.rfunc; this.depcase = dep.depcase; }
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); }
/** * Adds a dependency to the container */ void add(Dep dep) { deps.add(dep); /* Index by 'from' and 'to' terms */ if (dep.getFrom() != null) { String tId = dep.getFrom().getId(); indexAnnotation(dep, tId, depsIndexedByTerm); } if (dep.getTo() != null) { String tId = dep.getTo().getId(); indexAnnotation(dep, tId, depsIndexedByTerm); } this.indexBySent(dep, dep.getFrom().getSent(), this.depsIndexedBySent); }
public String getStr() { return rfunc + "(" + this.getFrom().getStr() + ", " + this.getTo().getStr() + ")"; }