Return-Path: X-Original-To: apmail-ctakes-commits-archive@www.apache.org Delivered-To: apmail-ctakes-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 7C42FCEF8 for ; Thu, 27 Jun 2013 17:42:36 +0000 (UTC) Received: (qmail 62205 invoked by uid 500); 27 Jun 2013 17:42:33 -0000 Delivered-To: apmail-ctakes-commits-archive@ctakes.apache.org Received: (qmail 62104 invoked by uid 500); 27 Jun 2013 17:42:25 -0000 Mailing-List: contact commits-help@ctakes.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ctakes.apache.org Delivered-To: mailing list commits@ctakes.apache.org Received: (qmail 61997 invoked by uid 99); 27 Jun 2013 17:42:22 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 27 Jun 2013 17:42:22 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 27 Jun 2013 17:42:19 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id C0CE52388A29; Thu, 27 Jun 2013 17:41:58 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1497475 - in /ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal: ae/CRFTimeAnnotator.java ae/MetaTimeAnnotator.java eval/EvaluationOfTimeSpans.java Date: Thu, 27 Jun 2013 17:41:58 -0000 To: commits@ctakes.apache.org From: tmill@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20130627174158.C0CE52388A29@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: tmill Date: Thu Jun 27 17:41:58 2013 New Revision: 1497475 URL: http://svn.apache.org/r1497475 Log: Changed meta time annotator to use CRF. Modified: ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/ae/CRFTimeAnnotator.java ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/ae/MetaTimeAnnotator.java ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/eval/EvaluationOfTimeSpans.java Modified: ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/ae/CRFTimeAnnotator.java URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/ae/CRFTimeAnnotator.java?rev=1497475&r1=1497474&r2=1497475&view=diff ============================================================================== --- ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/ae/CRFTimeAnnotator.java (original) +++ ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/ae/CRFTimeAnnotator.java Thu Jun 27 17:41:58 2013 @@ -35,18 +35,18 @@ import org.uimafit.factory.AnalysisEngin import org.uimafit.util.JCasUtil; public class CRFTimeAnnotator extends TemporalSequenceAnnotator_ImplBase { - public static AnalysisEngineDescription createDataWriterDescription( - Class> dataWriterClass, - File outputDirectory) throws ResourceInitializationException { - return AnalysisEngineFactory.createPrimitiveDescription( - CRFTimeAnnotator.class, - CleartkAnnotator.PARAM_IS_TRAINING, - true, - DefaultDataWriterFactory.PARAM_DATA_WRITER_CLASS_NAME, - dataWriterClass, - DirectoryDataWriterFactory.PARAM_OUTPUT_DIRECTORY, - outputDirectory); - } +// public static AnalysisEngineDescription createDataWriterDescription( +// Class> dataWriterClass, +// File outputDirectory) throws ResourceInitializationException { +// return AnalysisEngineFactory.createPrimitiveDescription( +// CRFTimeAnnotator.class, +// CleartkAnnotator.PARAM_IS_TRAINING, +// true, +// DefaultDataWriterFactory.PARAM_DATA_WRITER_CLASS_NAME, +// dataWriterClass, +// DirectoryDataWriterFactory.PARAM_OUTPUT_DIRECTORY, +// outputDirectory); +// } public static AnalysisEngineDescription createAnnotatorDescription(File modelDirectory) throws ResourceInitializationException { Modified: ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/ae/MetaTimeAnnotator.java URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/ae/MetaTimeAnnotator.java?rev=1497475&r1=1497474&r2=1497475&view=diff ============================================================================== --- ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/ae/MetaTimeAnnotator.java (original) +++ ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/ae/MetaTimeAnnotator.java Thu Jun 27 17:41:58 2013 @@ -18,11 +18,12 @@ import org.apache.uima.jcas.JCas; import org.apache.uima.resource.ResourceInitializationException; import org.apache.uima.util.CasCopier; import org.cleartk.classifier.CleartkAnnotator; -import org.cleartk.classifier.DataWriter; +import org.cleartk.classifier.CleartkSequenceAnnotator; import org.cleartk.classifier.Feature; -import org.cleartk.classifier.Instance; +import org.cleartk.classifier.Instances; +import org.cleartk.classifier.SequenceDataWriter; import org.cleartk.classifier.chunking.BIOChunking; -import org.cleartk.classifier.jar.DefaultDataWriterFactory; +import org.cleartk.classifier.jar.DefaultSequenceDataWriterFactory; import org.cleartk.classifier.jar.DirectoryDataWriterFactory; import org.cleartk.classifier.jar.GenericJarClassifierFactory; import org.uimafit.component.ViewCreatorAnnotator; @@ -30,14 +31,14 @@ import org.uimafit.factory.AggregateBuil import org.uimafit.factory.AnalysisEngineFactory; import org.uimafit.util.JCasUtil; -public class MetaTimeAnnotator extends TemporalEntityAnnotator_ImplBase { +public class MetaTimeAnnotator extends TemporalSequenceAnnotator_ImplBase { private BIOChunking timeChunking; static Class[] components = new Class[]{ BackwardsTimeAnnotator.class, TimeAnnotator.class, ConstituencyBasedTimeAnnotator.class, CRFTimeAnnotator.class }; public static AnalysisEngineDescription getDataWriterDescription( - Class> dataWriterClass, + Class> dataWriterClass, File directory) throws ResourceInitializationException { AggregateBuilder builder = new AggregateBuilder(); @@ -57,13 +58,20 @@ public class MetaTimeAnnotator extends T builder.add(CRFTimeAnnotator.createAnnotatorDescription( new File(directory, CRFTimeAnnotator.class.getSimpleName())), TimeAnnotator.TIMEX_VIEW, CRFTimeAnnotator.class.getSimpleName()); - builder.add(AnalysisEngineFactory.createPrimitiveDescription(MetaTimeAnnotator.class, - CleartkAnnotator.PARAM_IS_TRAINING, - true, - DefaultDataWriterFactory.PARAM_DATA_WRITER_CLASS_NAME, - dataWriterClass, - DirectoryDataWriterFactory.PARAM_OUTPUT_DIRECTORY, - new File(directory, MetaTimeAnnotator.class.getSimpleName()))); +// builder.add(AnalysisEngineFactory.createPrimitiveDescription(MetaTimeAnnotator.class, +// CleartkAnnotator.PARAM_IS_TRAINING, +// true, +// DefaultDataWriterFactory.PARAM_DATA_WRITER_CLASS_NAME, +// dataWriterClass, +// DirectoryDataWriterFactory.PARAM_OUTPUT_DIRECTORY, +// new File(directory, MetaTimeAnnotator.class.getSimpleName()))); + builder.add(AnalysisEngineFactory.createPrimitiveDescription(MetaTimeAnnotator.class, + CleartkSequenceAnnotator.PARAM_IS_TRAINING, + true, + DefaultSequenceDataWriterFactory.PARAM_DATA_WRITER_CLASS_NAME, + dataWriterClass, + DirectoryDataWriterFactory.PARAM_OUTPUT_DIRECTORY, + new File(directory, MetaTimeAnnotator.class.getSimpleName()))); return builder.createAggregateDescription(); } @@ -87,7 +95,7 @@ public class MetaTimeAnnotator extends T TimeAnnotator.TIMEX_VIEW, CRFTimeAnnotator.class.getSimpleName()); builder.add(AnalysisEngineFactory.createPrimitiveDescription( MetaTimeAnnotator.class, - CleartkAnnotator.PARAM_IS_TRAINING, + CleartkSequenceAnnotator.PARAM_IS_TRAINING, false, GenericJarClassifierFactory.PARAM_CLASSIFIER_JAR_PATH, new File(directory, MetaTimeAnnotator.class.getSimpleName() + File.separator + "model.jar"))); @@ -106,6 +114,7 @@ public class MetaTimeAnnotator extends T throws AnalysisEngineProcessException { // classify tokens within each sentence for (Sentence sentence : JCasUtil.selectCovered(jCas, Sentence.class, segment)) { + List> sequenceFeatures = new ArrayList>(); List tokens = JCasUtil.selectCovered(jCas, BaseToken.class, sentence); // during training, the list of all outcomes for the tokens List outcomes; @@ -146,7 +155,7 @@ public class MetaTimeAnnotator extends T for(int componentNum = 0; componentNum < componentOutcomes.size(); componentNum++){ String outcome = componentOutcomes.get(componentNum).get(tokenIndex); if(tokenIndex > 0){ - features.add(new Feature("PreviousOutcome", outcomes.get(tokenIndex-1))); +// features.add(new Feature("PreviousOutcome", outcomes.get(tokenIndex-1))); features.add(new Feature(String.format("Component%d_PreviousLabel", componentNum), componentOutcomes.get(componentNum).get(tokenIndex-1))); } features.add(new Feature(String.format("Component%d_Label", componentNum), outcome)); @@ -158,17 +167,23 @@ public class MetaTimeAnnotator extends T } } - if (this.isTraining()) { - String outcome = outcomes.get(tokenIndex); - this.dataWriter.write(new Instance(outcome, features)); - } +// if (this.isTraining()) { +// String outcome = outcomes.get(tokenIndex); +// outcomes.add(outcome); +// instances.add(new Instance(outcome, features)); +// this.dataWriter.write(new Instance(outcome, features)); +// } // if predicting, add prediction to outcomes - else { - outcomes.add(this.classifier.classify(features)); - } +// else { +// outcomes.add(this.classifier.classify(features)); +// } + sequenceFeatures.add(features); } - if (!this.isTraining()) { + if (this.isTraining()) { + this.dataWriter.write(Instances.toInstances(outcomes, sequenceFeatures)); + }else{ + outcomes = this.classifier.classify(sequenceFeatures); this.timeChunking.createChunks(jCas, tokens, outcomes); } Modified: ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/eval/EvaluationOfTimeSpans.java URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/eval/EvaluationOfTimeSpans.java?rev=1497475&r1=1497474&r2=1497475&view=diff ============================================================================== --- ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/eval/EvaluationOfTimeSpans.java (original) +++ ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/eval/EvaluationOfTimeSpans.java Thu Jun 27 17:41:58 2013 @@ -74,7 +74,7 @@ public class EvaluationOfTimeSpans exten annotatorTrainingArguments.put(TimeAnnotator.class, new String[]{"-c", "0.1"}); annotatorTrainingArguments.put(ConstituencyBasedTimeAnnotator.class, new String[]{"-c", "0.1"}); annotatorTrainingArguments.put(CRFTimeAnnotator.class, new String[]{"-p", "c2=0.1"}); - annotatorTrainingArguments.put(MetaTimeAnnotator.class, new String[]{"-c", "1.0"}); + annotatorTrainingArguments.put(MetaTimeAnnotator.class, new String[]{"-p", "c2=0.1"}); // run one evaluation per annotator class final Map, AnnotationStatistics> annotatorStats = Maps.newHashMap(); @@ -135,7 +135,7 @@ public class EvaluationOfTimeSpans exten protected AnalysisEngineDescription getDataWriterDescription(File directory) throws ResourceInitializationException { if(MetaTimeAnnotator.class.isAssignableFrom(this.annotatorClass)){ - return MetaTimeAnnotator.getDataWriterDescription(LIBLINEARStringOutcomeDataWriter.class, directory); + return MetaTimeAnnotator.getDataWriterDescription(CRFSuiteStringOutcomeDataWriter.class, directory); }else if(CleartkAnnotator.class.isAssignableFrom(this.annotatorClass)){ return AnalysisEngineFactory.createPrimitiveDescription( this.annotatorClass,