Package org.apache.uima.ruta.textruler.core

Examples of org.apache.uima.ruta.textruler.core.TextRulerSlotPattern


        theRule = new WienRule(this, target);
        List<TextRulerSlotPattern> rPatterns = theRule.getPatterns();
        int totalItemCount = 0;
        for (int k = 0; k < slotNames.length; k++) {
          WienRuleItem slotItem = new WienRuleItem((TextRulerAnnotation) null);
          TextRulerSlotPattern rP = new TextRulerSlotPattern();
          rPatterns.add(rP);
          PatternPair p = patternPairs.get(k);
          for (int i = 0; i < p.l.size(); i++) {
            WienRuleItem item = (WienRuleItem) p.l.get(i);
            if (k == 0 && i == 0) // the very first rule item:
View Full Code Here


    sendStatusUpdateToDelegate("Creating new rule from seed...", TextRulerLearnerState.ML_RUNNING,
            false);
    WhiskRule theRule = new WhiskRule(this, example.getTarget(), example);
    int numberOfSlotsInTag = example.getAnnotations().length;
    for (int i = 0; i < numberOfSlotsInTag; i++)
      theRule.getPatterns().add(new TextRulerSlotPattern());

    List<WhiskRuleItem> allTerms = getAllTermsOfExample(example);

    sendStatusUpdateToDelegate("Creating new rule: anchoring...", TextRulerLearnerState.ML_RUNNING,
            false);
View Full Code Here

    // determine, where this term is located relatively to the slots we
    // have...
    TextRulerRulePattern targetPattern = null;
    TextRulerRulePattern previousSlotPostFillerPattern = null;
    for (int i = 0; i < newRule.getPatterns().size(); i++) {
      TextRulerSlotPattern slotPattern = newRule.getPatterns().get(i);
      WhiskRuleItem it = (WhiskRuleItem) slotPattern.preFillerPattern.lastItem(); // look at the
      // prefiller
      // pattern
      if (it != null && termNumber <= it.getTermNumberInExample())
        targetPattern = slotPattern.preFillerPattern;
      if (targetPattern == null && slotPattern.fillerPattern.size() > 0) // now
      // look
      // at
      // the
      // filler
      // pattern
      {
        it = (WhiskRuleItem) slotPattern.fillerPattern.firstItem();
        if (termNumber < it.getTermNumberInExample()) // it's still for
          // the prefiller
          // pattern but it
          // seems to be
          // emtpy so we
          // could not find
          // that out above!
          targetPattern = slotPattern.preFillerPattern;
        else {
          it = (WhiskRuleItem) slotPattern.fillerPattern.lastItem();
          if (termNumber <= it.getTermNumberInExample()) {
            targetPattern = slotPattern.fillerPattern;
          }
        }
      }
      if (targetPattern == null && slotPattern.postFillerPattern.size() > 0) // now look at
      // the
      // postfiller
      // pattern
      {
        it = (WhiskRuleItem) slotPattern.postFillerPattern.firstItem();
        if (termNumber < it.getTermNumberInExample()) // it's still for
          // the filler
          // pattern but it
          // seems to be
          // emtpy so we
          // could not find
          // that out above!
          targetPattern = slotPattern.fillerPattern;
        else {
          it = (WhiskRuleItem) slotPattern.postFillerPattern.lastItem();
          if (termNumber <= it.getTermNumberInExample())
            targetPattern = slotPattern.postFillerPattern;
        }
      }
      if (targetPattern == null) {
        targetPattern = previousSlotPostFillerPattern;
        if (i > 0) {
          TextRulerSlotPattern prevSlotPattern = newRule.getPatterns().get(i - 1);
          foundSlotPattern = targetPattern == prevSlotPattern.preFillerPattern ? "PRE FILLER"
                  : (targetPattern == prevSlotPattern.fillerPattern ? "FILLER" : "POST FILLER");
          foundSlotNumber = i - 1;
        }
      } else {
View Full Code Here

    if (rule == null || inside.isEmpty()) {
      return null;
    }
    // create base 1 and base 2:
    WhiskRule base1 = rule.copy(); // slot filler rule
    TextRulerSlotPattern slotPattern = base1.getPatterns().get(slotIndex);
    for (int i = 0; i < inside.size(); i++)
      if (i == 0 || (i == inside.size() - 1))
        slotPattern.fillerPattern.add(inside.get(i).copy());
      else if (inside.size() > 2 && i < 2)
        slotPattern.fillerPattern.add(WhiskRuleItem.newWildCardItem(inside.get(i)
View Full Code Here

    this.isCorrectionRule = copyFrom.isCorrectionRule;
  }

  public KEPRule(TextRulerBasicLearner parentAlgorithm, TextRulerTarget target) {
    super(parentAlgorithm, target);
    slotPatterns.add(new TextRulerSlotPattern());
  }
View Full Code Here

    }
    return null;
  }

  private TextRulerRulePattern getPattern(int slotIndex, int patternIndex) {
    TextRulerSlotPattern sp = slotPatterns.get(slotIndex);
    if (patternIndex == 0)
      return sp.preFillerPattern;
    else if (patternIndex == 1)
      return sp.fillerPattern;
    else if (patternIndex == 2)
View Full Code Here

    }
    return null;
  }

  private TextRulerRulePattern getPattern(int slotIndex, int patternIndex) {
    TextRulerSlotPattern sp = slotPatterns.get(slotIndex);
    if (patternIndex == 0)
      return sp.preFillerPattern;
    else if (patternIndex == 1)
      return sp.fillerPattern;
    else if (patternIndex == 2)
View Full Code Here

    sendStatusUpdateToDelegate("Creating new rule from seed...", TextRulerLearnerState.ML_RUNNING,
            false);
    WhiskRule theRule = new WhiskRule(this, example.getTarget(), example);
    int numberOfSlotsInTag = example.getAnnotations().length;
    for (int i = 0; i < numberOfSlotsInTag; i++)
      theRule.getPatterns().add(new TextRulerSlotPattern());

    sendStatusUpdateToDelegate("Creating new rule: anchoring...", TextRulerLearnerState.ML_RUNNING,
            false);
    for (int i = 0; i < numberOfSlotsInTag; i++) {
      theRule = anchor(theRule, doc, example, i);
View Full Code Here

    int termBeginNumber = term.getWordConstraint().getTokenAnnotation().getBegin();
    int termEndNumber = term.getWordConstraint().getTokenAnnotation().getEnd();
    TextRulerRulePattern targetPattern = null;
    TextRulerRulePattern previousSlotPostFillerPattern = null;
    for (int i = 0; i < newRule.getPatterns().size(); i++) {
      TextRulerSlotPattern slotPattern = newRule.getPatterns().get(i);
      WhiskRuleItem it = (WhiskRuleItem) slotPattern.preFillerPattern.lastItem(); // look at the
      // prefiller
      // pattern
      if (it != null && it.getWordConstraint() != null
              && termEndNumber <= it.getWordConstraint().getTokenAnnotation().getBegin())
View Full Code Here

      if (rule == null || inside.isEmpty()) {
        return null;
      }
      // create base 1 and base 2:
      WhiskRule base1 = rule.copy(); // slot filler rule
      TextRulerSlotPattern slotPattern = base1.getPatterns().get(slotIndex);
      // questionable restriction:
      if (inside.size() <= windowSize) { // TODO add parameter for this!
        slotPattern.fillerPattern.addAll(inside);
      } else {
        for (int i = 0; i < inside.size(); i++)
          if (i == 0 || (i == inside.size() - 1))
            slotPattern.fillerPattern.add(inside.get(i).copy());
          else if (inside.size() > 2 && i < 2)
            slotPattern.fillerPattern.add(WhiskRuleItem.newWildCardItem());
      }
      List<WhiskRuleItem> beforeList = getTermsBefore(inside.get(0), example);
      List<WhiskRuleItem> afterList = getTermsAfter(inside.get(inside.size() - 1), example);
      beforeList.add(null);
      afterList.add(null);
      Collection<WhiskRule> tempRules = new HashSet<WhiskRule>();

      // workaround for better rules:
      // only inner begin
      for (WhiskRuleItem eachBefore : beforeList) {
        for (WhiskRuleItem eachAfter : afterList) {
          WhiskRule copy = rule.copy();
          TextRulerSlotPattern textRulerSlotPattern = copy.getPatterns().get(slotIndex);
          if (eachBefore != null) {
            textRulerSlotPattern.preFillerPattern.add(eachBefore);
          }
          textRulerSlotPattern.fillerPattern.add(inside.get(0).copy());
          textRulerSlotPattern.fillerPattern.add(WhiskRuleItem.newWildCardItem());
          if (eachAfter != null) {
            textRulerSlotPattern.postFillerPattern.add(eachAfter);
          }
          tempRules.add(copy);
        }
      }
      // only inner end
      for (WhiskRuleItem eachBefore : beforeList) {
        for (WhiskRuleItem eachAfter : afterList) {
          WhiskRule copy = rule.copy();
          TextRulerSlotPattern textRulerSlotPattern = copy.getPatterns().get(slotIndex);
          if (eachBefore != null) {
            textRulerSlotPattern.preFillerPattern.add(eachBefore);
          }
          textRulerSlotPattern.fillerPattern.add(WhiskRuleItem.newWildCardItem());
          textRulerSlotPattern.fillerPattern.add(inside.get(inside.size() - 1).copy());
          if (eachAfter != null) {
            textRulerSlotPattern.postFillerPattern.add(eachAfter);
          }
          tempRules.add(copy);
        }
      }

      if (!beforeList.isEmpty()) {
        if (!afterList.isEmpty()) {
          for (WhiskRuleItem eachBefore : beforeList) {
            for (WhiskRuleItem eachAfter : afterList) {
              WhiskRule copy = rule.copy();
              TextRulerSlotPattern textRulerSlotPattern = copy.getPatterns().get(slotIndex);
              if (eachBefore != null) {
                textRulerSlotPattern.preFillerPattern.add(eachBefore);
              }
              textRulerSlotPattern.fillerPattern.add(WhiskRuleItem.newWildCardItem());
              if (eachAfter != null) {
                textRulerSlotPattern.postFillerPattern.add(eachAfter);
              }
              tempRules.add(copy);
            }
          }
        } else {
          for (WhiskRuleItem eachBefore : beforeList) {
            WhiskRule copy = rule.copy();
            TextRulerSlotPattern textRulerSlotPattern = copy.getPatterns().get(slotIndex);
            textRulerSlotPattern.fillerPattern.add(WhiskRuleItem.newWildCardItem());
            if (eachBefore != null) {
              textRulerSlotPattern.preFillerPattern.add(eachBefore);
            }
            tempRules.add(copy);
          }
        }
      } else {
        for (WhiskRuleItem eachAfter : afterList) {
          WhiskRule copy = rule.copy();
          TextRulerSlotPattern textRulerSlotPattern = copy.getPatterns().get(slotIndex);
          textRulerSlotPattern.fillerPattern.add(WhiskRuleItem.newWildCardItem());
          if (eachAfter != null) {
            textRulerSlotPattern.postFillerPattern.add(eachAfter);
          }
          tempRules.add(copy);
View Full Code Here

TOP

Related Classes of org.apache.uima.ruta.textruler.core.TextRulerSlotPattern

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.