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/03/24 20:05:20 UTC
svn commit: r1580998 -
/ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/ae/feature/duration/Utils.java
Author: dligach
Date: Mon Mar 24 19:05:20 2014
New Revision: 1580998
URL: http://svn.apache.org/r1580998
Log:
added a method to map steven's fine-grained time units to more corase ones
Modified:
ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/ae/feature/duration/Utils.java
Modified: ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/ae/feature/duration/Utils.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/ae/feature/duration/Utils.java?rev=1580998&r1=1580997&r2=1580998&view=diff
==============================================================================
--- ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/ae/feature/duration/Utils.java (original)
+++ ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/ae/feature/duration/Utils.java Mon Mar 24 19:05:20 2014
@@ -9,7 +9,9 @@ import info.bethard.timenorm.TimeSpanSet
import java.io.IOException;
import java.net.URL;
+import java.util.Arrays;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Map;
import org.threeten.bp.temporal.TemporalField;
@@ -26,8 +28,45 @@ import com.google.common.io.LineProcesso
*/
public class Utils {
+ // events and their duration distributions
public static final String durationDistributionPath = "/Users/dima/Boston/Thyme/Duration/Data/Combined/Distribution/mimic.txt";
+ // time units over which we define a duration distribution
+ public static final String[] bins = {"second", "minute", "hour", "day", "week", "month", "year"};
+
+ /**
+ * Take the time unit from Steven Bethard's noramlizer
+ * and output a coarser time unit: {"second", "minute", "hour", "day", "week", "month", "year"}.
+ */
+ public static String makeCoarse(String timeUnit) {
+
+ HashSet<String> allowableTimeUnits = new HashSet<String>(Arrays.asList(bins));
+
+ // map output of Steven Behard's normalizer to coarser time units
+ Map<String, String> mapping = ImmutableMap.<String, String>builder()
+ .put("afternoon", "hour")
+ .put("decade", "year")
+ .put("evening", "hour")
+ .put("fall", "month")
+ .put("winter", "month")
+ .put("morning", "hour")
+ .put("night", "hour")
+ .put("quarteryear", "year")
+ .put("spring", "month")
+ .put("summer", "month")
+ .build();
+
+ String singularAndLowercased = timeUnit.substring(0, timeUnit.length() - 1).toLowerCase();
+ if(allowableTimeUnits.contains(singularAndLowercased)) {
+ return singularAndLowercased;
+ }
+ if(mapping.get(singularAndLowercased) != null) {
+ return mapping.get(singularAndLowercased);
+ }
+
+ return null;
+ }
+
/**
* Compute expected duration in seconds. Normalize by number of seconds in a year.
*/
@@ -84,7 +123,6 @@ public class Utils {
*/
public static Map<String, Float> convertToDistribution(String timeUnit) {
- String[] bins = {"second", "minute", "hour", "day", "week", "month", "year"};
Map<String, Float> distribution = new HashMap<String, Float>();
for(String bin: bins) {