Package org.apache.ctakes.sideeffect.util

Examples of org.apache.ctakes.sideeffect.util.PatternMatch


  private boolean hasPatternOfPseDueToDrug(JCas jcas, PotentialSideEffect pse, String input) {
    //false if drug is negated
    if(pse.drug.getPolarity()==-1) return false;

    //false if not satisfied a given pattern
    PatternMatch pm = new PatternMatch("(<@PSE>).*(KW).*(<@DRUG>)", input, causeWord1);
    if(!pm.mat.find()) return false;
   
    //false if there is DRUG between @PSE and KW
    if(pm.isDrugBetween(pm.mat.end(1), pm.mat.start(2))) return false;
   
    //false if there is PSE between KW and @DRUG
    if(pm.isPseBetween(pm.mat.end(2), pm.mat.start(3))) return false;

    //if exist another DRUG(s) between KW and @DRUG (i.e., KW...DRUG...@DRUG)
    //only "and" "or" "," is permitted between DRUG and @DRUG
    int[] drugSpan={-1, -1};
    if(pm.isDrugBetween(pm.mat.end(2), pm.mat.start(3), drugSpan)) {
      if(pm.isDistantBetween(drugSpan[1], pm.mat.start(3)))
        return false;
    }
   
    return true;
  }
View Full Code Here


   * @param input modified SE sentence used for regular expression match
   * @return true if finds a given pattern, else false
   */
  private boolean hasPatternOfDrugDueToPse(JCas jcas, PotentialSideEffect pse, String input) {
    //false if not satisfied a given pattern
    PatternMatch pm = new PatternMatch("(<@DRUG>).*(KW).*(<@PSE>)", input, causeWord2);
    if(!pm.mat.find()) return false;
   
    //false if there is PSE between @DRUG and KW
    if(pm.isPseBetween(pm.mat.end(1), pm.mat.start(2))) return false;
   
    //false if there is DRUG between KW and @PSE
    if(pm.isDrugBetween(pm.mat.end(2), pm.mat.start(3))) return false;

    //if exist another DRUG(s) between @DRUG and KW (i.e., @DRUG...DRUG...KW)
    //only "and" "or" "," is permitted between @DRUG and DRUG
    if(pm.isDrugBetween(pm.mat.end(1), pm.mat.start(2))) {
      if(pm.isDistantBetween(pm.mat.end(1), pm.mat.start(2)))
        return false;
    }
   
    return true;
  }
View Full Code Here

   * @param pse potential side effect
   * @param input modified SE sentence used for regular expression match
   * @return true if finds a given pattern, else false
   */
  private boolean hasPatternOfDiscontDrugBecausePse(JCas jcas, PotentialSideEffect pse, String input) {
    PatternMatch pm = new PatternMatch("(KW).*(<@DRUG>).*(because|after).*(<@PSE>)", input, discontVerb);
    if(!pm.mat.find()) return false;
   
    if(pm.isPseBetween(pm.mat.end(1), pm.mat.start(2))) return false;
    if(pm.isPseBetween(pm.mat.end(2), pm.mat.start(3))) return false;
    if(pm.isDrugBetween(pm.mat.end(3), pm.mat.start(4))) return false;
    int[] drugSpan={-1, -1};
    if(pm.isDrugBetween(pm.mat.end(1), pm.mat.start(2), drugSpan)) {
      if(pm.isDistantBetween(drugSpan[1], pm.mat.start(2)))
        return false;
    }
   
    return true;
  }
View Full Code Here

   * @param pse potential side effect
   * @param input modified SE sentence used for regular expression match
   * @return true if finds a given pattern, else false
   */
  private boolean hasPatternOfDrugDiscontBecausePse(JCas jcas, PotentialSideEffect pse, String input) {
    PatternMatch pm = new PatternMatch("(<@DRUG>).*(KW).*(because|after).*(<@PSE>)", input, discontVerb);
    if(!pm.mat.find()) return false;
   
    if(pm.isPseBetween(pm.mat.end(2), pm.mat.start(3))) return false;
    if(pm.isDrugBetween(pm.mat.end(2), pm.mat.start(3))) return false;
    if(pm.isDrugBetween(pm.mat.end(3), pm.mat.start(4))) return false;
    int[] drugSpan={-1, -1};
    if(pm.isDrugBetween(pm.mat.end(1), pm.mat.start(2), drugSpan)) {
      if(pm.isDistantBetween(pm.mat.end(1), drugSpan[0]))
        return false;
    }
   
    return true;
  }
