public Set<Term> getTermsByDepAncestors(final Iterable<Term> ancestors, final String pattern) { final Set<Term> result = new HashSet<Term>(); for (final Term term : ancestors) { for (final Term descendent : getTermsByDepAncestors(Collections.singleton(term))) { final List<Dep> path = getDepPath(term, descendent); if (matchDepPath(term, path, pattern)) { result.add(descendent); } } } return result; } }
public Set<Term> getTermsByDepAncestors(final Iterable<Term> ancestors, final String pattern) { final Set<Term> result = new HashSet<Term>(); for (final Term term : ancestors) { for (final Term descendent : getTermsByDepAncestors(Collections.singleton(term))) { final List<Dep> path = getDepPath(term, descendent); if (matchDepPath(term, path, pattern)) { result.add(descendent); } } } return result; }
public static final List<Span<Term>> splitSpan(final KAFDocument document, final Span<Term> span, final Iterable<Term> heads) { final Set<Term> excludedTerms = document.getTermsByDepDescendants(heads); final List<Span<Term>> spans = Lists.newArrayList(); for (final Term head : heads) { final Set<Term> terms = document.getTermsByDepAncestors(ImmutableSet.of(head)); terms.removeAll(excludedTerms); terms.add(head); terms.retainAll(span.getTargets()); if (!terms.isEmpty()) { spans.add(KAFDocument.newTermSpan(Ordering.from(Term.OFFSET_COMPARATOR) .sortedCopy(terms), head)); } } return spans; }
public static Set<Term> getTermsByDepAncestor(final KAFDocument document, final Term head, final boolean consecutive) { final Set<Term> descendants = document.getTermsByDepAncestors(ImmutableSet.of(head)); if (consecutive) { final List<Term> sortedTerms = Ordering.from(Term.OFFSET_COMPARATOR).sortedCopy( descendants); final int[] indexes = new int[sortedTerms.size()]; for (int i = 0; i < sortedTerms.size(); ++i) { indexes[i] = document.getTerms().indexOf(sortedTerms.get(i)); } final int h = sortedTerms.indexOf(head); boolean filtered = false; for (int i = h + 1; i < indexes.length; ++i) { filtered |= indexes[i] > indexes[i - 1] + 1; if (filtered) { descendants.remove(sortedTerms.get(i)); } } filtered = false; for (int i = h - 1; i >= 0; --i) { filtered |= indexes[i] < indexes[i + 1] - 1; if (filtered) { descendants.remove(sortedTerms.get(i)); } } } return descendants; }
if (head != null) { final List<URI> uris = Lists.newArrayList(); for (final Term term : this.document.getTermsByDepAncestors( Collections.singleton(head), "(COORD CONJ?)*")) { if (span.getTargets().contains(term)) {
final List<Span<Term>> result = Lists.newArrayList(); for (final Term head : heads) { final Set<Term> extent = document.getTermsByDepAncestors(ImmutableSet.of(head)); extent.removeAll(excluded); extent.add(head);
final List<URI> uris = Lists.newArrayList(); final Set<Term> extent = Sets.newHashSet(); for (final Term term : this.document.getTermsByDepAncestors( Collections.singleton(head), "(COORD CONJ?)*")) { if (!span.getTargets().contains(term)) {
private void applySRLRoleLinking(final KAFDocument document) { // Process all the roles in the SRL layer for (final Predicate predicate : Lists.newArrayList(document.getPredicates())) { for (final Role role : predicate.getRoles()) { // Identify the role head. Skip if not found. final Term head = NAFUtils.extractHead(document, role.getSpan()); if (head == null) { continue; } // Identify the terms that can be linked final Set<Term> argTerms = document.getTermsByDepAncestors( Collections.singleton(head), PARTICIPATION_REGEX); // Perform the linking, possible augmenting terms using coref info linkEntitiesTimexPredicates(document, role, role.getSpan(), argTerms, this.srlRoleLinkingUsingCoref); } } }
final List<String> modifierIDs = Lists.newArrayList(); for (final Term modifier : this.document.getTermsByDepAncestors(ImmutableSet.of(head), "AMOD|NMOD")) { if ("AGV".contains(modifier.getPos())) { final Set<Term> terms = this.document.getTermsByDepAncestors(ImmutableSet.of(head), "(AMOD|NMOD)*"); for (final Iterator<Term> i = terms.iterator(); i.hasNext();) {
final Set<Term> roleHeads = document.getTermsByDepAncestors( ImmutableSet.of(roleTerm), "(COORD CONJ?)*"); final Set<Term> nameHeads = document.getTermsByDepAncestors( ImmutableSet.of(nameTerm), "(COORD CONJ?)*");
: "(COORD CONJ?)* NAME" : includeModifiers ? "((NAME|NMOD|AMOD|TMP) .*)?" : "NAME"; terms.addAll(document.getTermsByDepAncestors(Collections.singleton(head), regex));
final Set<Term> argTerms = this.document.getTermsByDepAncestors( Collections.singleton(argHead), "(AMOD|NMOD)*"); final URI mentionURI = emitMention(Iterables.concat(predTerms, argTerms));
for (final Integer arg : args) { final List<Term> terms = Ordering.from(Term.OFFSET_COMPARATOR).sortedCopy( document.getTermsByDepAncestors(Collections.singleton(predTerm))); final Span<Term> span = KAFDocument.newTermSpan(terms, predTerm); final String semRole = "A" + arg;
final Set<Term> terms = this.document.getTermsByDepAncestors( Collections.singleton(modifierTerm), "(AMOD|NMOD)*"); final URI mentionURI = emitMention(terms);
linkableTerms.addAll(document.getTermsByDepAncestors( Collections.singleton(spanHead), "(COORD CONJ?)*"));
for (final Term term : this.document.getTermsByDepAncestors( Collections.singleton(ann.head), MODIFIER_REGEX)) { if (!forbiddenTerms.contains(term)) { final Term roleHead = NAFUtils.extractHead(this.document, role.getSpan()); if (roleHead != null) { final Set<Term> argHeads = this.document.getTermsByDepAncestors( Collections.singleton(roleHead), PARTICIPATION_REGEX); boolean isCorefPredicateRole = false;
final Term roleHead = NAFUtils.extractHead(this.document, role.getSpan()); if (roleHead != null) { for (final Term argHead : this.document.getTermsByDepAncestors( Collections.singleton(roleHead), "SUB? (COORD CONJ?)*" + " (PMOD (COORD CONJ?)*)? ((VC OPRD?)|(IM OPRD?))*")) {