You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ctakes.apache.org by cl...@apache.org on 2013/05/09 16:07:18 UTC

svn commit: r1480643 - in /ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal: ae/NEPredicateEventAnnotator.java eval/EvaluationOfNEPredicateEventSpans.java

Author: clin
Date: Thu May  9 14:07:18 2013
New Revision: 1480643

URL: http://svn.apache.org/r1480643
Log:
Add a baseline for event detection: Add selected NEs and Predicates to events. Evalutate: EvaluationOfNEPredicateEventSpans  

Added:
    ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/ae/NEPredicateEventAnnotator.java   (with props)
    ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/eval/EvaluationOfNEPredicateEventSpans.java   (with props)

Added: ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/ae/NEPredicateEventAnnotator.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/ae/NEPredicateEventAnnotator.java?rev=1480643&view=auto
==============================================================================
--- ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/ae/NEPredicateEventAnnotator.java (added)
+++ ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/ae/NEPredicateEventAnnotator.java Thu May  9 14:07:18 2013
@@ -0,0 +1,82 @@
+package org.apache.ctakes.temporal.ae;
+
+import java.io.File;
+
+import org.apache.ctakes.typesystem.type.refsem.Event;
+import org.apache.ctakes.typesystem.type.textsem.EntityMention;
+import org.apache.ctakes.typesystem.type.textsem.EventMention;
+import org.apache.ctakes.typesystem.type.textsem.Predicate;
+import org.apache.ctakes.typesystem.type.textspan.Segment;
+import org.apache.uima.analysis_engine.AnalysisEngineDescription;
+import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
+import org.apache.uima.jcas.JCas;
+import org.apache.uima.resource.ResourceInitializationException;
+import org.cleartk.classifier.CleartkAnnotator;
+import org.cleartk.classifier.jar.GenericJarClassifierFactory;
+import org.uimafit.factory.AnalysisEngineFactory;
+import org.uimafit.util.JCasUtil;
+
+public class NEPredicateEventAnnotator extends TemporalEntityAnnotator_ImplBase {
+
+	public NEPredicateEventAnnotator() {
+		// TODO Auto-generated constructor stub
+	}
+
+	@Override
+	public void process(JCas jCas, Segment segment)
+			throws AnalysisEngineProcessException {
+		for (EntityMention neMention : JCasUtil.select(jCas, EntityMention.class)) {
+			// create the event object
+			Event event = new Event(jCas);
+			event.setConfidence(1.0f);
+
+			// create the event mention
+			EventMention eventMention = new EventMention(jCas, neMention.getBegin(), neMention.getEnd());
+			eventMention.setConfidence(1.0f);
+
+			// add the links between event, mention and properties
+			//  		  event.setProperties(eventProperties);
+			//  		  event.setMentions(neMention.getOntologyConceptArr());
+			eventMention.setEvent(event);
+			eventMention.setOntologyConceptArr(neMention.getOntologyConceptArr());
+
+			// add the annotations to the indexes
+			//  		  eventProperties.addToIndexes();
+			event.addToIndexes();
+			eventMention.addToIndexes();
+		}
+
+		//add predicates
+		for (Predicate predicate : JCasUtil.select(jCas, Predicate.class)) {
+			// create the event object
+			Event event = new Event(jCas);
+			event.setConfidence(1.0f);
+
+			// create the event mention
+			EventMention eventMention = new EventMention(jCas, predicate.getBegin(), predicate.getEnd());
+			eventMention.setConfidence(1.0f);
+
+			// add the links between event, mention and properties
+			//	  		  event.setProperties(eventProperties);
+			//	  		  event.setMentions(neMention.getOntologyConceptArr());
+			eventMention.setEvent(event);
+
+			// add the annotations to the indexes
+			//	  		  eventProperties.addToIndexes();
+			event.addToIndexes();
+			eventMention.addToIndexes();
+		}
+
+	}
+
+	public static AnalysisEngineDescription createAnnotatorDescription(File modelDirectory)
+		      throws ResourceInitializationException {
+		    return AnalysisEngineFactory.createPrimitiveDescription(
+		    	NEPredicateEventAnnotator.class,
+		    	CleartkAnnotator.PARAM_IS_TRAINING,
+		        false,
+		        GenericJarClassifierFactory.PARAM_CLASSIFIER_JAR_PATH,
+		        new File(modelDirectory, "model.jar"));
+	}
+
+}

