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 19:25:39 UTC

svn commit: r1870643 - in /ctakes/trunk/ctakes-web-rest: docker/pom.xml src/main/java/org/apache/ctakes/rest/service/CuiResponse.java src/main/java/org/apache/ctakes/rest/util/JCasParser.java

Author: seanfinan
Date: Sat Nov 30 19:25:39 2019
New Revision: 1870643

URL: http://svn.apache.org/viewvc?rev=1870643&view=rev
Log:
Refactor CuiResponse and JCasParser.
Add dependency-parser-res-clear to docker pom dependencies.

Modified:
    ctakes/trunk/ctakes-web-rest/docker/pom.xml
    ctakes/trunk/ctakes-web-rest/src/main/java/org/apache/ctakes/rest/service/CuiResponse.java
    ctakes/trunk/ctakes-web-rest/src/main/java/org/apache/ctakes/rest/util/JCasParser.java

Modified: ctakes/trunk/ctakes-web-rest/docker/pom.xml
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-web-rest/docker/pom.xml?rev=1870643&r1=1870642&r2=1870643&view=diff
==============================================================================
--- ctakes/trunk/ctakes-web-rest/docker/pom.xml (original)
+++ ctakes/trunk/ctakes-web-rest/docker/pom.xml Sat Nov 30 19:25:39 2019
@@ -184,6 +184,7 @@
 		<module>ctakes-core-res</module>
 		<module>ctakes-coreference-res</module>
 		<module>ctakes-dependency-parser-res</module>
+		<module>ctakes-dependency-parser-res-clear</module>
 		<module>ctakes-dictionary-lookup-res</module>
 		<module>ctakes-lvg-res</module>
 		<module>ctakes-pos-tagger-res</module>
@@ -752,6 +753,13 @@
 			<dependency>
 				<groupId>org.apache.ctakes</groupId>
 				<artifactId>
+					ctakes-dependency-parser-res-clear
+				</artifactId>
+				<version>${project.version}</version>
+			</dependency>
+			<dependency>
+				<groupId>org.apache.ctakes</groupId>
+				<artifactId>
 					ctakes-relation-extractor
 				</artifactId>
 				<version>${project.version}</version>
@@ -989,8 +997,9 @@
                      		<additionalClasspathElement>ctakes-constituency-parser-res/src/main/resources</additionalClasspathElement>
 						    <additionalClasspathElement>ctakes-core-res/src/main/resources</additionalClasspathElement>
 						    <additionalClasspathElement>ctakes-coreference-res/src/main/resources</additionalClasspathElement>
-						    <additionalClasspathElement>ctakes-dependency-parser-res/src/main/resources</additionalClasspathElement>	
-						    <additionalClasspathElement>ctakes-dictionary-lookup-res/src/main/resources</additionalClasspathElement>
+							<additionalClasspathElement>ctakes-dependency-parser-res/src/main/resources</additionalClasspathElement>
+							<additionalClasspathElement>ctakes-dependency-parser-res-clear/src/main/resources</additionalClasspathElement>
+							<additionalClasspathElement>ctakes-dictionary-lookup-res/src/main/resources</additionalClasspathElement>
 						    <additionalClasspathElement>ctakes-drug-ner-res/src/main/resources</additionalClasspathElement>						    						    					    						    						    						    						    
 						    <additionalClasspathElement>ctakes-lvg-res/src/main/resources</additionalClasspathElement>
 						    <additionalClasspathElement>ctakes-ne-contexts-res/src/main/resources</additionalClasspathElement>

Modified: ctakes/trunk/ctakes-web-rest/src/main/java/org/apache/ctakes/rest/service/CuiResponse.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-web-rest/src/main/java/org/apache/ctakes/rest/service/CuiResponse.java?rev=1870643&r1=1870642&r2=1870643&view=diff
==============================================================================
--- ctakes/trunk/ctakes-web-rest/src/main/java/org/apache/ctakes/rest/service/CuiResponse.java (original)
+++ ctakes/trunk/ctakes-web-rest/src/main/java/org/apache/ctakes/rest/service/CuiResponse.java Sat Nov 30 19:25:39 2019
@@ -32,6 +32,7 @@ import java.util.Map;
  * Created by tmill on 12/20/18.
  */
 public class CuiResponse {
+    final private String _type;
     public int begin;
     public int end;
     public String text;
@@ -39,6 +40,7 @@ public class CuiResponse {
     public List<Map<String,String>> conceptAttributes = new ArrayList<>();
 
     public CuiResponse(Annotation annotation){
+        _type = annotation.getClass().getSimpleName();
         begin = annotation.getBegin();
         end = annotation.getEnd();
         text = annotation.getCoveredText();
@@ -58,4 +60,9 @@ public class CuiResponse {
             }
         }
     }
+
+    final public String getType() {
+        return _type;
+    }
+
 }

