Package org.apache.ctakes.typesystem.type.textspan

Examples of org.apache.ctakes.typesystem.type.textspan.Segment


      if (useSegments) {
        JFSIndexRepository indexes = jcas.getJFSIndexRepository();
        Iterator<?> segmentItr = indexes.getAnnotationIndex(Segment.type)
            .iterator();
        while (segmentItr.hasNext()) {
          Segment segmentAnnotation = (Segment) segmentItr.next();
          String segmentID = segmentAnnotation.getId();

          if (!skipSegmentsSet.contains(segmentID)) {
            int start = segmentAnnotation.getBegin();
            int end = segmentAnnotation.getEnd();
            annotateRange(jcas, text, start, end);
          }
        }
      } else {
        // annotate over full doc text
View Full Code Here


      if (entry.getKey().getContext() != null) {
        AnnotationIndex<Annotation> idx = aJCas
            .getAnnotationIndex(Segment.typeIndexID);
        FSIterator<Annotation> iter = idx.iterator();
        while (iter.hasNext()) {
          Segment segment = (Segment) iter.next();
          if (entry.getKey().getContext().equals(segment.getId())) {
            processRegex(aJCas, segment, entry.getKey(),
                entry.getValue());
          }
        }
      } else {
View Full Code Here

    JFSIndexRepository indexes = jcas.getJFSIndexRepository();
    Iterator<?> sectionItr = indexes.getAnnotationIndex(Segment.type)
        .iterator();
    while (sectionItr.hasNext()) {
      Segment sa = (Segment) sectionItr.next();
      String sectionID = sa.getId();
      if (!skipSegmentsSet.contains(sectionID)) {
        sentenceCount = annotateParagraph(jcas, text, sa.getBegin(),
            sa.getEnd(), sentenceCount);
      }
    }
  }
View Full Code Here

      if (log.isDebugEnabled()) {
        log.debug("applying regex:" + entry.getKey().getRegex());
      }
      Matcher matcher = entry.getValue().matcher(strDocText);
      while (matcher.find()) {
        Segment seg = new Segment(aJCas);
        if (entry.getKey().isLimitToRegex()
            && matcher.groupCount() == 1) {
          seg.setBegin(matcher.start(1));
          seg.setEnd(matcher.end(1));
        } else {
          seg.setBegin(matcher.start());
          if (entry.getKey().isLimitToRegex()) {
            seg.setEnd(matcher.end());
          }
        }
        seg.setId(entry.getKey().getSegmentID());
        if (log.isDebugEnabled()) {
          log.debug("found match: id=" + seg.getId() + ", begin="
              + seg.getBegin());
        }
        segmentsAdded.add(seg);
      }
    }
    if (log.isDebugEnabled()) {
      log.debug("segmentsAdded: " + segmentsAdded.size());
    }
    if (segmentsAdded.size() > 0) {
      // sort the segments by begin
      Collections.sort(segmentsAdded, new Comparator<Segment>() {

        // @Override
        public int compare(Segment o1, Segment o2) {
          return o1.getBegin() < o2.getBegin() ? -1
              : o1.getBegin() > o2.getBegin() ? 1 : 0;
        }

      });
      // set the end for each segment
      for (int i = 0; i < segmentsAdded.size(); i++) {
        Segment seg = segmentsAdded.get(i);
        Segment segNext = (i + 1) < segmentsAdded.size() ? segmentsAdded
            .get(i + 1) : null;
        if (seg.getEnd() <= 0) {
          if (segNext != null) {
            // set end to beginning of next segment
            seg.setEnd(segNext.getBegin() - 1);
          } else {
            // set end to doc end
            seg.setEnd(strDocText.length());
          }
        } else {
          // segments shouldn't overlap
          if (segNext != null && segNext.getBegin() < seg.getEnd()) {
            seg.setEnd(segNext.getBegin() - 1);
          }
        }
        if (log.isDebugEnabled()) {
          log.debug("Adding Segment: segment id=" + seg.getId()
              + ", begin=" + seg.getBegin() + ", end="
View Full Code Here

      addGapSegment(aJCas, end, strDocText.length());
    }
  }

  private void addGapSegment(JCas aJCas, int begin, int end) {
    Segment segGap = new Segment(aJCas);
    segGap.setBegin(begin);
    segGap.setEnd(end);
    segGap.addToIndexes();
    segGap.setId(defaultSegmentId);
  }
View Full Code Here

      for (String id : patterns.keySet()) {
        Pattern p = patterns.get(id);
        // System.out.println("Pattern" + p);
        Matcher m = p.matcher(text);
        while (m.find()) {
          Segment segment = new Segment(jCas);
          segment.setBegin(m.start());
          segment.setEnd(m.end());
          segment.setId(id);         
          sorted_segments.add(segment);
        }
      }
      // If there are non segments, create a simple one that spans the
      // entire doc
      if (sorted_segments.size() <= 0) {
        Segment header = new Segment(jCas);
        header.setBegin(0);
        header.setEnd(text.length());
        header.setId(SIMPLE_SEGMENT);
        sorted_segments.add(header);
      }     
      // TODO: this is kinda redundant, but needed the sections in sorted
      // Order to determine the end of section which is assumed to be the
      // beginning of the next section
      Collections.sort(sorted_segments, new Comparator<Segment>() {
        public int compare(Segment s1, Segment s2) {
          return s1.getBegin() - (s2.getBegin());
        }
      });
      int index = 0;
      for (Segment s : sorted_segments) {
        int prevEnd = s.getEnd();
        int nextBegin = text.length();
        if (index > 0) {
          // handle case for first section
          sorted_segments.get(index - 1).getEnd();
        }
        if (index + 1 < sorted_segments.size()) {
          // handle case for last section
          nextBegin = sorted_segments.get(index + 1).getBegin();
        }
        // Only create a segment if there is some text.
        // Handle the case where it's an empty segement
        if (nextBegin > prevEnd) {
          Segment segment = new Segment(jCas);
          segment.setBegin(prevEnd);
          segment.setEnd(nextBegin);
          segment.setId(s.getId());
          segment.addToIndexes();
          segment.setPreferredText(section_names.get(s.getId()));         
          index++;
        }
        // handle case where there is only a single SIMPLE_SEGMENT
        else if (nextBegin == prevEnd && nextBegin > 0 && index == 0) {
          Segment segment = new Segment(jCas);
          segment.setBegin(0);
          segment.setEnd(nextBegin);
          segment.setId(s.getId());
          segment.addToIndexes();
          index++;
        }
      } 
    }
  }
