You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by pk...@apache.org on 2013/09/02 14:31:44 UTC
svn commit: r1519416 -
/uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/
Author: pkluegl
Date: Mon Sep 2 12:31:43 2013
New Revision: 1519416
URL: http://svn.apache.org/r1519416
Log:
UIMA-3240
- fixed set of annotations
Added:
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/AbstractCasEvaluator.java
Modified:
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/CoreMatchCasEvaluator.java
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/ExactCasEvaluator.java
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/FeatureCasEvaluator.java
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/PartialMatchCasEvaluator.java
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/StringFeatureCasEvaluator.java
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/TemplateCasEvaluator.java
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/WordAccuracyCasEvaluator.java
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/WordTemplateCasEvaluator.java
Added: uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/AbstractCasEvaluator.java
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/AbstractCasEvaluator.java?rev=1519416&view=auto
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/AbstractCasEvaluator.java (added)
+++ uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/AbstractCasEvaluator.java Mon Sep 2 12:31:43 2013
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+
+package org.apache.uima.ruta.testing.evaluator;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.uima.cas.CAS;
+import org.apache.uima.cas.Type;
+import org.apache.uima.cas.TypeSystem;
+import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.cas.text.AnnotationIndex;
+
+public abstract class AbstractCasEvaluator implements ICasEvaluator {
+
+ protected List<AnnotationFS> getAnnotations(List<Type> types, CAS cas) {
+ List<AnnotationFS> result = new ArrayList<AnnotationFS>();
+ TypeSystem typeSystem = cas.getTypeSystem();
+ AnnotationIndex<AnnotationFS> annotationIndex = cas.getAnnotationIndex();
+ for (AnnotationFS each : annotationIndex) {
+ Type type = each.getType();
+ for (Type eachType : types) {
+ if(typeSystem.subsumes(eachType, type)) {
+ result.add(each);
+ break;
+ }
+ }
+ }
+ return result;
+ }
+
+ protected boolean match(AnnotationFS a1, AnnotationFS a2) {
+ if (a1 != null && a2 != null) {
+ if (a1.getBegin() == a2.getBegin() && a1.getEnd() == a2.getEnd()
+ && a1.getType().getName().equals(a2.getType().getName()))
+ return true;
+ }
+ return false;
+ }
+
+}
Modified: uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/CoreMatchCasEvaluator.java
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/CoreMatchCasEvaluator.java?rev=1519416&r1=1519415&r2=1519416&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/CoreMatchCasEvaluator.java (original)
+++ uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/CoreMatchCasEvaluator.java Mon Sep 2 12:31:43 2013
@@ -28,13 +28,11 @@ import java.util.StringTokenizer;
import org.apache.uima.cas.CAS;
import org.apache.uima.cas.CASException;
import org.apache.uima.cas.CASRuntimeException;
-import org.apache.uima.cas.FSIterator;
import org.apache.uima.cas.Feature;
-import org.apache.uima.cas.FeatureStructure;
import org.apache.uima.cas.Type;
import org.apache.uima.cas.text.AnnotationFS;
-public class CoreMatchCasEvaluator implements ICasEvaluator {
+public class CoreMatchCasEvaluator extends AbstractCasEvaluator {
public CAS evaluate(CAS test, CAS run, Collection<String> excludedTypes)
throws CASRuntimeException, CASException {
@@ -112,21 +110,6 @@ public class CoreMatchCasEvaluator imple
return run;
}
- private List<AnnotationFS> getAnnotations(List<Type> types, CAS cas) {
- List<AnnotationFS> result = new ArrayList<AnnotationFS>();
- for (Type type : types) {
- FSIterator iterator = cas.getAnnotationIndex(type).iterator();
- while (iterator.isValid()) {
- FeatureStructure fs = iterator.get();
- if (fs instanceof AnnotationFS) {
- result.add((AnnotationFS) fs);
- }
- iterator.moveToNext();
- }
- }
- return result;
- }
-
private boolean matchCore(AnnotationFS a1, AnnotationFS a2) {
String coreTerm = null;
Modified: uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/ExactCasEvaluator.java
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/ExactCasEvaluator.java?rev=1519416&r1=1519415&r2=1519416&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/ExactCasEvaluator.java (original)
+++ uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/ExactCasEvaluator.java Mon Sep 2 12:31:43 2013
@@ -27,13 +27,11 @@ import java.util.List;
import org.apache.uima.cas.CAS;
import org.apache.uima.cas.CASException;
import org.apache.uima.cas.CASRuntimeException;
-import org.apache.uima.cas.FSIterator;
import org.apache.uima.cas.Feature;
-import org.apache.uima.cas.FeatureStructure;
import org.apache.uima.cas.Type;
import org.apache.uima.cas.text.AnnotationFS;
-public class ExactCasEvaluator implements ICasEvaluator {
+public class ExactCasEvaluator extends AbstractCasEvaluator {
public CAS evaluate(CAS test, CAS run, Collection<String> excludedTypes)
throws CASRuntimeException, CASException {
@@ -111,28 +109,5 @@ public class ExactCasEvaluator implement
return run;
}
- private List<AnnotationFS> getAnnotations(List<Type> types, CAS cas) {
- List<AnnotationFS> result = new ArrayList<AnnotationFS>();
- for (Type type : types) {
- FSIterator iterator = cas.getAnnotationIndex(type).iterator();
- while (iterator.isValid()) {
- FeatureStructure fs = iterator.get();
- if (fs instanceof AnnotationFS) {
- result.add((AnnotationFS) fs);
- }
- iterator.moveToNext();
- }
- }
- return result;
- }
-
- private boolean match(AnnotationFS a1, AnnotationFS a2) {
- if (a1 != null && a2 != null) {
- if (a1.getBegin() == a2.getBegin() && a1.getEnd() == a2.getEnd()
- && a1.getType().getName().equals(a2.getType().getName()))
- return true;
- }
- return false;
- }
}
Modified: uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/FeatureCasEvaluator.java
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/FeatureCasEvaluator.java?rev=1519416&r1=1519415&r2=1519416&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/FeatureCasEvaluator.java (original)
+++ uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/FeatureCasEvaluator.java Mon Sep 2 12:31:43 2013
@@ -38,7 +38,7 @@ import org.apache.uima.jcas.tcas.Annotat
import org.apache.uima.ruta.UIMAConstants;
import org.apache.uima.ruta.engine.RutaEngine;
-public class FeatureCasEvaluator implements ICasEvaluator {
+public class FeatureCasEvaluator extends AbstractCasEvaluator {
public CAS evaluate(CAS test, CAS run, Collection<String> excludedTypes)
throws CASRuntimeException, CASException {
@@ -225,7 +225,7 @@ public class FeatureCasEvaluator impleme
private Collection<FeatureStructure> getFeatureStructures(List<Type> types, CAS cas) {
TypeSystem typeSystem = cas.getTypeSystem();
Type annotationType = cas.getAnnotationType();
- Type annotationBaseType = typeSystem.getType("uima.cas.AnnotationBase");
+// Type annotationBaseType = typeSystem.getType("uima.cas.AnnotationBase");
Collection<FeatureStructure> result = new HashSet<FeatureStructure>();
for (Type type : types) {
// if ((type != null) && !typeSystem.subsumes(cas.getAnnotationType(), type) &&
Modified: uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/PartialMatchCasEvaluator.java
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/PartialMatchCasEvaluator.java?rev=1519416&r1=1519415&r2=1519416&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/PartialMatchCasEvaluator.java (original)
+++ uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/PartialMatchCasEvaluator.java Mon Sep 2 12:31:43 2013
@@ -27,13 +27,11 @@ import java.util.List;
import org.apache.uima.cas.CAS;
import org.apache.uima.cas.CASException;
import org.apache.uima.cas.CASRuntimeException;
-import org.apache.uima.cas.FSIterator;
import org.apache.uima.cas.Feature;
-import org.apache.uima.cas.FeatureStructure;
import org.apache.uima.cas.Type;
import org.apache.uima.cas.text.AnnotationFS;
-public class PartialMatchCasEvaluator implements ICasEvaluator {
+public class PartialMatchCasEvaluator extends AbstractCasEvaluator {
public CAS evaluate(CAS test, CAS run, Collection<String> excludedTypes)
throws CASRuntimeException, CASException {
@@ -111,21 +109,6 @@ public class PartialMatchCasEvaluator im
return run;
}
- private List<AnnotationFS> getAnnotations(List<Type> types, CAS cas) {
- List<AnnotationFS> result = new ArrayList<AnnotationFS>();
- for (Type type : types) {
- FSIterator iterator = cas.getAnnotationIndex(type).iterator();
- while (iterator.isValid()) {
- FeatureStructure fs = iterator.get();
- if (fs instanceof AnnotationFS) {
- result.add((AnnotationFS) fs);
- }
- iterator.moveToNext();
- }
- }
- return result;
- }
-
private boolean overlap(AnnotationFS a1, AnnotationFS a2) {
if (a1 != null && a2 != null) {
if ((a1.getBegin() <= a2.getBegin() && a1.getEnd() >= a2.getBegin())
Modified: uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/StringFeatureCasEvaluator.java
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/StringFeatureCasEvaluator.java?rev=1519416&r1=1519415&r2=1519416&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/StringFeatureCasEvaluator.java (original)
+++ uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/StringFeatureCasEvaluator.java Mon Sep 2 12:31:43 2013
@@ -27,17 +27,18 @@ import java.util.List;
import org.apache.uima.cas.CAS;
import org.apache.uima.cas.CASException;
import org.apache.uima.cas.CASRuntimeException;
-import org.apache.uima.cas.FSIterator;
import org.apache.uima.cas.Feature;
import org.apache.uima.cas.FeatureStructure;
import org.apache.uima.cas.Type;
import org.apache.uima.cas.TypeSystem;
import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.cas.text.AnnotationIndex;
import org.apache.uima.jcas.tcas.Annotation;
import org.apache.uima.ruta.UIMAConstants;
import org.apache.uima.ruta.engine.RutaEngine;
-public class StringFeatureCasEvaluator implements ICasEvaluator {
+public class StringFeatureCasEvaluator extends AbstractCasEvaluator {
+
public CAS evaluate(CAS test, CAS run, Collection<String> excludedTypes)
throws CASRuntimeException, CASException {
Type falsePositiveType = run.getTypeSystem().getType(ICasEvaluator.FALSE_POSITIVE);
@@ -137,9 +138,9 @@ public class StringFeatureCasEvaluator i
}
if (withFeatures) {
CAS testCas = fs.getCAS();
- CAS runCas = newFS.getCAS();
+// CAS runCas = newFS.getCAS();
TypeSystem testTS = testCas.getTypeSystem();
- TypeSystem runTS = runCas.getTypeSystem();
+// TypeSystem runTS = runCas.getTypeSystem();
Type stringType = testTS.getType(UIMAConstants.TYPE_STRING);
List<Feature> features = fs.getType().getFeatures();
for (Feature feature : features) {
@@ -157,24 +158,26 @@ public class StringFeatureCasEvaluator i
TypeSystem typeSystem = cas.getTypeSystem();
Type stringType = typeSystem.getType(UIMAConstants.TYPE_STRING);
Collection<FeatureStructure> result = new HashSet<FeatureStructure>();
- for (Type type : types) {
- FSIterator<FeatureStructure> iterator = cas.getIndexRepository().getAllIndexedFS(type);
- while (iterator.isValid()) {
- FeatureStructure fs = iterator.get();
- List<Feature> features = fs.getType().getFeatures();
- for (Feature feature : features) {
- Type range = feature.getRange();
- if (typeSystem.subsumes(stringType, range)) {
- result.add(fs);
- break;
+ AnnotationIndex<AnnotationFS> annotationIndex = cas.getAnnotationIndex();
+ for (AnnotationFS each : annotationIndex) {
+ Type type = each.getType();
+ for (Type eachType : types) {
+ if(typeSystem.subsumes(eachType, type)) {
+ List<Feature> features = each.getType().getFeatures();
+ for (Feature feature : features) {
+ Type range = feature.getRange();
+ if (typeSystem.subsumes(stringType, range)) {
+ result.add(each);
+ break;
+ }
}
}
- iterator.moveToNext();
}
}
return result;
}
+
private boolean match(FeatureStructure a1, FeatureStructure a2) {
Type type1 = a1.getType();
Type type2 = a2.getType();
Modified: uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/TemplateCasEvaluator.java
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/TemplateCasEvaluator.java?rev=1519416&r1=1519415&r2=1519416&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/TemplateCasEvaluator.java (original)
+++ uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/TemplateCasEvaluator.java Mon Sep 2 12:31:43 2013
@@ -27,12 +27,12 @@ import java.util.List;
import org.apache.uima.cas.CAS;
import org.apache.uima.cas.CASException;
import org.apache.uima.cas.CASRuntimeException;
-import org.apache.uima.cas.FSIterator;
import org.apache.uima.cas.Feature;
import org.apache.uima.cas.FeatureStructure;
import org.apache.uima.cas.Type;
import org.apache.uima.cas.TypeSystem;
import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.cas.text.AnnotationIndex;
import org.apache.uima.jcas.tcas.Annotation;
public class TemplateCasEvaluator implements ICasEvaluator {
@@ -156,28 +156,31 @@ public class TemplateCasEvaluator implem
}
}
+
private Collection<FeatureStructure> getFeatureStructures(List<Type> types, CAS cas) {
TypeSystem typeSystem = cas.getTypeSystem();
Type annotationType = cas.getAnnotationType();
Collection<FeatureStructure> result = new HashSet<FeatureStructure>();
- for (Type type : types) {
- FSIterator<FeatureStructure> iterator = cas.getIndexRepository().getAllIndexedFS(type);
- while (iterator.isValid()) {
- FeatureStructure fs = iterator.get();
- List<Feature> features = fs.getType().getFeatures();
- for (Feature feature : features) {
- Type range = feature.getRange();
- if (typeSystem.subsumes(annotationType, range)) {
- result.add(fs);
- break;
+ AnnotationIndex<AnnotationFS> annotationIndex = cas.getAnnotationIndex();
+ for (AnnotationFS each : annotationIndex) {
+ Type type = each.getType();
+ for (Type eachType : types) {
+ if(typeSystem.subsumes(eachType, type)) {
+ List<Feature> features = each.getType().getFeatures();
+ for (Feature feature : features) {
+ Type range = feature.getRange();
+ if (typeSystem.subsumes(annotationType, range)) {
+ result.add(each);
+ break;
+ }
}
}
- iterator.moveToNext();
}
}
return result;
}
-
+
+
private boolean match(FeatureStructure a1, FeatureStructure a2) {
Type type1 = a1.getType();
Type type2 = a2.getType();
Modified: uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/WordAccuracyCasEvaluator.java
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/WordAccuracyCasEvaluator.java?rev=1519416&r1=1519415&r2=1519416&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/WordAccuracyCasEvaluator.java (original)
+++ uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/WordAccuracyCasEvaluator.java Mon Sep 2 12:31:43 2013
@@ -30,12 +30,11 @@ import org.apache.uima.cas.CASException;
import org.apache.uima.cas.CASRuntimeException;
import org.apache.uima.cas.FSIterator;
import org.apache.uima.cas.Feature;
-import org.apache.uima.cas.FeatureStructure;
import org.apache.uima.cas.Type;
import org.apache.uima.cas.text.AnnotationFS;
import org.apache.uima.ruta.seed.DefaultSeeder;
-public class WordAccuracyCasEvaluator implements ICasEvaluator {
+public class WordAccuracyCasEvaluator extends AbstractCasEvaluator {
public CAS evaluate(CAS test, CAS run, Collection<String> excludedTypes)
throws CASRuntimeException, CASException {
@@ -143,29 +142,5 @@ public class WordAccuracyCasEvaluator im
}
return result;
}
-
- private List<AnnotationFS> getAnnotations(List<Type> types, CAS cas) {
- List<AnnotationFS> result = new ArrayList<AnnotationFS>();
- for (Type type : types) {
- FSIterator<AnnotationFS> iterator = cas.getAnnotationIndex(type).iterator();
- while (iterator.isValid()) {
- FeatureStructure fs = iterator.get();
- if (fs instanceof AnnotationFS) {
- result.add((AnnotationFS) fs);
- }
- iterator.moveToNext();
- }
- }
- return result;
- }
-
- private boolean match(AnnotationFS a1, AnnotationFS a2) {
- if (a1 != null && a2 != null) {
- if (a1.getBegin() == a2.getBegin() && a1.getEnd() == a2.getEnd()
- && a1.getType().getName().equals(a2.getType().getName()))
- return true;
- }
- return false;
- }
-
+
}
Modified: uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/WordTemplateCasEvaluator.java
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/WordTemplateCasEvaluator.java?rev=1519416&r1=1519415&r2=1519416&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/WordTemplateCasEvaluator.java (original)
+++ uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/WordTemplateCasEvaluator.java Mon Sep 2 12:31:43 2013
@@ -34,10 +34,11 @@ import org.apache.uima.cas.FeatureStruct
import org.apache.uima.cas.Type;
import org.apache.uima.cas.TypeSystem;
import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.cas.text.AnnotationIndex;
import org.apache.uima.jcas.tcas.Annotation;
import org.apache.uima.ruta.seed.DefaultSeeder;
-public class WordTemplateCasEvaluator implements ICasEvaluator {
+public class WordTemplateCasEvaluator extends AbstractCasEvaluator {
public CAS evaluate(CAS test, CAS run, Collection<String> excludedTypes)
throws CASRuntimeException, CASException {
@@ -67,8 +68,8 @@ public class WordTemplateCasEvaluator im
}
List<Type> wordTypes = getWordTypes(run);
- Collection<FeatureStructure> testFSs = getFeatureStructures(types, test, wordTypes);
- Collection<FeatureStructure> runFSs = getFeatureStructures(types, run, wordTypes);
+ Collection<FeatureStructure> testFSs = getFeatureStructures(types, test);
+ Collection<FeatureStructure> runFSs = getFeatureStructures(types, run);
Collection<FeatureStructure> matched = new HashSet<FeatureStructure>();
List<FeatureStructure> fp = new ArrayList<FeatureStructure>();
@@ -171,29 +172,30 @@ public class WordTemplateCasEvaluator im
}
}
}
-
- private Collection<FeatureStructure> getFeatureStructures(List<Type> types, CAS cas,
- List<Type> basicTypes) {
+
+ private Collection<FeatureStructure> getFeatureStructures(List<Type> types, CAS cas) {
TypeSystem typeSystem = cas.getTypeSystem();
Type annotationType = cas.getAnnotationType();
Collection<FeatureStructure> result = new HashSet<FeatureStructure>();
- for (Type type : types) {
- FSIterator<FeatureStructure> iterator = cas.getIndexRepository().getAllIndexedFS(type);
- while (iterator.isValid()) {
- FeatureStructure fs = iterator.get();
- List<Feature> features = fs.getType().getFeatures();
- for (Feature feature : features) {
- Type range = feature.getRange();
- if (typeSystem.subsumes(annotationType, range)) {
- result.add(fs);
- break;
+ AnnotationIndex<AnnotationFS> annotationIndex = cas.getAnnotationIndex();
+ for (AnnotationFS each : annotationIndex) {
+ Type type = each.getType();
+ for (Type eachType : types) {
+ if(typeSystem.subsumes(eachType, type)) {
+ List<Feature> features = each.getType().getFeatures();
+ for (Feature feature : features) {
+ Type range = feature.getRange();
+ if (typeSystem.subsumes(annotationType, range)) {
+ result.add(each);
+ break;
+ }
}
}
- iterator.moveToNext();
}
}
return result;
}
+
private List<AnnotationFS> expand(AnnotationFS a, CAS cas, List<Type> basicTypes) {
List<AnnotationFS> result = new LinkedList<AnnotationFS>();
@@ -263,7 +265,7 @@ public class WordTemplateCasEvaluator im
for (AnnotationFS each1 : w1) {
if (w2.size() > i) {
AnnotationFS each2 = w2.get(i);
- result &= matchWord(each1, each2);
+ result &= match(each1, each2);
} else {
return false;
}
@@ -272,14 +274,5 @@ public class WordTemplateCasEvaluator im
return result;
}
- private boolean matchWord(AnnotationFS a1, AnnotationFS a2) {
- if (a1 != null && a2 != null) {
- if (a1.getBegin() == a2.getBegin() && a1.getEnd() == a2.getEnd()
- && a1.getType().getName().equals(a2.getType().getName())) {
- return true;
- }
- }
- return false;
- }
-
+
}