Modified: ctakes/trunk/ctakes-web-rest/src/main/java/org/apache/ctakes/rest/util/JCasParser.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-web-rest/src/main/java/org/apache/ctakes/rest/util/JCasParser.java?rev=1870643&r1=1870642&r2=1870643&view=diff
==============================================================================
--- ctakes/trunk/ctakes-web-rest/src/main/java/org/apache/ctakes/rest/util/JCasParser.java (original)
+++ ctakes/trunk/ctakes-web-rest/src/main/java/org/apache/ctakes/rest/util/JCasParser.java Sat Nov 30 19:25:39 2019
@@ -25,50 +25,62 @@ import org.apache.uima.fit.util.JCasUtil
 import org.apache.uima.jcas.JCas;
 import org.apache.uima.jcas.tcas.Annotation;
 
-import java.util.ArrayList;
-import java.util.HashMap;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
+ * Extracts desired Annotations from a jcas, returning information as a map containing {@link CuiResponse}.
+ *
  * Created by tmill on 12/20/18.
  */
-public class JCasParser {
-    List<Class<? extends Annotation>> semClasses = new ArrayList<>();
+final public class JCasParser {
+
+   final private List<Class<? extends Annotation>> semClasses;
+
+   /**
+    * Initializes a list indicating which Annotation types are of interest.
+    */
+   public JCasParser(){
+      semClasses = Arrays.asList(
+
+            // CUI types:
+            DiseaseDisorderMention.class,
+            SignSymptomMention.class,
+            ProcedureMention.class,
+            AnatomicalSiteMention.class,
+            MedicationMention.class,
+
+            // Temporal types:
+            TimeMention.class,
+            DateAnnotation.class,
+
+            // Drug-related types:
+            FractionStrengthAnnotation.class,
+            DrugChangeStatusAnnotation.class,
+            StrengthUnitAnnotation.class,
+            StrengthAnnotation.class,
+            RouteAnnotation.class,
+            FrequencyUnitAnnotation.class,
+            MeasurementAnnotation.class
+
+      );
+
+   }
+
+   /**
+    * @param jcas ye olde ...
+    * @return A Map, key is annotation class name (type), value is a list of {@link CuiResponse},
+    * one for each annotation of interest.
+    */
+   public Map<String, List<CuiResponse>> parse( final JCas jcas ) { //throws Exception {
+
+      return JCasUtil.select( jcas, Annotation.class ).stream()
+                     .filter( a -> semClasses.contains( a.getClass() ) )
+                     .map( CuiResponse::new )
+                     .collect( Collectors.groupingBy( CuiResponse::getType ) );
+
+   }
 
-    public JCasParser(){
-        // CUI types:
-        semClasses.add(DiseaseDisorderMention.class);
-        semClasses.add(SignSymptomMention.class);
-        semClasses.add(ProcedureMention.class);
-        semClasses.add(AnatomicalSiteMention.class);
-        semClasses.add(MedicationMention.class);
-
-        // Temporal types:
-        semClasses.add(TimeMention.class);
-        semClasses.add(DateAnnotation.class);
-
-        // Drug-related types:
-        semClasses.add(FractionStrengthAnnotation.class);
-        semClasses.add(DrugChangeStatusAnnotation.class);
-        semClasses.add(StrengthUnitAnnotation.class);
-        semClasses.add(StrengthAnnotation.class);
-        semClasses.add(RouteAnnotation.class);
-        semClasses.add(FrequencyUnitAnnotation.class);
-        semClasses.add(MeasurementAnnotation.class);
-    }
-
-    public Map<String, List<CuiResponse>> parse(JCas jcas) throws Exception {
-
-        Map<String, List<CuiResponse>> responseMap = new HashMap<>();
-        for(Class<? extends Annotation> semClass : semClasses){
-            List<CuiResponse> annotations = new ArrayList<>();
-            for(Annotation annot : JCasUtil.select(jcas, semClass)){
-                CuiResponse response = new CuiResponse(annot);
-                annotations.add(response);
-            }
-            responseMap.put(semClass.getSimpleName(), annotations);
-        }
-        return responseMap;
-    }
 }