You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ctakes.apache.org by tm...@apache.org on 2013/08/05 22:55:24 UTC

svn commit: r1510726 - /ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/eval/Evaluation_ImplBase.java

Author: tmill
Date: Mon Aug  5 20:55:24 2013
New Revision: 1510726

URL: http://svn.apache.org/r1510726
Log:
Added getTest flag. Allow for partial patient-sets. Add a fix to annotations as they are read in.

Modified:
    ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/eval/Evaluation_ImplBase.java

Modified: ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/eval/Evaluation_ImplBase.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/eval/Evaluation_ImplBase.java?rev=1510726&r1=1510725&r2=1510726&view=diff
==============================================================================
--- ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/eval/Evaluation_ImplBase.java (original)
+++ ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/eval/Evaluation_ImplBase.java Mon Aug  5 20:55:24 2013
@@ -52,6 +52,7 @@ import org.apache.ctakes.temporal.ae.THY
 import org.apache.ctakes.temporal.ae.THYMETreebankReader;
 import org.apache.ctakes.typesystem.type.syntax.BaseToken;
 import org.apache.ctakes.typesystem.type.syntax.Chunk;
+import org.apache.ctakes.typesystem.type.syntax.TerminalTreebankNode;
 import org.apache.ctakes.typesystem.type.syntax.TreebankNode;
 import org.apache.ctakes.typesystem.type.textsem.EntityMention;
 import org.apache.ctakes.typesystem.type.textsem.EventMention;
@@ -124,6 +125,9 @@ public abstract class Evaluation_ImplBas
     public File getTreebankDirectory();
     
     @Option
+    public boolean getUseGoldTrees();
+    
+    @Option
     public boolean getGrid();
     
     @Option
@@ -132,8 +136,11 @@ public abstract class Evaluation_ImplBas
     @Option
     public boolean getPrintOverlappingSpans();
     
+    @Option
+    public boolean getTest();
+
     @Option(longName = "kernelParams", defaultToNull=true)
-    public String getKernelParams();
+    public String getKernelParams();    
   }
 
   protected File rawTextDirectory;
@@ -200,7 +207,17 @@ public abstract class Evaluation_ImplBas
 			  }})) {
 			  // skip hidden files like .svn
 			  if (!file.isHidden()) {
-				  files.add(file);
+			    if(xmlFormat == XMLFormat.Knowtator){
+			      files.add(file);
+			    }else{
+			      // look for equivalent in xml directory:
+			      File xmlFile = new File(xmlDirectory, file.getName());
+			      if(xmlFile.exists()){
+			        files.add(file);
+			      }else{
+			        System.err.println("Missing patient file : " + xmlFile);
+			      }
+			    }
 			  } 
 		  }
 	  }
@@ -425,14 +442,14 @@ public abstract class Evaluation_ImplBas
     // add semantic role labeler
     aggregateBuilder.add(AnalysisEngineFactory.createPrimitiveDescription(ClearNLPSemanticRoleLabelerAE.class));
 
-    // add constituency parser (or gold standard treebank if we have it)
+    // add gold standard parses to gold view, and adjust gold view to correct a few annotation mis-steps
     if(this.treebankDirectory != null){
-    	aggregateBuilder.add(THYMETreebankReader.getDescription(this.treebankDirectory));
-    	aggregateBuilder.add(AnalysisEngineFactory.createPrimitiveDescription(TimexAnnotationCorrector.class));
+      aggregateBuilder.add(THYMETreebankReader.getDescription(this.treebankDirectory));
+      aggregateBuilder.add(AnalysisEngineFactory.createPrimitiveDescription(TimexAnnotationCorrector.class));
     }else{
-    	aggregateBuilder.add(AnalysisEngineFactory.createPrimitiveDescription(ConstituencyParser.class));
+      // add ctakes constituency parses to system view
+      aggregateBuilder.add(AnalysisEngineFactory.createPrimitiveDescription(ConstituencyParser.class));
     }
-
     // write out the CAS after all the above annotations
     aggregateBuilder.add(AnalysisEngineFactory.createPrimitiveDescription(
         XMIWriter.class,
@@ -604,6 +621,28 @@ public abstract class Evaluation_ImplBas
               mention.setEnd(mentionNode.getEnd());
             }
           }
+        }else{
+          // if there is no matching tree span, see if the DT to the left would help.
+          // now adjust for missing DT to the left
+          List<TerminalTreebankNode> precedingPreterms = JCasUtil.selectPreceding(systemView, TerminalTreebankNode.class, mention, 1);
+          if(precedingPreterms != null && precedingPreterms.size() == 1){
+            TerminalTreebankNode leftTerm = precedingPreterms.get(0);
+            if(leftTerm.getNodeType().equals("DT")){
+              // now see if adding this would make it match a tree
+              List<TreebankNode> matchingNodes = JCasUtil.selectCovered(systemView, TreebankNode.class, leftTerm.getBegin(), mention.getEnd());
+              for(TreebankNode node : matchingNodes){
+                if(node.getBegin() == leftTerm.getBegin() && node.getEnd() == mention.getEnd()){
+                  sameSpanNode = node;
+                  break;
+                }
+              }
+              if(sameSpanNode != null){
+                // adding the DT to the left of th emention made it match a tree:
+                System.err.println("Adding DT: " + leftTerm.getCoveredText() + " to TIMEX: " + mention.getCoveredText());
+                mention.setBegin(leftTerm.getBegin());
+              }
+            }
+          }
         }
       }
     }