You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ctakes.apache.org by se...@apache.org on 2019/11/30 18:36:51 UTC

svn commit: r1870635 - in /ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2: concept/DefaultConcept.java consumer/DefaultTermConsumer.java util/SemanticUtil.java

Author: seanfinan
Date: Sat Nov 30 18:36:50 2019
New Revision: 1870635

URL: http://svn.apache.org/viewvc?rev=1870635&view=rev
Log:
Refactor to use SemanticGroup and SemanticTui in core

Modified:
    ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/concept/DefaultConcept.java
    ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/DefaultTermConsumer.java
    ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/util/SemanticUtil.java

Modified: ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/concept/DefaultConcept.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/concept/DefaultConcept.java?rev=1870635&r1=1870634&r2=1870635&view=diff
==============================================================================
--- ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/concept/DefaultConcept.java (original)
+++ ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/concept/DefaultConcept.java Sat Nov 30 18:36:50 2019
@@ -1,15 +1,15 @@
 package org.apache.ctakes.dictionary.lookup2.concept;
 
+import org.apache.ctakes.core.semantic.SemanticGroup;
+import org.apache.ctakes.core.semantic.SemanticTui;
 import org.apache.ctakes.core.util.collection.CollectionMap;
 import org.apache.ctakes.core.util.collection.HashSetMap;
 import org.apache.ctakes.core.util.collection.ImmutableCollectionMap;
-import org.apache.ctakes.dictionary.lookup2.util.SemanticUtil;
-import org.apache.ctakes.typesystem.type.constants.CONST;
 
 import javax.annotation.concurrent.Immutable;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.HashSet;
+import java.util.stream.Collectors;
 
 /**
  * Author: SPF
@@ -52,13 +52,13 @@ final public class DefaultConcept implem
       _preferredText = preferredText;
       _codes = new ImmutableCollectionMap<>( codes );
       // Attempt to obtain one or more valid type ids from the tuis of the term
-      final Collection<Integer> ctakesSemantics = new HashSet<>();
-      getCodes( TUI ).forEach( t -> ctakesSemantics.add( SemanticUtil.getTuiSemanticGroupId( t ) ) );
-//      final Collection<Integer> ctakesSemantics = getCodes( TUI ).stream()
-//            .map( SemanticUtil::getTuiSemanticGroupId )
-//            .collect( Collectors.toSet() );
+      Collection<Integer> ctakesSemantics
+            = getCodes( TUI ).stream()
+                             .map( SemanticTui::getTuiFromCode )
+                             .map( SemanticTui::getGroupCode )
+                             .collect( Collectors.toSet() );
       if ( ctakesSemantics.isEmpty() ) {
-         ctakesSemantics.add( CONST.NE_TYPE_ID_UNKNOWN );
+         ctakesSemantics = Collections.singletonList( SemanticGroup.UNKNOWN.getCode() );
       }
       _ctakesSemantics = Collections.unmodifiableCollection( ctakesSemantics );
       _hashcode = cui.hashCode();

Modified: ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/DefaultTermConsumer.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/DefaultTermConsumer.java?rev=1870635&r1=1870634&r2=1870635&view=diff
==============================================================================
--- ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/DefaultTermConsumer.java (original)
+++ ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/DefaultTermConsumer.java Sat Nov 30 18:36:50 2019
@@ -19,15 +19,16 @@
 package org.apache.ctakes.dictionary.lookup2.consumer;
 
 import org.apache.ctakes.core.resource.FileLocator;
+import org.apache.ctakes.core.semantic.SemanticGroup;
+import org.apache.ctakes.core.semantic.SemanticTui;
 import org.apache.ctakes.core.util.collection.CollectionMap;
 import org.apache.ctakes.core.util.collection.HashSetMap;
 import org.apache.ctakes.dictionary.lookup2.concept.Concept;
 import org.apache.ctakes.dictionary.lookup2.textspan.TextSpan;
 import org.apache.ctakes.dictionary.lookup2.util.CuiCodeUtil;
-import org.apache.ctakes.dictionary.lookup2.util.SemanticUtil;
 import org.apache.ctakes.typesystem.type.constants.CONST;
 import org.apache.ctakes.typesystem.type.refsem.UmlsConcept;
-import org.apache.ctakes.typesystem.type.textsem.*;
+import org.apache.ctakes.typesystem.type.textsem.IdentifiedAnnotation;
 import org.apache.ctakes.utils.env.EnvironmentVariable;
 import org.apache.log4j.Logger;
 import org.apache.uima.UimaContext;
@@ -41,7 +42,6 @@ import java.io.IOException;
 import java.io.InputStreamReader;
 import java.util.*;
 
-import static org.apache.ctakes.typesystem.type.constants.CONST.*;
 
 
 /**
@@ -199,27 +199,9 @@ final public class DefaultTermConsumer e
    }
 
    static private IdentifiedAnnotation createSemanticAnnotation( final JCas jcas, final int cTakesSemantic ) {
-      switch ( cTakesSemantic ) {
-         case NE_TYPE_ID_DRUG: {
-            return new MedicationMention( jcas );
-         }
-         case NE_TYPE_ID_ANATOMICAL_SITE: {
-            return new AnatomicalSiteMention( jcas );
-         }
-         case NE_TYPE_ID_DISORDER: {
-            return new DiseaseDisorderMention( jcas );
-         }
-         case NE_TYPE_ID_FINDING: {
-            return new SignSymptomMention( jcas );
-         }
-         case NE_TYPE_ID_LAB: {
-            return new LabMention( jcas );
-         }
-         case NE_TYPE_ID_PROCEDURE: {
-            return new ProcedureMention( jcas );
-         }
-      }
-      return new EntityMention( jcas );
+      return SemanticGroup.getGroup( cTakesSemantic )
+                          .getCreator()
+                          .apply( jcas );
    }
 
    private Collection<UmlsConcept> createUmlsConcepts( final JCas jcas,
@@ -243,7 +225,7 @@ final public class DefaultTermConsumer e
          if ( !tuis.isEmpty() ) {
             for ( String tui : tuis ) {
                // the concept could have tuis outside this cTakes semantic group
-               if ( SemanticUtil.getTuiSemanticGroupId( tui ) == cTakesSemantic ) {
+               if ( SemanticTui.getTuiFromCode( tui ).getGroupCode() == cTakesSemantic ) {
                   umlsConcepts.addAll( _umlsConceptCreator.createUmlsConcepts( jcas, codingScheme, tui, concept ) );
                   added = true;
                }

Modified: ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/util/SemanticUtil.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/util/SemanticUtil.java?rev=1870635&r1=1870634&r2=1870635&view=diff
==============================================================================
--- ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/util/SemanticUtil.java (original)
+++ ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/util/SemanticUtil.java Sat Nov 30 18:36:50 2019
@@ -18,34 +18,33 @@
  */
 package org.apache.ctakes.dictionary.lookup2.util;
 
-import org.apache.ctakes.typesystem.type.constants.CONST;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
+import org.apache.ctakes.core.semantic.SemanticTui;
 
 /**
+ *
  * Utility class to aid in the handling of semantic groups, semantic types, and tuis.
  * Used most by the term consumers.
  * <p/>
  * Author: SPF
  * Affiliation: CHIP-NLP
  * Date: 2/25/14
+ * @deprecated
  */
