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

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


          RapierPatternItemMapping newMapping = new RapierPatternItemMapping();
          newMapping.shorterPattern.add(firstItem);
          for (int li = 0; li <= maxi; li++)
            newMapping.longerPattern.add(longerPattern.get(li));
          currentMappingSequence.add(newMapping);
          TextRulerRulePattern restLongerPattern = new TextRulerRulePattern();
          TextRulerRulePattern restShorterPattern = new TextRulerRulePattern();
          for (int i = 1; i < shorterPattern.size(); i++)
            restShorterPattern.add(shorterPattern.get(i));
          for (int i = maxi + 1; i < longerPattern.size(); i++)
            restLongerPattern.add(longerPattern.get(i));

          // recurse:
          recursiveBuildAllPossiblePatternMappingSequences(restLongerPattern, restShorterPattern,
View Full Code Here


    }

    // afterwards we have again to create all possible combinations of those
    // lists (like in the equalSizeGeneralization):
    // Each combination is a new pattern
    recursiveBuildAllRuleItemCombinations(generalizationTable, 0, new TextRulerRulePattern(),
            resultList);
    return resultList;
  }
View Full Code Here

            matchedSegment.longerPattern.add(longerPattern.get(li));
            currentSegmentation.add(matchedSegment);

            // the rest is now the rest to the right of both (so
            // li+1 and si+1 to the ends...)
            TextRulerRulePattern restLongerPattern = new TextRulerRulePattern();
            TextRulerRulePattern restShorterPattern = new TextRulerRulePattern();
            for (int i = li + 1; i < longerPattern.size(); i++)
              restLongerPattern.add(longerPattern.get(i));
            for (int i = si + 1; i < shorterPattern.size(); i++)
              restShorterPattern.add(shorterPattern.get(i));

            // recurse...
            if (restLongerPattern.size() > restShorterPattern.size())
              recursiveFindPatternSegmentsByMatchingPatternItems(restLongerPattern,
                      restShorterPattern, currentSegmentation, resultList);
            else
              recursiveFindPatternSegmentsByMatchingPatternItems(restShorterPattern,
                      restLongerPattern, currentSegmentation, resultList);
View Full Code Here

    // new
    // generalized
    // patterns

    recursiveBuildAllRuleItemCombinationsFromPatterns(generalizationTable, 0,
            new TextRulerRulePattern(), resultList);

    return resultList;
  }