View Full Code Here

  /**
   * Entry point for processing.
   */
  @Override
  public void process(JCas jCas) throws AnalysisEngineProcessException {
    Segment segment = new Segment(jCas);
    segment.setBegin(0);
    String text = jCas.getDocumentText();
    if (text == null) {
      String docId = DocumentIDAnnotationUtil.getDocumentID(jCas);
      throw new AnalysisEngineProcessException("text is null for docId="
          + docId, null);
    }
    segment.setEnd(jCas.getDocumentText().length());
    segment.setId(segmentId);
    segment.addToIndexes();
  }
View Full Code Here

      prepareSubSection(jcas, indexes,
          iv_subMedSectionFSM.execute(baseTokenList));

      while (segmentItr.hasNext())
      {
        Segment seg = (Segment) segmentItr.next();
        if (iv_medicationRelatedSections.contains(seg.getId()))
          generateDrugMentions(jcas, seg, false);
        else
          generateDrugMentions(jcas, seg, true);
      }
View Full Code Here

    List sortedSubSecInds = sortSubSectionInd(subSectionIndSet.toArray());

    for (int i = 0, endBodyOffset = 0; i < sortedSubSecInds.size(); i++, endBodyOffset = 0)
    {
      SubSectionIndicator ssi = (SubSectionIndicator) sortedSubSecInds.get(i);
      Segment segment = getSegmentContainingOffsets(jcas, ssi.getStartOffset(),
          ssi.getEndOffset());
      endBodyOffset = segment.getEnd(); // backup

      SubSectionAnnotation ssa = new SubSectionAnnotation(jcas);

      ssa.setBegin(ssi.getStartOffset());
      // header is marked by the indicator
View Full Code Here

    JFSIndexRepository indexes = jcas.getJFSIndexRepository();
    Iterator segmentItr = indexes.getAnnotationIndex(Segment.type).iterator();

    while (segmentItr.hasNext())
    {
      Segment seg = (Segment) segmentItr.next();

      if (seg.getBegin() <= start && seg.getEnd() >= end)
        return seg;
    }

    return null; // did not find a segment - cannot happen - we always have
    // segments
View Full Code Here

TOP

Related Classes of org.apache.ctakes.typesystem.type.textspan.Segment

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.