You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ctakes.apache.org by dl...@apache.org on 2014/04/18 23:50:10 UTC

svn commit: r1588575 - /ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/data/analysis/GoldRelationViewer.java

Author: dligach
Date: Fri Apr 18 21:50:10 2014
New Revision: 1588575

URL: http://svn.apache.org/r1588575
Log:
added event-time relations

Modified:
    ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/data/analysis/GoldRelationViewer.java

Modified: ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/data/analysis/GoldRelationViewer.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/data/analysis/GoldRelationViewer.java?rev=1588575&r1=1588574&r2=1588575&view=diff
==============================================================================
--- ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/data/analysis/GoldRelationViewer.java (original)
+++ ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/data/analysis/GoldRelationViewer.java Fri Apr 18 21:50:10 2014
@@ -19,18 +19,18 @@
 package org.apache.ctakes.temporal.data.analysis;
 
 import java.io.File;
-import java.io.FilenameFilter;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.ctakes.core.cr.XMIReader;
+import org.apache.ctakes.temporal.duration.Utils;
 import org.apache.ctakes.temporal.eval.CommandLine;
 import org.apache.ctakes.temporal.eval.THYMEData;
 import org.apache.ctakes.typesystem.type.relation.BinaryTextRelation;
 import org.apache.ctakes.typesystem.type.textsem.EventMention;
+import org.apache.ctakes.typesystem.type.textsem.TimeMention;
 import org.apache.ctakes.typesystem.type.textspan.Sentence;
 import org.apache.uima.analysis_engine.AnalysisEngine;
 import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
@@ -40,7 +40,6 @@ import org.apache.uima.jcas.JCas;
 import org.apache.uima.jcas.tcas.Annotation;
 import org.uimafit.component.JCasAnnotator_ImplBase;
 import org.uimafit.factory.AnalysisEngineFactory;
-import org.uimafit.factory.CollectionReaderFactory;
 import org.uimafit.pipeline.SimplePipeline;
 import org.uimafit.util.JCasUtil;
 
@@ -69,53 +68,14 @@ public class GoldRelationViewer {
 		
 		List<Integer> patientSets = options.getPatients().getList();
 		List<Integer> trainItems = THYMEData.getTrainPatientSets(patientSets);
-		List<File> trainFiles = getFilesFor(trainItems, options.getInputDirectory());
-    CollectionReader collectionReader = getCollectionReader(trainFiles);
+		List<File> trainFiles = Utils.getFilesFor(trainItems, options.getInputDirectory());
+    CollectionReader collectionReader = Utils.getCollectionReader(trainFiles);
 		
     AnalysisEngine annotationConsumer = AnalysisEngineFactory.createPrimitive(
     		RelationContextPrinter.class);
     		
 		SimplePipeline.runPipeline(collectionReader, annotationConsumer);
 	}
-	  
-	private static CollectionReader getCollectionReader(List<File> inputFiles) throws Exception {
-
-	  List<String> fileNames = new ArrayList<>();
-	  for(File file : inputFiles) {
-	    if(! (file.isHidden())) {
-	      fileNames.add(file.getPath());
-	    }
-	  }
-
-	  String[] paths = new String[fileNames.size()];
-	  fileNames.toArray(paths);
-
-	  return CollectionReaderFactory.createCollectionReader(
-	      XMIReader.class,
-	      XMIReader.PARAM_FILES,
-	      paths);
-	}
-
-	private static List<File> getFilesFor(List<Integer> patientSets, File inputDirectory) {
-	  
-	  List<File> files = new ArrayList<>();
-	  
-	  for (Integer set : patientSets) {
-	    final int setNum = set;
-	    for (File file : inputDirectory.listFiles(new FilenameFilter(){
-	      @Override
-	      public boolean accept(File dir, String name) {
-	        return name.contains(String.format("ID%03d", setNum));
-	      }})) {
-	      // skip hidden files like .svn
-	      if (!file.isHidden()) {
-	        files.add(file);
-	      } 
-	    }
-	  }
-	  
-	  return files;
-	}
 
   /**
    * Print gold standard relations and their context.
@@ -152,9 +112,12 @@ public class GoldRelationViewer {
 
       for(Sentence sentence : JCasUtil.select(systemView, Sentence.class)) {
         List<String> formattedRelationsInSentence = new ArrayList<>();
-        List<EventMention> eventMentions = JCasUtil.selectCovered(goldView, EventMention.class, sentence);
-        for(EventMention mention1 : eventMentions) {
-          for(EventMention mention2 : eventMentions) {
+        List<EventMention> eventMentionsInSentence = JCasUtil.selectCovered(goldView, EventMention.class, sentence);
+        List<TimeMention> timeMentionsInSentence = JCasUtil.selectCovered(goldView, TimeMention.class, sentence);
+        
+        // retrieve event-event relations in this sentence
+        for(EventMention mention1 : eventMentionsInSentence) {
+          for(EventMention mention2 : eventMentionsInSentence) {
             if(mention1 == mention2) {
               continue;
             }
@@ -165,6 +128,18 @@ public class GoldRelationViewer {
             }
           }
         }
+        
+        // retrieve event-time relations in this sentece
+        for(EventMention eventMention : eventMentionsInSentence) {
+          for(TimeMention timeMention : timeMentionsInSentence) {
+            BinaryTextRelation relation = relationLookup.get(Arrays.asList(timeMention, eventMention));
+            if(relation != null) {
+              String text = String.format("%s(%s, %s)", relation.getCategory(), timeMention.getCoveredText(), eventMention.getCoveredText());
+              formattedRelationsInSentence.add(text);
+            }
+          }
+        }
+        
         if(formattedRelationsInSentence.size() > 0) {
           System.out.println(sentence.getCoveredText());
           for(String text : formattedRelationsInSentence) {
@@ -174,19 +149,5 @@ public class GoldRelationViewer {
         }
       }
     }
-    
-    @SuppressWarnings("unused")
-    private static String getTextBetweenAnnotations(JCas jCas, Annotation arg1, Annotation arg2) {
-      
-      final int windowSize = 15;
-      
-      String text = jCas.getDocumentText();
-      int leftArgBegin = Math.min(arg1.getBegin(), arg2.getBegin());
-      int rightArgEnd = Math.max(arg1.getEnd(), arg2.getEnd());
-      int begin = Math.max(0, leftArgBegin - windowSize);
-      int end = Math.min(text.length(), rightArgEnd + windowSize); 
-      
-      return text.substring(begin, end).replaceAll("[\r\n]", " ");
-    }
   }
 }