View Full Code Here

  private static void recursiveBuildAllRuleItemCombinationsFromPatterns(
          ArrayList<ArrayList<TextRulerRulePattern>> table, int curIndex,
          TextRulerRulePattern currentPattern, ArrayList<TextRulerRulePattern> resultPatterns) {
    if (curIndex >= table.size()) {
      // make a deep copy of the current pattern:
      TextRulerRulePattern copy = new TextRulerRulePattern();
      for (TextRulerRuleItem item : currentPattern)
        copy.add(item.copy());
      resultPatterns.add(copy);
    } else {
      for (TextRulerRulePattern pattern : table.get(curIndex)) {
        currentPattern.addAll(pattern);
        recursiveBuildAllRuleItemCombinationsFromPatterns(table, curIndex + 1, currentPattern,
View Full Code Here

    WhiskRule newRule = baseRule.copy();
    // int foundSlotNumber = -1; // debug info
    // String foundSlotPattern = "";
    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
View Full Code Here

    }
    if (slotIndex < 0) // we didn't even find the item in our rule ?! how
      // can this happen ?
      return null;

    TextRulerRulePattern currentPattern = getPattern(slotIndex, patternIndex);
    while (currentPattern != null) {
      int startIndex = currentPattern.indexOf(item); // this is only >= 0
      // for the first
      // pattern...
      if (!goToLeft) // walk forward...
      {
        int startSearchFromIndex = startIndex + 1;
        if (startSearchFromIndex < currentPattern.size())
          return (WhiskRuleItem) currentPattern.get(startSearchFromIndex);
        else // skip to next pattern
        {
          patternIndex++;
          if (patternIndex > 2) {
            patternIndex = 0;
            slotIndex++;
            if (slotIndex >= slotPatterns.size())
              return null; // not found!
          }
          currentPattern = getPattern(slotIndex, patternIndex);
        }
      } else {
        int startSearchFromIndex = startIndex >= 0 ? startIndex - 1 : currentPattern.size() - 1;
        if (startSearchFromIndex >= 0 && currentPattern.size() > 0)
          return (WhiskRuleItem) currentPattern.get(startSearchFromIndex);
        else // skip to previous pattern
        {
          patternIndex--;
          if (patternIndex < 0) {
            patternIndex = 2;
View Full Code Here

  public List<RapierRule> specializePreFiller(RapierRule curRule, int n) {
    RapierRule baseRule1 = curRule.getParent1();
    RapierRule baseRule2 = curRule.getParent2();
    int n1 = curRule.getParent1PreFiller_n();
    int n2 = curRule.getParent2PreFiller_n();
    TextRulerRulePattern preFiller1 = baseRule1.getPreFillerPattern();
    TextRulerRulePattern preFiller2 = baseRule2.getPreFillerPattern();
    int preFiller1MaxIndex = preFiller1.size() - n1 - 1;
    int preFiller2MaxIndex = preFiller2.size() - n2 - 1;

    // generate 3 different possible sets for generalizations:

    // 1. n vs. n-1 (n elements of baserule1, n-1 of baserule2)
    TextRulerRulePattern consideredPreFiller1 = new TextRulerRulePattern();
    TextRulerRulePattern consideredPreFiller2 = new TextRulerRulePattern();
    for (int i = preFiller1.size() - n; i >= 0 && i <= preFiller1MaxIndex; i++)
      consideredPreFiller1.add(preFiller1.get(i));
    for (int i = preFiller2.size() - n + 1; i >= 0 && i <= preFiller2MaxIndex; i++)
      consideredPreFiller2.add(preFiller2.get(i));
    List<TextRulerRulePattern> genList1 = null;
    if (consideredPreFiller1.size() + consideredPreFiller2.size() > 0)
      genList1 = RapierGeneralizationHelper.getGeneralizationsForRuleItemPatterns(
              consideredPreFiller1, consideredPreFiller2);

    List<TextRulerRulePattern> genList2 = null;
    List<TextRulerRulePattern> genList3 = null;

    if (useAllGenSetsAtSpecialization) // due to performance reasons the
    // user can switch this off
    {
      // 2. n-1 vs. n (n-1 elements of baserule1, n of baserule2)
      consideredPreFiller1.clear();
      consideredPreFiller2.clear();
      for (int i = preFiller1.size() - n + 1; i >= 0 && i <= preFiller1MaxIndex; i++)
        consideredPreFiller1.add(preFiller1.get(i));
      for (int i = preFiller2.size() - n; i >= 0 && i <= preFiller2MaxIndex; i++)
        consideredPreFiller2.add(preFiller2.get(i));

      if (consideredPreFiller1.size() + consideredPreFiller2.size() > 0)
        genList2 = RapierGeneralizationHelper.getGeneralizationsForRuleItemPatterns(
                consideredPreFiller1, consideredPreFiller2);

      // 3. n vs. n (n elements of baserule1, n of baserule2)
      consideredPreFiller1.clear();
      consideredPreFiller2.clear();
      for (int i = preFiller1.size() - n; i >= 0 && i <= preFiller1MaxIndex; i++)
        consideredPreFiller1.add(preFiller1.get(i));
      for (int i = preFiller2.size() - n; i >= 0 && i <= preFiller2MaxIndex; i++)
        consideredPreFiller2.add(preFiller2.get(i));
      if (consideredPreFiller1.size() + consideredPreFiller2.size() > 0)
        genList3 = RapierGeneralizationHelper.getGeneralizationsForRuleItemPatterns(
                consideredPreFiller1, consideredPreFiller2);
    }

    // TODO optimize and don't store all 3 genLists ! but for debugging
View Full Code Here

    }
    RapierRule baseRule1 = curRule.getParent1();
    RapierRule baseRule2 = curRule.getParent2();
    int n1 = curRule.getParent1PostFiller_n();
    int n2 = curRule.getParent2PostFiller_n();
    TextRulerRulePattern postFiller1 = baseRule1.getPostFillerPattern();
    TextRulerRulePattern postFiller2 = baseRule2.getPostFillerPattern();
    int postFiller1MinIndex = n1;
    int postFiller2MinIndex = n2;

    // generate 3 different possible sets for generalizations:

    // 1. n vs. n-1 (n elements of baserule1, n-1 of baserule2)
    TextRulerRulePattern consideredPostFiller1 = new TextRulerRulePattern();
    TextRulerRulePattern consideredPostFiller2 = new TextRulerRulePattern();
    for (int i = postFiller1MinIndex; i < postFiller1.size() && i < n; i++)
      consideredPostFiller1.add(postFiller1.get(i));
    for (int i = postFiller2MinIndex; i < postFiller2.size() && i < n - 1; i++)
      consideredPostFiller2.add(postFiller2.get(i));
    List<TextRulerRulePattern> genList1 = null;
    if (consideredPostFiller1.size() + consideredPostFiller2.size() > 0)
      genList1 = RapierGeneralizationHelper.getGeneralizationsForRuleItemPatterns(
              consideredPostFiller1, consideredPostFiller2);

    // 2. n-1 vs. n (n-1 elements of baserule1, n of baserule2)
    consideredPostFiller1.clear();
    consideredPostFiller2.clear();
    for (int i = postFiller1MinIndex; i < postFiller1.size() && i < n - 1; i++)
      consideredPostFiller1.add(postFiller1.get(i));
    for (int i = postFiller2MinIndex; i < postFiller2.size() && i < n; i++)
      consideredPostFiller2.add(postFiller2.get(i));
    List<TextRulerRulePattern> genList2 = null;
    if (consideredPostFiller1.size() + consideredPostFiller2.size() > 0)
      genList2 = RapierGeneralizationHelper.getGeneralizationsForRuleItemPatterns(
              consideredPostFiller1, consideredPostFiller2);

    // 3. n vs. n (n elements of baserule1, n of baserule2)
    consideredPostFiller1.clear();
    consideredPostFiller2.clear();
    for (int i = postFiller1MinIndex; i < postFiller1.size() && i < n; i++)
      consideredPostFiller1.add(postFiller1.get(i));
    for (int i = postFiller2MinIndex; i < postFiller2.size() && i < n; i++)
      consideredPostFiller2.add(postFiller2.get(i));
    List<TextRulerRulePattern> genList3 = null;
    if (consideredPostFiller1.size() + consideredPostFiller2.size() > 0)
      genList3 = RapierGeneralizationHelper.getGeneralizationsForRuleItemPatterns(
              consideredPostFiller1, consideredPostFiller2);

    // TODO optimize and don't store all 3 genLists ! but for debugging
    // purposes we keep them for now !
View Full Code Here

    for (int leftI = leftStart; leftI <= leftCount; leftI++)
      for (int rightI = rightStart; rightI <= rightCount; rightI++) {
        RapierRule newRule = strippedRule.copy();
        if (leftI > 0) {
          TextRulerRulePattern thePattern = null;
          if (leftType == 1)
            thePattern = newRule.getPreFillerPattern();
          else if (leftType == 2)
            thePattern = newRule.getFillerPattern();
          else if (leftType == 3)
            thePattern = newRule.getPostFillerPattern();
          for (int i = 0; i < leftI; i++) {
            RapierRuleItem theItem = left.copy();
            theItem.setListLen(0); // remove List-Character but add
            // listI copies instead!!
            thePattern.add(0, theItem);
          }
        }
        if (rightI > 0) {
          TextRulerRulePattern thePattern = null;
          if (rightType == 1)
            thePattern = newRule.getPostFillerPattern();
          else if (rightType == 2)
            thePattern = newRule.getFillerPattern();
          else if (rightType == 3)
            thePattern = newRule.getPreFillerPattern();
          for (int i = 0; i < rightI; i++) {
            RapierRuleItem theItem = right.copy();
            theItem.setListLen(0); // remove List-Character but add
            // listI copies instead!!
            thePattern.add(theItem);
          }
        }
        newRule.setNeedsCompile(true);
        if (newRule.totalItemCount() > 0) {
          // TextRulerToolkit.log(newRule.getRuleString());
View Full Code Here

TOP

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

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.