String semRole = role.getSemRole(); if (semRole != null && !semRole.equals("")) { for (final ExternalRef ref : role.getExternalRefs()) { final String resource = ref.getResource().toLowerCase(); final String name = ref.getReference().replace('#', '.');
for (final Role role : predicate.getRoles()) { final Term head = NAFUtils.extractHead(this.document, role.getSpan()); if (head != null) { if ("A1".equals(role.getSemRole())) { a1Head = head; } else if ("A2".equals(role.getSemRole())) { a2Head = head; Set<Term> corefPredicateHeads = null; for (final Role role : predicate.getRoles()) { 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; if (role.getSemRole().endsWith(entitySuffix)) { corefEntityHeads = argHeads; } else if (role.getSemRole().endsWith(predicateSuffix)) { corefPredicateHeads = argHeads; isCorefPredicateRole = true;
final Term headTerm = document.getTermsHead(role.getTerms()); if (headTerm == predTerm && role.getSemRole() != null) { boolean valid = false; final Matcher matcher = SRL_ROLE_PATTERN.matcher(role.getSemRole()); if (matcher.matches()) { currentNum = Integer.parseInt(matcher.group(1));
List<ExternalRef> externalRefs = getExternalReferences(rExternalReferencesElems.get(0), kaf); newRole.addExternalRefs(externalRefs);
roleElem.setAttribute("id", role.getId()); roleElem.setAttribute("semRole", role.getSemRole()); Span<Term> roleSpan = role.getSpan(); if (roleSpan.getTargets().size() > 0) { Comment spanComment = new Comment(StringEscapeUtils.escapeXml11(role.getStr())); Element spanElem = new Element("span"); roleElem.addContent(spanComment); List<ExternalRef> rExternalReferences = role.getExternalRefs(); if (rExternalReferences.size() > 0) { Element externalReferencesElem = externalReferencesToDOM(rExternalReferences);
if (rExternalReferencesElems.size() > 0) { List<ExternalRef> externalRefs = getExternalReferences(rExternalReferencesElems.get(0), kaf); newRole.addExternalRefs(externalRefs);
roleElem.setAttribute("id", role.getId()); roleElem.setAttribute("semRole", role.getSemRole()); if (!role.getFlags().isEmpty()) { StringBuilder builder = new StringBuilder(); String separator = ""; for (String flag : role.getFlags()) { builder.append(separator).append(flag); separator = ","; Span<Term> roleSpan = role.getSpan(); if (roleSpan.getTargets().size() > 0) { Comment spanComment = new Comment(role.getStr()); Element spanElem = new Element("span"); roleElem.addContent(spanComment); List<ExternalRef> rExternalReferences = role.getExternalRefs(); if (rExternalReferences.size() > 0) { Element externalReferencesElem = externalReferencesToDOM(rExternalReferences);
this.out.append(((Role) element).getSemRole());
final Set<Term> mateTerms = ImmutableSet.copyOf(mateRole.getSpan() .getTargets()); for (final Role semaforRole : semaforPredicate.getRoles()) { final Set<Term> semaforTerms = ImmutableSet.copyOf(semaforRole.getSpan() .getTargets()); if (mateTerms.equals(semaforTerms)) { addRole = false; semaforRole.setSemRole(mateRole.getSemRole()); final boolean addFramenetRef = mergeFramenet && NAFUtils.getRef(semaforRole, "FrameNet", null) != null; for (final ExternalRef ref : mateRole.getExternalRefs()) { if (!ref.getResource().equalsIgnoreCase("FrameNet") || addFramenetRef) { semaforRole.addExternalRef(new ExternalRef(ref)); mateRole.getSemRole(), mateRole.getSpan()); semaforPredicate.addRole(semaforRole); for (final ExternalRef ref : mateRole.getExternalRefs()) { semaforRole.addExternalRef(new ExternalRef(ref));
if (ann.objectURI != null) { for (final Role role : predicate.getRoles()) { selfArg |= head.equals(NAFUtils.extractHead(this.document, role.getSpan()));
final Term roleHead = NAFUtils.extractHead(this.document, role.getSpan()); if (roleHead != null) { for (final Term argHead : this.document.getTermsByDepAncestors(
if (role.getSemRole().startsWith("A")) { final boolean verb = NAFUtils.extractHead(document, predicate.getSpan()) .getMorphofeat().startsWith("VB"); final ExternalRef ref = NAFUtils.getRef(predicate, resource, null); if (ref != null) { final String r = role.getSemRole().startsWith("AM-") ? role.getSemRole() .substring(3) : role.getSemRole().substring(1); role.addExternalRef(new ExternalRef(resource, ref.getReference() + "@" + r.toLowerCase())); final String semRole = role.getSemRole(); final char numChar = semRole.charAt(semRole.length() - 1); if (semRole != null && Character.isDigit(numChar)) {
String semRole = role.getSemRole(); if (semRole == null) { return;
final Integer expectedNum = NAFUtils.extractArgNum(role.getSemRole()); for (final ExternalRef ref : NAFUtils.getRefs(role, resource, null)) { final String lemma = NAFUtils.extractLemma(ref.getReference()); if (!Objects.equal(expectedNum, num) || !expectedLemma.equalsIgnoreCase(lemma) || expectedSense != null && !expectedSense.equals(sense)) { role.getExternalRefs().remove(ref); if (LOGGER.isDebugEnabled()) { LOGGER.debug("Removed wrong role '" + ref.getReference() + "' for "
for (final ExternalRef ref : ImmutableList.copyOf(role.getExternalRefs())) { if (ref.getResource().equalsIgnoreCase("framenet")) { final String s = ref.getReference();
} else if (annotation instanceof Role) { final Role role = (Role) annotation; return "role " + role.getId() + " '" + role.getStr() + "' (" + role.getSemRole() + ")"; } else if (annotation instanceof Opinion) { return "opinion " + ((Opinion) annotation).getId();
public static boolean hasHead(final KAFDocument document, final Object annotation, final Term head) { List<Span<Term>> spans; if (annotation instanceof Coref) { spans = ((Coref) annotation).getSpans(); } else if (annotation instanceof Entity) { spans = ((Entity) annotation).getSpans(); } else if (annotation instanceof Timex3) { spans = ImmutableList.of(KAFDocument.newTermSpan(document .getTermsByWFs(((Timex3) annotation).getSpan().getTargets()))); } else if (annotation instanceof Predicate) { spans = ImmutableList.of(((Predicate) annotation).getSpan()); } else if (annotation instanceof Role) { spans = ImmutableList.of(((Role) annotation).getSpan()); } else { throw new IllegalArgumentException("Unsupported annotation: " + annotation); } for (final Span<Term> span : spans) { if (head == extractHead(document, span)) { return true; } } return false; }
private static List<ExternalRef> getRefs(final Object annotation) { List<ExternalRef> refs = ImmutableList.of(); if (annotation instanceof Term) { refs = ((Term) annotation).getExternalRefs(); } else if (annotation instanceof Entity) { refs = ((Entity) annotation).getExternalRefs(); } else if (annotation instanceof Predicate) { refs = ((Predicate) annotation).getExternalRefs(); } else if (annotation instanceof Role) { refs = ((Role) annotation).getExternalRefs(); } else if (annotation instanceof Opinion) { refs = ((Opinion) annotation).getExternalRefs(); } else if (annotation instanceof OpinionExpression) { refs = ((OpinionExpression) annotation).getExternalRefs(); } else if (annotation instanceof OpinionTarget) { refs = ((OpinionTarget) annotation).getExternalRefs(); } else if (annotation instanceof OpinionHolder) { refs = ((OpinionHolder) annotation).getExternalRefs(); } else { throw new IllegalArgumentException("Unsupported annotation object: " + annotation); } return refs; }
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); } } }
SRLElement(final SRLElement parent, final Object element, final boolean useProposition) { this.parent = parent; this.element = element; if (useProposition) { final Predicate predicate = (Predicate) element; final Set<Term> termSet = Sets.newHashSet(); termSet.addAll(predicate.getTerms()); for (final Role role : predicate.getRoles()) { termSet.addAll(role.getTerms()); } this.terms = Ordering.from(Term.OFFSET_COMPARATOR).immutableSortedCopy(termSet); } else if (element instanceof Predicate) { this.terms = ((Predicate) element).getTerms(); } else { this.terms = ((Role) element).getTerms(); } this.begin = this.terms.get(0).getOffset(); this.end = endOf(this.terms.get(this.terms.size() - 1)); }