View Full Code Here

   * @param pse potential side effect
   * @param input modified SE sentence used for regular expression match
   * @return true if finds a given pattern, else false
   */
  private boolean hasPatternOfNotePseWithDrug(JCas jcas, PotentialSideEffect pse, String input) {
    PatternMatch pm = new PatternMatch("(KW).*(<@PSE>).*(with).*(<@DRUG>)", input, noteVerb);
    if(!pm.mat.find()) return false;
   
    if(pm.isDrugBetween(pm.mat.end(1), pm.mat.start(2))) return false;
    if(pm.isDrugBetween(pm.mat.end(2), pm.mat.start(3))) return false;
    if(pm.isPseBetween(pm.mat.end(3), pm.mat.start(4))) return false;
    int[] drugSpan={-1, -1};
    if(pm.isDrugBetween(pm.mat.end(3), pm.mat.start(4), drugSpan)) {
      if(pm.isDistantBetween(drugSpan[1], pm.mat.start(4)))
        return false;
    }
   
    return true;
  }
View Full Code Here

   * @param pse potential side effect
   * @param input modified SE sentence used for regular expression match
   * @return true if finds a given pattern, else false
   */
  private boolean hasPatternOfDrugCausePse(JCas jcas, PotentialSideEffect pse, String input) {
    PatternMatch pm = new PatternMatch("(<@DRUG>).*(KW).*(<@PSE>)", input, causeVerb);
    if(!pm.mat.find()) return false;
   
    if(pm.isDrugBetween(pm.mat.end(2), pm.mat.start(3))) return false;
    int[] drugSpan={-1, -1};
    if(pm.isDrugBetween(pm.mat.end(1), pm.mat.start(2), drugSpan)) {
      if(pm.isDistantBetween(pm.mat.end(1), drugSpan[0]))
        return false;
    }
   
    return true;
  }
View Full Code Here

   * @param pse potential side effect
   * @param input modified SE sentence used for regular expression match
   * @return true if finds a given pattern, else false
   */
  private boolean hasPatternOfDrugMadePse(JCas jcas, PotentialSideEffect pse, String input) {
    PatternMatch pm = new PatternMatch("(<@DRUG>).*(KW)\\s(him|her)\\s(<@PSE>)", input, madeVerb);
    if(!pm.mat.find()) return false;
   
    int[] drugSpan={-1, -1};
    if(pm.isDrugBetween(pm.mat.end(1), pm.mat.start(2), drugSpan)) {
      if(pm.isDistantBetween(pm.mat.end(1), drugSpan[0]))
        return false;
    }
   
    return true
  }
View Full Code Here

    String pseStr = pse.ne.getCoveredText().replace('-',' ').toLowerCase().trim();
    if(sideEffectWord.contains(pseStr)) return false;
               
    //if there is no sideEffectWord in the sentence, return false
    String pseSen = pse.sentence.replace('-', ' ').toLowerCase().trim();
    PatternMatch pm = new PatternMatch("(KW)", pseSen, sideEffectWord);
    if(!pm.mat.find()) return false;
   
    //if sideEffectWord is negated return false
    Iterator neIter = FSUtil.getAnnotationsInSpanIterator(
        jcas, IdentifiedAnnotation.type, pse.senBegin, pse.senEnd+1);
View Full Code Here

   */ 
  private boolean hasPatternOfPseAfterDrug(JCas jcas, PotentialSideEffect pse, String input) {
    //if the pse sentence contains certain word, return false
    if(input.matches(".*(check).*")) return false;
   
    PatternMatch pm = new PatternMatch("(<@PSE>).*(KW).*(<@DRUG>)", input, afterWord);
    if(!pm.mat.find()) return false;
   
    if(pm.isDrugBetween(pm.mat.end(1), pm.mat.start(2))) return false;
    if(pm.isPseBetween(pm.mat.end(2), pm.mat.start(3))) return false;
    int[] drugSpan={-1, -1};
    if(pm.isDrugBetween(pm.mat.end(2), pm.mat.start(3), drugSpan)) {
      if(pm.isDistantBetween(drugSpan[1], pm.mat.start(3)))
        return false;
    }
   
    return true;
  }
View Full Code Here

   * @param input modified SE sentence used for regular expression match
   * @return true if satisfies given conditions, else false
   */
  private boolean isInParenthesis(JCas jcas, PotentialSideEffect pse, String input) {
    //if pse is not in the parenthesis return false   
    PatternMatch pm = new PatternMatch("(<@DRUG>)\\s(\\(.*<@PSE>.*\\))", input);
    if(!pm.mat.find()) return false;
   
    //if "for" or "treated with" is also in the parenthesis, return false
    if(pm.mat.group(2).matches("\\(.*((for)|(treated with)).*\\)")) return false;

View Full Code Here

TOP

Related Classes of org.apache.ctakes.sideeffect.util.PatternMatch

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.