Package edu.pitt.dbmi.nlp.noble.terminology

Examples of edu.pitt.dbmi.nlp.noble.terminology.Concept$Content


  private List<ConceptPath> toPaths(Terminology t, List<List<String>> paths) {
    List<ConceptPath> n = new ArrayList<ConceptPath>();
    for(List<String> p: paths){
      ConceptPath np = new ConceptPath();
      for(String s: p){
        Concept c = new Concept(s);
        c.setTerminology(t);
        np.add(c);
      }
      n.add(np);
    }
    return n;
View Full Code Here


    //return getAncestors(getPaths(c));
    Map<Concept,Integer> result = new LinkedHashMap<Concept, Integer>();
    try {
      Map<String, Integer> map = getAncestors(c,new HashSet<Concept>());
      for(String nm: map.keySet()){
        Concept cn = new Concept(nm);
        cn.setTerminology(terminology);
        result.put(cn,map.get(nm));
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
View Full Code Here

          ex.printStackTrace();
          //NOOP, just do default
        }
      }
    }
    return new Concept(cls);
  }
View Full Code Here

    // search regexp
    for(Concept c: searchRegExp(text)){
      if(!isFilteredOut(c)){
        c.setScore(1.0);
        if(result.containsKey(c)){
          Concept oc = result.get(c);
          for(String ot: c.getMatchedTerms())
            oc.addMatchedTerm(ot);
          for(Annotation a: c.getAnnotations())
            oc.addAnnotation(a);
        }else
          result.put(c,c);
      }
    }
   
    // for each word
    Set<String> usedWords = new HashSet<String>();
    int count = 0;
    for(String word : swords){
      count ++;
     
      // filter out junk
      if(ignoreSmallWords && word.length() <= 1)
        continue;
     
      // filter out common words
      if(ignoreCommonWords && TextTools.isCommonWord(word))
        continue;
     
      // if word is already in list of used words
      // save time and go on this time, but re-added for
      // later use in case the word is repeated later on
      if(ignoreUsedWords && usedWords.contains(word)){
        continue;
      }
     
      //Arrays.asList(TextTools.getWords(text))
      List<String> textWords = getTextWords(words,count);
      for(String term: getBestTerms(textWords,usedWords,word)){
        resultTerms.add(term);
        if(ignoreUsedWords)
          usedWords.addAll(getUsedWords(textWords,term));
      }
     
    }
   
    // create result list
    //time = System.currentTimeMillis();
    for(String term: resultTerms){
      Set<String> codes = storage.getTermMap().get(term);
     
      // Derive original looking term
      String oterm = getOriginalTerm(text, term, normWords);
           
      // create
      List<Concept> termConcepts = new ArrayList<Concept>();
      double score = getDefaultScore(term,oterm,resultTerms);
      for(String code: codes){
        Concept c = convertConcept(code);
        if(c != null){
          c.setInitialized(true);
        }else{
          c = new Concept(code,term);
        }
        // clone
        c = c.clone();
        c.setTerminology(this);
        c.addMatchedTerm(oterm);
        c.setSearchString(text);
       
        if(ignoreAcronyms && isAcronym(c))
          continue;
     
        scoreConcept(c,term,score);
       
        // filter out really bad ones
        if(!scoreConcepts || c.getScore() >= 0.5)
          termConcepts.add(c);
      }
      // add to results
      for(Concept c: getBestCandidates(termConcepts)){
        if(!isFilteredOut(c)){
          // if we have multipe annotations, deal with it better
          if(result.containsKey(c)){
            Concept oc = result.get(c);
            for(String ot: c.getMatchedTerms())
              oc.addMatchedTerm(ot);
            // this actually fails to identify multiple mentions
            //for(Annotation a: c.getAnnotations())
            //  oc.addAnnotation(a);
          }else
            result.put(c,c);
View Full Code Here

          return concepts;
        else
          return Collections.EMPTY_LIST;
      }
      // now find best
      Concept best = null;
      for(Concept c: concepts){
        if(best == null || best.getScore() < c.getScore())
          best = c;
      }
      return Collections.singletonList(best);
    }
    return concepts;
View Full Code Here

       
        String cls_str = storage.getRegexMap().get(re);
        String txt = m.group(1);    // THIS BETTER BE THERE,
        //System.out.println(cls_str+" "+txt+" for re: "+re); 
        // create concept from class
        Concept c = convertConcept(storage.getConceptMap().get(cls_str));
        c = c.clone();
        c.setSearchString(term);
        Annotation.addAnnotation(c, txt,m.start());
       
        // check if results already have similar entry
        // if new entry is better replace the old one
        for(ListIterator<Concept> it = result.listIterator();it.hasNext();){
          Concept b = it.next();
         
          // get offsets of concepts
          int st = c.getOffset();
          int en = c.getOffset()+c.getText().length();
         
          int stb = b.getOffset();
          int enb = b.getOffset()+b.getText().length();
         
          // if concept b (previous concept) is within concept c (new concept)
          if(st <=  stb && enb <= en)
            it.remove();
         
View Full Code Here

   * @return
   */
  public Concept[] getRootConcepts() throws TerminologyException {
    List<Concept> roots = new ArrayList<Concept>();
    for(String code: storage.getRootMap().keySet()){
      Concept c = lookupConcept(code);
      if(c != null)
        roots.add(c);
    }
    return roots.toArray(new Concept [0]);
  }
View Full Code Here

      if(relationMap != null){
        Map<Relation,Concept []> map = new HashMap<Relation,Concept []>();
        for(String key: relationMap.keySet()){
          List<Concept> list = new ArrayList<Concept>();
          for(String cui: relationMap.get(key)){
            Concept con = lookupConcept(cui);
            if(con != null)
              list.add(con);
          }
          map.put(Relation.getRelation(key),list.toArray(new Concept [0]));
        }
View Full Code Here

  public Concept convertConcept(Object obj) {
    if(obj instanceof Concept)
      return (Concept) obj;
    if(obj instanceof Concept.Content){
      Concept.Content c = (Concept.Content)obj;
      return (c.concept == null)?new Concept(c):c.concept;
    }
    if(obj instanceof String || obj instanceof URI){
      try{
        return lookupConcept(""+obj);
      }catch(Exception ex){
View Full Code Here

    }
    return null;
  }
 
  public Concept lookupConcept(String cui) throws TerminologyException {
    Concept c =  convertConcept(storage.getConceptMap().get(cui));
    if(c != null){
      c.setTerminology(this);
      c.setInitialized(true);
    }
    return c;
  }
View Full Code Here

TOP

Related Classes of edu.pitt.dbmi.nlp.noble.terminology.Concept$Content

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.