Propchange: ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/ae/NEPredicateEventAnnotator.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/eval/EvaluationOfNEPredicateEventSpans.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/eval/EvaluationOfNEPredicateEventSpans.java?rev=1480643&view=auto
==============================================================================
--- ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/eval/EvaluationOfNEPredicateEventSpans.java (added)
+++ ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/eval/EvaluationOfNEPredicateEventSpans.java Thu May  9 14:07:18 2013
@@ -0,0 +1,91 @@
+package org.apache.ctakes.temporal.eval;
+
+import java.io.File;
+import java.util.Collection;
+import java.util.List;
+import java.util.logging.Level;
+
+import org.apache.ctakes.temporal.ae.NEPredicateEventAnnotator;
+import org.apache.ctakes.typesystem.type.textsem.EventMention;
+import org.apache.uima.analysis_engine.AnalysisEngineDescription;
+import org.apache.uima.jcas.JCas;
+import org.apache.uima.jcas.tcas.Annotation;
+import org.apache.uima.resource.ResourceInitializationException;
+import org.cleartk.eval.AnnotationStatistics;
+import org.uimafit.component.NoOpAnnotator;
+import org.uimafit.factory.AnalysisEngineFactory;
+
+import com.lexicalscope.jewel.cli.CliFactory;
+
+public class EvaluationOfNEPredicateEventSpans extends
+		EvaluationOfAnnotationSpans_ImplBase {
+
+	public EvaluationOfNEPredicateEventSpans(File baseDirectory,
+			File rawTextDirectory, File knowtatorXMLDirectory,
+			File xmiDirectory, File treebankDirectory,
+			Class<? extends Annotation> annotationClass) {
+		super(baseDirectory, rawTextDirectory, knowtatorXMLDirectory,
+				xmiDirectory, treebankDirectory, annotationClass);
+		// TODO Auto-generated constructor stub
+	}
+
+	public EvaluationOfNEPredicateEventSpans(File baseDirectory,
+			File rawTextDirectory, File knowtatorXMLDirectory,
+			File xmiDirectory) {
+		super(baseDirectory, rawTextDirectory, knowtatorXMLDirectory,
+				xmiDirectory, EventMention.class);
+		// TODO Auto-generated constructor stub
+	}
+
+	@Override
+	protected AnalysisEngineDescription getDataWriterDescription(File directory)
+			throws ResourceInitializationException {
+		// not training a model - just using the NEs and predicates
+	    return AnalysisEngineFactory.createPrimitiveDescription(NoOpAnnotator.class);
+	}
+
+	@Override
+	protected void trainAndPackage(File directory) throws Exception {
+		// TODO Auto-generated method stub
+
+	}
+
+	@Override
+	protected AnalysisEngineDescription getAnnotatorDescription(File directory)
+			throws ResourceInitializationException {
+		// not training a model - just using the NEs and predicates
+//		return AnalysisEngineFactory.createPrimitiveDescription(NoOpAnnotator.class);
+	    return NEPredicateEventAnnotator.createAnnotatorDescription(directory);
+	}
+
+	@Override
+	protected Collection<? extends Annotation> getGoldAnnotations(JCas jCas) {
+		return selectExact(jCas, EventMention.class);
+	}
+
+	@Override
+	protected Collection<? extends Annotation> getSystemAnnotations(JCas jCas) {
+		return selectExact(jCas, EventMention.class);
+	}
+
+	/**
+	 * @param args
+	 */
+	public static void main(String[] args) throws Exception{
+		Options options = CliFactory.parseArguments(Options.class, args);
+	    List<Integer> patientSets = options.getPatients().getList();
+	    List<Integer> trainItems = THYMEData.getTrainPatientSets(patientSets);
+	    List<Integer> devItems = THYMEData.getDevPatientSets(patientSets);
+	    EvaluationOfNEPredicateEventSpans evaluation = new EvaluationOfNEPredicateEventSpans(
+	        new File("target/eval/event-spans"),
+	        options.getRawTextDirectory(),
+	        options.getKnowtatorXMLDirectory(),
+	        options.getXMIDirectory());
+	    evaluation.prepareXMIsFor(patientSets);
+	    evaluation.setLogging(Level.FINE, new File("target/eval/ctakes-event-errors.log"));
+	    AnnotationStatistics<String> stats = evaluation.trainAndTest(trainItems, devItems);
+	    System.err.println(stats);
+
+	}
+
+}

Propchange: ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/eval/EvaluationOfNEPredicateEventSpans.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain