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;
}