/** * Generates summary two-liner for the given link. used in summarizeAlignmentLinks() * * @param l * @return */ private static String summaryOutputSingleLink(Link l, int index) { // Link [n], info:[linker_version_info], strength: [strength num], direction: [direction] // \t Tside: { [Annotations] } // \t Hside: { [Annotations] } String line1 = "Link " + index + ", info: " + l.getAlignerID() + "_" + l.getAlignerVersion() + "_" + l.getLinkInfo() + ", strength: " + l.getStrength() + ", direction: " + l.getDirectionString() + "\n"; String line2 = " Tside: { " + summaryOutputLinkTarget(l.getTSideTarget()) + " }"; String line3 = " Hside: { " + summaryOutputLinkTarget(l.getHSideTarget()) + " }\n"; return (line1 + line2 + line3); }
/** * Get all the links, and assigns an ID (integer number) for each Link, where * * @return */ private static HashMap<Link, Integer> makeLinkIndex(JCas aJCas) throws CASException { HashMap<Link, Integer> linkIdMap = new HashMap<Link, Integer>(); List<Link> allLinks = LinkUtils.selectLinksWith(aJCas, (String) null); Integer id = 0; for(Link l : allLinks) { linkIdMap.put(l, id); id++; } return linkIdMap; }
Link link = new Link(hView); link.setTSideTarget(tTarget); link.setHSideTarget(hTarget); link.setDirection(Direction.Bidirection); link.setBegin(hTarget.getBegin()); link.setEnd(hTarget.getEnd()); link.setStrength(sim); link.setLinkInfo("negative"); link.setLinkInfo("positive"); link.setAlignerID("Word2VecAligner"); link.setAlignerVersion("1.0"); link.addToIndexes();
Target textTarget = new Target(textView); Target hypoTarget = new Target(hypoView); textTarget.setTargetAnnotations(textAnnots); hypoTarget.setTargetAnnotations(hypoAnnots); textTarget.setBegin(textToken.getBegin()); textTarget.setEnd(textToken.getEnd()); hypoTarget.setBegin(hypoToken.getBegin()); hypoTarget.setEnd(hypoToken.getEnd()); textTarget.addToIndexes(); hypoTarget.addToIndexes(); Link link = new Link(hypoView); link.setTSideTarget(textTarget); link.setHSideTarget(hypoTarget); link.setDirection(linkDirection); link.setStrength(confidence); link.setGroupLabel(linkGroupLabel); link.setAlignerID(ALIGNER_ID); link.setAlignerVersion(ALIGNER_VERSION); link.setLinkInfo(linkInfo); link.setBegin(hypoTarget.getBegin());
Link link = iter.next(); int tStartOffset = link.getTSideTarget().getBegin(); int tEndOffset = link.getTSideTarget().getEnd(); int hStartOffset = link.getHSideTarget().getBegin(); int hEndOffset = link.getHSideTarget().getEnd();
Link theLink = new Link(hypoView); theLink.setTSideTarget(textTarget); theLink.setHSideTarget(hypoTarget); theLink.setDirection(dir); logger.debug("TSideTarget, " + textTarget.getTargetAnnotations().size() + " tokens, covers: " + textTarget.getCoveredText()); logger.debug("HSideTarget, " + hypoTarget.getTargetAnnotations().size() + " tokens, covers: " + hypoTarget.getCoveredText()); theLink.setBegin(hypoTarget.getBegin()); theLink.setEnd(hypoTarget.getEnd()); theLink.addToIndexes();
/** * Prepare target instance for given view using given annotations * * @param view * View to prepare target instance on * @param annot * Annotation to add to given target instance * @return prepared target instance */ private Target prepareTarget(JCas view, Annotation annot) { // prepare a Target instance. Target target = new Target(view); // prepare a FSArray instance, put the target annotations in it. FSArray tAnnots = new FSArray(view, 1); tAnnots.set(0, annot); // the FSArray is prepared. Put it on field "targetAnnotations" target.setTargetAnnotations(tAnnots); // set begin - end value of the Target annotation (just like any // annotation) // setting of begin and end of Target is a convention. // - begin as the earliest "begin" (among Target-ed annotations) // - end as the latest "end" (among Target-ed annotations) target.setBegin(annot.getBegin()); target.setEnd(annot.getEnd()); // add it to the index (just like any annotation) target.addToIndexes(); return target; }
aNewLink.setStrength(DEFAULT_LINK_STR); aNewLink.setAlignerID(ALIGNER_ID); aNewLink.setAlignerVersion(ALIGNER_VER); aNewLink.setLinkInfo(ALIGNER_LINK_INFO);
String key = link.getTSideTarget().getCoveredText().replaceAll(" ", "_|_") + "__" + link.getHSideTarget().getCoveredText().replaceAll(" ", "_|_");
if (alignment != null && alignment.getGroupLabelsInferenceLevel().size() != 0) { alignmentType = (alignment.getGroupLabelsInferenceLevel().iterator().next().toString()); result[1] = alignment.getDirectionString(); // TtoH | HtoT | Bidirectional result[2] = alignment.getLinkInfo(); // e.g. HYPERNYM | SYNONYM in WordNet based aligner
/** * Generates summary one liner (as a set) for the given alignment.target. (used in summarizeAlignmentLinks() * * @param t one Target of link target. * @return */ private static String summaryOutputLinkTarget(Target t) { String summary = ""; Collection<Annotation> annots = JCasUtil.select(t.getTargetAnnotations(), Annotation.class); for (Annotation a : annots) { String s = a.getType().toString(); String typeString = s.substring(s.lastIndexOf(".") + 1); if (typeString.equals("Token")) // hard coded. This summary utility treats Token as special one, and outputs some detail about it. (actual text) { summary += "[" + a.getCoveredText() + "] "; } else { // The annotation is not a token; simply output type name and address summary += typeString + "(" + t.getAddress() + ") "; // getAddress isn't really good idea but .. hmm. let's see. } } return summary; }
List<Link> links = LinkUtils.selectLinksWith(aJCas, Token.class); logger.debug("getCoveringLinksWordLevel: total " + links.size() + " links fetched"); List<Link> linksHoldingThisToken = LinkUtils.filterLinksWithTargetsIncluding(links, tok, dir); coveringLinks.add(linksHoldingThisToken); logger.debug("getCoveringLinksWordLevel: found " + linksHoldingThisToken.size() + "links");
Target queryTarget = new Target(queryView); Target entryTarget = new Target(entryView); Target tg = new Target(queryView); tg.setTargetAnnotations(queryAnnots); tg.setBegin(queryStart); tg.setEnd(queryEnd); tg.addToIndexes(); Target tg = new Target(entryView); FSArray entryAnnots = new FSArray(entryView, 1); entryAnnots.set(0, ntype); tg.setTargetAnnotations(entryAnnots); tg.setBegin(entryStart); tg.setEnd(entryEnd); tg.addToIndexes(); entryTarget = tg; link = new Link(entryView); link.setTSideTarget(queryTarget); link.setHSideTarget(entryTarget); link.setDirection(Direction.HtoT); link.setBegin(entryTarget.getBegin()); link.setEnd(entryTarget.getEnd());
Link link = iter.next(); int tStartOffset = link.getTSideTarget().getBegin(); int tEndOffset = link.getTSideTarget().getEnd(); int hStartOffset = link.getHSideTarget().getBegin(); int hEndOffset = link.getHSideTarget().getEnd();
private static Target prepareOneTarget(JCas view, Collection<Token> tokens) { int countTokens = tokens.size(); if (countTokens == 0) // check; null means no Tokens for target. return null; Target aTarget = new Target(view); FSArray annots = new FSArray(view, countTokens); aTarget.setTargetAnnotations(annots); Iterator<Token> itr = tokens.iterator(); int begin = -1; // I am using -1 as "not set yet". int end=0; for(int i=0; i < countTokens; i++) { Token t = itr.next(); if (begin == -1) // if not set. begin = t.getBegin(); end = t.getEnd(); // we are assuming that collection tokens is ordered. annots.set(i, t); } aTarget.setBegin(begin); aTarget.setEnd(end); aTarget.addToIndexes(); return aTarget; }
aLink.setStrength(tuple.getScore()); aLink.setAlignerID(this.alignerID); aLink.setAlignerVersion(this.alignerVersion); aLink.setLinkInfo(this.linkInfo); countAnnotatedLinks ++;
List<Link> links = LinkUtils.selectLinksWith(aJCas, (String) null);
Target textTarget = new Target(textView); Target hypoTarget = new Target(hypoView); textTarget.setTargetAnnotations(textAnnots); hypoTarget.setTargetAnnotations(hypoAnnots); textTarget.setBegin(textTokens.get(textStart).getBegin()); textTarget.setEnd(textTokens.get(textEnd).getEnd()); hypoTarget.setBegin(hypoTokens.get(hypoStart).getBegin()); hypoTarget.setEnd(hypoTokens.get(hypoEnd).getEnd()); textTarget.addToIndexes(); hypoTarget.addToIndexes(); Link link = new Link(hypoView); link.setTSideTarget(textTarget); link.setHSideTarget(hypoTarget); link.setDirection(linkDirection); link.setStrength(confidence); link.setAlignerID(resourceName); link.setAlignerVersion(lexicalResourceVersion); link.setLinkInfo(linkInfo); link.addGroupLabel(linkInfoToDomainLevel.get(relationType)); link.addGroupLabel(linkInfoToInferenceLevel.get(relationType));
Link link = iter.next(); int tStartOffset = link.getTSideTarget().getBegin(); int tEndOffset = link.getTSideTarget().getEnd(); int hStartOffset = link.getHSideTarget().getBegin(); int hEndOffset = link.getHSideTarget().getEnd();
Collection<Link> links = JCasUtil.select(hView, Link.class); for (Link link : links) { if (link.getLinkInfo().equalsIgnoreCase("negative")) { logger.info("Found negative link"); negLink++; Link link = iter.next(); int tStartOffset = link.getTSideTarget().getBegin(); int tEndOffset = link.getTSideTarget().getEnd(); int hStartOffset = link.getHSideTarget().getBegin(); int hEndOffset = link.getHSideTarget().getEnd();