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/17 18:26:57 UTC

svn commit: r1588303 - /ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/duration/ComputeDurationStatistics.java

Author: dligach
Date: Thu Apr 17 16:26:56 2014
New Revision: 1588303

URL: http://svn.apache.org/r1588303
Log:
now including relation context too

Modified:
    ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/duration/ComputeDurationStatistics.java

Modified: ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/duration/ComputeDurationStatistics.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/duration/ComputeDurationStatistics.java?rev=1588303&r1=1588302&r2=1588303&view=diff
==============================================================================
--- ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/duration/ComputeDurationStatistics.java (original)
+++ ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/duration/ComputeDurationStatistics.java Thu Apr 17 16:26:56 2014
@@ -38,6 +38,7 @@ import org.apache.uima.analysis_engine.A
 import org.apache.uima.cas.CASException;
 import org.apache.uima.collection.CollectionReader;
 import org.apache.uima.jcas.JCas;
+import org.apache.uima.jcas.tcas.Annotation;
 import org.uimafit.component.JCasAnnotator_ImplBase;
 import org.uimafit.descriptor.ConfigurationParameter;
 import org.uimafit.factory.AnalysisEngineFactory;
@@ -65,7 +66,7 @@ public class ComputeDurationStatistics {
 
     @Option(longName = "patients")
     public CommandLine.IntegerRanges getPatients();
-    
+
     @Option(longName = "output-file")
     public File getOutputFile();
   }
@@ -137,7 +138,7 @@ public class ComputeDurationStatistics {
         mandatory = true,
         description = "path to the file that stores relation data")
     private String outputFile;
-    
+
     public static final String GOLD_VIEW_NAME = "GoldView";
 
     @Override                                                                                                                  
@@ -184,14 +185,33 @@ public class ComputeDurationStatistics {
           Map<String, Float> timeDistribution = Utils.convertToDistribution(timeUnits.iterator().next());
           float eventExpectedDuration = Utils.expectedDuration(eventDistribution);
           float timeExpectedDuration = Utils.expectedDuration(timeDistribution);
-          String out = timeUnits.iterator().next() + "|" + timeExpectedDuration + "|" + eventText + "|" + eventExpectedDuration;
+          String out = String.format("%s|%.5f|%s|%.5f|%s\n", 
+              timeUnits.iterator().next(), timeExpectedDuration, 
+              eventText, eventExpectedDuration, getTextBetweenAnnotations(goldView, arg1.getArgument(), arg2.getArgument()));
           try {
-            Files.append(out + "\n", new File(outputFile), Charsets.UTF_8);
+            Files.append(out, new File(outputFile), Charsets.UTF_8);
           } catch (IOException e) {
             e.printStackTrace();
           }
         }
       }
     }
+
+
+    /** 
+     * Get relation context.
+     */
+    private static String getTextBetweenAnnotations(JCas jCas, Annotation arg1, Annotation arg2) {
+
+      final int windowSize = 5;
+      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]", " ");
+    }
   }
 }