/** Create a new link annotation. Already adds the chain to the CAS. */ private AnnotationFS newLink( JCas aJCas, int aBegin, int aEnd, AnnotationFeature aFeature, String aLabelValue) { String baseName = StringUtils.substringBeforeLast(getAnnotationTypeName(), CHAIN) + LINK; Type linkType = CasUtil.getType(aJCas.getCas(), baseName); AnnotationFS newLink = aJCas.getCas().createAnnotation(linkType, aBegin, aEnd); BratAjaxCasUtil.setFeature(newLink, aFeature, aLabelValue); aJCas.getCas().addFsToIndexes(newLink); return newLink; }
/** * Generate one or multiple TokenSequences from the given document. If {@code * PARAM_MODEL_ENTITY_TYPE} is set, an instance is generated from each segment annotated with the * given type. Otherwise, one instance is generated from the whole document. * * @param aJCas * @return * @throws FeaturePathException */ protected Collection<TokenSequence> generateTokenSequences(JCas aJCas) throws FeaturePathException { Collection<TokenSequence> tokenSequences; CAS cas = aJCas.getCas(); Type tokenType = CasUtil.getType(cas, typeName); if (modelEntityType == null) { /* generate only one tokenSequence */ tokenSequences = new ArrayList<>(1); tokenSequences.add(generateTokenSequence(aJCas, tokenType, useLemma, minTokenLength)); } else { /* generate tokenSequences for every segment (e.g. sentence) */ tokenSequences = new ArrayList<>(); for (AnnotationFS segment : CasUtil.select(cas, CasUtil.getType(cas, modelEntityType))) { tokenSequences.add(generateTokenSequence(segment, tokenType)); } } return tokenSequences; }
@Override public Type getAnnotationType(CAS cas) { return CasUtil.getType(cas, annotationTypeName); }