private static Map<Set<Object>, Polarity> getPolarityMap(final Iterable<Opinion> opinions, @Nullable final Polarity expectedPolarity) { final Map<Set<Object>, Polarity> map = Maps.newHashMap(); for (final Opinion opinion : opinions) { final Set<Object> expression = getExpression(opinion); final Polarity polarity = getPolarity(opinion); if (expectedPolarity != null && !expectedPolarity.equals(polarity)) { continue; } final Polarity oldPolarity = map.put(expression, polarity); if (oldPolarity != null && !Objects.equals(oldPolarity, polarity)) { LOGGER.warn("Different polarities " + oldPolarity + ", " + polarity + " for expression of opinion " + opinion.getId()); } } return map; }
public String getStr() { return getSpanStr(this.getOpinionExpression().getSpan()); }
public List<Opinion> getOpinions(String label) { final List<Opinion> opinions = new ArrayList<Opinion>(); for (final Opinion opinion : annotationContainer.getOpinions()) { if (Objects.equals(opinion.getLabel(), label)) { opinions.add(opinion); } } return opinions; }
private static Set<Object> getHolder(@Nullable final Opinion opinion) { if (opinion != null) { final Span<Term> holder = opinion.getHolderSpan(); if (holder != null && !holder.isEmpty()) { return ImmutableSet.copyOf(holder.getTargets()); } final OpinionExpression expr = opinion.getOpinionExpression(); if (expr != null && "implicit".equalsIgnoreCase(expr.getSentimentProductFeature())) { return IMPLICIT; } } return WRITER; // default }
if ("gold-eu.fbk.dkm.pikes.resources.darmstadt".equals(opinion.getLabel())) { hasGoldOpinions = true; break; opinion.setLabel("gold-eu.fbk.dkm.pikes.resources.darmstadt"); Opinion.OpinionExpression expression = opinion.createOpinionExpression(termSpan); if (markable.get("polarity") != null) { expression.setPolarity(markable.get("polarity")); opinion.createOpinionHolder(terms); opinion.createOpinionTarget(terms);
if ("gold-vua-opinion".equals(opinion.getLabel())) { hasGoldOpinions = true; break; for (Opinion opinion : document.getOpinions()) { Opinion newOpinion = nafDoc.newOpinion(); newOpinion.setLabel("gold-vua-opinion"); if (opinion.getOpinionExpression() != null) { termSpan = KAFDocument.newTermSpan(); for (Term term : opinion.getOpinionExpression().getTerms()) { termSpan.addTarget(nafTerms.get(idConverter.get(term.getId()))); Opinion.OpinionExpression expression = newOpinion.createOpinionExpression(termSpan); expression.setPolarity(opinion.getOpinionExpression().getPolarity()); if (opinion.getOpinionHolder() != null) { termSpan = KAFDocument.newTermSpan(); for (Term term : opinion.getOpinionHolder().getTerms()) { termSpan.addTarget(nafTerms.get(idConverter.get(term.getId()))); newOpinion.createOpinionHolder(termSpan); if (opinion.getOpinionTarget() != null) { termSpan = KAFDocument.newTermSpan(); for (Term term : opinion.getOpinionTarget().getTerms()) { termSpan.addTarget(nafTerms.get(idConverter.get(term.getId()))); newOpinion.createOpinionTarget(termSpan);
if (opinion.getLabel().contains(l)) { matches = true; break; if (opinion.getOpinionExpression() == null) { continue; expression = opinion.getExpressionSpan().getStr(); indexes.put("expression-start", opinion.getExpressionSpan().getTargets().get(0).getOffset()); indexes.put("expression-end", opinion.getExpressionSpan().getTargets().get(opinion.getExpressionSpan().getTargets().size() - 1).getOffset() + opinion.getExpressionSpan().getTargets().get(opinion.getExpressionSpan().getTargets().size() - 1).getLength()); if (opinion.getOpinionHolder() != null && !opinion.getOpinionHolder().getTerms().isEmpty()) { holder = opinion.getHolderSpan().getStr(); indexes.put("holder-start", opinion.getHolderSpan().getTargets().get(0).getOffset()); indexes.put("holder-end", opinion.getHolderSpan().getTargets().get(opinion.getHolderSpan().getTargets().size() - 1).getOffset() + opinion.getHolderSpan().getTargets().get(opinion.getHolderSpan().getTargets().size() - 1).getLength()); if (opinion.getOpinionTarget() != null && !opinion.getOpinionTarget().getTerms().isEmpty()) { target = opinion.getTargetSpan().getStr(); indexes.put("target-start", opinion.getTargetSpan().getTargets().get(0).getOffset()); indexes.put("target-end", opinion.getTargetSpan().getTargets().get(opinion.getTargetSpan().getTargets().size() - 1).getOffset() + opinion.getTargetSpan().getTargets().get(opinion.getTargetSpan().getTargets().size() - 1).getLength()); opinionElement.setAttribute("end", Integer.toString(indexes.get("expression-end"))); Element polarityElement = doc.createElement("polarity"); polarityElement.appendChild(doc.createTextNode(opinion.getPolarity() != null ? normalizePolarity(opinion.getPolarity()) : "neutral")); opinionElement.appendChild(polarityElement);
for (Opinion opinion : opinions) { Element opinionElem = new Element("opinion"); opinionElem.setAttribute("id", opinion.getId()); if (opinion.getLabel() != null) { opinionElem.setAttribute("label", opinion.getLabel()); if (!opinion.getExternalRefs().isEmpty()) { opinionElem.addContent(externalReferencesToDOM(opinion.getExternalRefs())); Opinion.OpinionHolder holder = opinion.getOpinionHolder(); if (holder != null) { Element opinionHolderElem = new Element("opinion_holder"); Comment comment = new Comment(opinion.getSpanStr(opinion.getOpinionHolder().getSpan())); opinionHolderElem.addContent(comment); List<Term> targets = holder.getTerms(); Opinion.OpinionTarget opTarget = opinion.getOpinionTarget(); if (opTarget != null) { Element opinionTargetElem = new Element("opinion_target"); Comment comment = new Comment(opinion.getSpanStr(opinion.getOpinionTarget().getSpan())); opinionTargetElem.addContent(comment); List<Term> targets = opTarget.getTerms(); Opinion.OpinionExpression expression = opinion.getOpinionExpression(); if (expression != null) { Element opinionExpressionElem = new Element("opinion_expression"); Comment comment = new Comment(opinion.getSpanStr(opinion.getOpinionExpression().getSpan()));
private void processOpinion(final Opinion opinion) { final int sentenceID = opinion.getOpinionExpression().getTerms().get(0).getSent(); final URI opinionURI = mintURI(opinion.getId(), null); final Polarity polarity = Polarity.forExpression(opinion.getOpinionExpression()); emitFact(opinionURI, RDF.TYPE, SUMO.ENTITY, null, null); emitFact(opinionURI, RDF.TYPE, KS.OPINION, null, null); : polarity == Polarity.NEGATIVE ? KS.NEGATIVE_OPINION : KS.NEUTRAL_OPINION, null, null); if (opinion.getLabel() != null) { emitFact(opinionURI, RDFS.LABEL, opinion.getLabel(), null, null); opinion.getOpinionExpression().getSpan(), sentenceID); final Set<Term> exprHeads = exprSpan == null ? ImmutableSet.<Term>of() : NAFUtils .extractHeads(this.document, null, exprSpan.getTargets(), final OpinionTarget target = opinion.getOpinionTarget(); final Span<Term> targetSpan = target == null ? null : NAFUtils.trimSpan( target.getSpan(), sentenceID); final OpinionHolder holder = opinion.getOpinionHolder(); final Span<Term> holderSpan = holder == null ? null : NAFUtils.trimSpan( holder.getSpan(), sentenceID);
for (Opinion opinion : opinions) { Element opinionElem = new Element("opinion"); opinionElem.setAttribute("id", opinion.getId()); Opinion.OpinionHolder holder = opinion.getOpinionHolder(); if (holder != null) { Element opinionHolderElem = new Element("opinion_holder"); opinionHolderElem.setAttribute("type", holder.getType()); Comment comment = new Comment(StringEscapeUtils.escapeXml11(opinion.getSpanStr(opinion.getOpinionHolder().getSpan()))); opinionHolderElem.addContent(comment); List<Term> targets = holder.getTerms(); Opinion.OpinionTarget opTarget = opinion.getOpinionTarget(); if (opTarget != null) { Element opinionTargetElem = new Element("opinion_target"); Comment comment = new Comment(StringEscapeUtils.escapeXml11(opinion.getSpanStr(opinion.getOpinionTarget().getSpan()))); opinionTargetElem.addContent(comment); List<Term> targets = opTarget.getTerms(); Opinion.OpinionExpression expression = opinion.getOpinionExpression(); if (expression != null) { Element opinionExpressionElem = new Element("opinion_expression"); Comment comment = new Comment(StringEscapeUtils.escapeXml11(opinion.getSpanStr(opinion.getOpinionExpression().getSpan()))); opinionExpressionElem.addContent(comment); if (expression.hasPolarity()) {
final OpinionExpression expression = opinion.getOpinionExpression(); if (expression != null) { linkEntitiesTimexPredicates( final OpinionHolder holder = opinion.getOpinionHolder(); if (holder != null) { linkEntitiesTimexPredicates(document, holder, holder.getSpan(), final OpinionTarget target = opinion.getOpinionTarget(); if (target != null) { linkEntitiesTimexPredicates(
if (opinionHolderElem != null) { Span<Term> span = kaf.newTermSpan(); Opinion.OpinionHolder opinionHolder = opinion.createOpinionHolder(span); String ohType = getOptAttribute("type", opinionHolderElem); if (ohType != null) { if (opinionTargetElem != null) { Span<Term> span = kaf.newTermSpan(); Opinion.OpinionTarget opinionTarget = opinion.createOpinionTarget(span); Element spanElem = opinionTargetElem.getChild("span"); if (spanElem != null) { String sentimentSemanticType = getOptAttribute("sentiment_semantic_type", opinionExpressionElem); String sentimentProductFeature = getOptAttribute("sentiment_product_feature", opinionExpressionElem); Opinion.OpinionExpression opinionExpression = opinion.createOpinionExpression(span); if (polarity != null) { opinionExpression.setPolarity(polarity);
List<Opinion> opinionList = document.getOpinions(); for (Opinion opinion : opinionList) { if (opinion.getLabel().equals("gold-influencer")) { Opinion.OpinionExpression expression = opinion.getOpinionExpression(); if (expression.getPolarity().equals("reverse")) { influenceRev.add(spanToLemmas(expression.getSpan())); if (opinion.getLabel().equals("gold-gfbf")) { Opinion.OpinionExpression expression = opinion.getOpinionExpression(); if (expression.getPolarity().equals("goodfor")) { goodFor.add(spanToLemmas(expression.getSpan()));
private static Polarity getPolarity(@Nullable final Opinion opinion) { return opinion == null || opinion.getOpinionExpression() == null ? Polarity.NEUTRAL : Polarity.forExpression(opinion.getOpinionExpression()); }
/** * Creates a new opinion object. It assigns an appropriate ID to it. The opinion is added to the document. * * @return a new opinion. */ public Opinion newOpinion() { String newId = idManager.opinions.getNext(); Opinion newOpinion = new Opinion(newId); annotationContainer.add(newOpinion); return newOpinion; }
ixa.kaflib.Span<Term> neSpan = KAFDocument.newTermSpan(nameTerms); Opinion opinion = kaf.newOpinion(); opinion.createOpinionTarget(neSpan);
private static Set<Object> getExpression(@Nullable final Opinion opinion) { if (opinion != null) { final Span<Term> expr = opinion.getExpressionSpan(); if (expr != null && !expr.isEmpty()) { return ImmutableSet.copyOf(expr.getTargets()); } } return NULL_TERMS; }
boolean hasGoldOpinions = false; for (Opinion opinion : opinions) { if (opinion.getLabel().equals(GOLD_LABEL)) { hasGoldOpinions = true; break; opinion.setLabel(GOLD_LABEL + "-" + properties.get("type")); LOGGER.debug("Adding opinion {}", properties.get("sentence")); opinion.createOpinionHolder(KAFDocument.newTermSpan(sourceSpan)); opinion.createOpinionTarget(KAFDocument.newTermSpan(targetSpan)); opinion.createOpinionExpression(KAFDocument.newTermSpan(attitudeSpan)); opinion.getOpinionExpression().setPolarity(properties.get("sentiment")); opinion.getOpinionExpression().setStrength(properties.get("intensity"));
if (opinion.getOpinionExpression() == null || opinion.getLabel() != null && (opinion.getLabel().toLowerCase().contains("stanford") || opinion .getLabel().toLowerCase().contains("gold"))) { continue; for (final Term term : opinion.getOpinionExpression().getTerms()) { if (this.sentenceIDs[term.getSent()]) { processOpinion(opinion);
public static Polarity forOpinion(final Opinion opinion) { return forLabel(opinion == null || opinion.getOpinionExpression() == null ? null : opinion.getOpinionExpression().getPolarity()); }