+@Deprecated
 final public class SemanticUtil {
 
    private SemanticUtil() {
    }
 
    // cTakes types
-   static private final String[] DRUG = { "T109", "T110", "T114", "T115", "T116", "T118", "T119",
-                                          "T121", "T122", "T123", "T124", "T125", "T126", "T127",
-                                          "T129", "T130", "T131", "T195", "T196", "T197", "T200", "T203" };
-   static private final String[] DISO = { "T019", "T020", "T037", "T047", "T048", "T049", "T050", "T190", "T191" };
-   static private final String[] FIND = { "T033", "T034", "T040", "T041", "T042", "T043", "T044", "T045", "T046",
-                                          "T056", "T057", "T184" };
-   static private final String[] PROC = { "T059", "T060", "T061" };
-   static private final String[] ANAT = { "T021", "T022", "T023", "T024", "T025", "T026", "T029", "T030" };
+//   static private final String[] DRUG = { "T109", "T110", "T114", "T115", "T116", "T118", "T119",
+//                                          "T121", "T122", "T123", "T124", "T125", "T126", "T127",
+//                                          "T129", "T130", "T131", "T195", "T196", "T197", "T200", "T203" };
+//   static private final String[] DISO = { "T019", "T020", "T037", "T047", "T048", "T049", "T050", "T190", "T191" };
+//   static private final String[] FIND = { "T033", "T034", "T040", "T041", "T042", "T043", "T044", "T045", "T046",
+//                                          "T056", "T057", "T184" };
+//   static private final String[] PROC = { "T059", "T060", "T061" };
+//   static private final String[] ANAT = { "T021", "T022", "T023", "T024", "T025", "T026", "T029", "T030" };
 
    // non-cTakes types
    // cTakes ID 7.  What is Clinical Attribute?  Just the single [standard] type?
@@ -58,11 +57,11 @@ final public class SemanticUtil {
    //   static private final String[] PHEN = { "T034", "T038", "T068", "T069", "T067", "T070" };
 
 
-   static private final Collection<String> ANAT_TUIS = new HashSet<>( Arrays.asList( ANAT ) );
-   static private final Collection<String> DISO_TUIS = new HashSet<>( Arrays.asList( DISO ) );
-   static private final Collection<String> FIND_TUIS = new HashSet<>( Arrays.asList( FIND ) );
-   static private final Collection<String> PROC_TUIS = new HashSet<>( Arrays.asList( PROC ) );
-   static private final Collection<String> DRUG_TUIS = new HashSet<>( Arrays.asList( DRUG ) );
+//   static private final Collection<String> ANAT_TUIS = new HashSet<>( Arrays.asList( ANAT ) );
+//   static private final Collection<String> DISO_TUIS = new HashSet<>( Arrays.asList( DISO ) );
+//   static private final Collection<String> FIND_TUIS = new HashSet<>( Arrays.asList( FIND ) );
+//   static private final Collection<String> PROC_TUIS = new HashSet<>( Arrays.asList( PROC ) );
+//   static private final Collection<String> DRUG_TUIS = new HashSet<>( Arrays.asList( DRUG ) );
 
 
 //   static public final String UNKNOWN_SEMANTIC_GROUP = "UNKNOWN_SEMANTIC_GROUP";
@@ -131,18 +130,19 @@ final public class SemanticUtil {
     * @return the cTakes group for the given tui
     */
    static public Integer getTuiSemanticGroupId( final String tui ) {
-      if ( ANAT_TUIS.contains( tui ) ) {
-         return CONST.NE_TYPE_ID_ANATOMICAL_SITE;
-      } else if ( DISO_TUIS.contains( tui ) ) {
-         return CONST.NE_TYPE_ID_DISORDER;
-      } else if ( FIND_TUIS.contains( tui ) ) {
-         return CONST.NE_TYPE_ID_FINDING;
-      } else if ( PROC_TUIS.contains( tui ) ) {
-         return CONST.NE_TYPE_ID_PROCEDURE;
-      } else if ( DRUG_TUIS.contains( tui ) ) {
-         return CONST.NE_TYPE_ID_DRUG;
-      }
-      return CONST.NE_TYPE_ID_UNKNOWN;
+      return SemanticTui.getTuiFromCode( tui ).getGroupCode();
+//      if ( ANAT_TUIS.contains( tui ) ) {
+//         return CONST.NE_TYPE_ID_ANATOMICAL_SITE;
+//      } else if ( DISO_TUIS.contains( tui ) ) {
+//         return CONST.NE_TYPE_ID_DISORDER;
+//      } else if ( FIND_TUIS.contains( tui ) ) {
+//         return CONST.NE_TYPE_ID_FINDING;
+//      } else if ( PROC_TUIS.contains( tui ) ) {
+//         return CONST.NE_TYPE_ID_PROCEDURE;
+//      } else if ( DRUG_TUIS.contains( tui ) ) {
+//         return CONST.NE_TYPE_ID_DRUG;
+//      }
+//      return CONST.NE_TYPE_ID_UNKNOWN;
    }