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 2014/07/16 16:39:49 UTC
svn commit: r1611027 -
/ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/ae/THYMEAnaforaXMLReader.java
Author: tmill
Date: Wed Jul 16 14:39:48 2014
New Revision: 1611027
URL: http://svn.apache.org/r1611027
Log:
CTAKES-199: Code to read thyme coreference annotations.
Modified:
ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/ae/THYMEAnaforaXMLReader.java
Modified: ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/ae/THYMEAnaforaXMLReader.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/ae/THYMEAnaforaXMLReader.java?rev=1611027&r1=1611026&r2=1611027&view=diff
==============================================================================
--- ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/ae/THYMEAnaforaXMLReader.java (original)
+++ ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/ae/THYMEAnaforaXMLReader.java Wed Jul 16 14:39:48 2014
@@ -29,9 +29,12 @@ import org.apache.ctakes.typesystem.type
import org.apache.ctakes.typesystem.type.refsem.EventProperties;
import org.apache.ctakes.typesystem.type.relation.AspectualTextRelation;
import org.apache.ctakes.typesystem.type.relation.BinaryTextRelation;
+import org.apache.ctakes.typesystem.type.relation.CollectionTextRelation;
+import org.apache.ctakes.typesystem.type.relation.CoreferenceRelation;
import org.apache.ctakes.typesystem.type.relation.RelationArgument;
import org.apache.ctakes.typesystem.type.relation.TemporalTextRelation;
import org.apache.ctakes.typesystem.type.textsem.EventMention;
+import org.apache.ctakes.typesystem.type.textsem.Markable;
import org.apache.ctakes.typesystem.type.textsem.TimeMention;
import org.apache.log4j.Logger;
import org.apache.uima.analysis_engine.AnalysisEngine;
@@ -39,7 +42,9 @@ import org.apache.uima.analysis_engine.A
import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
import org.apache.uima.collection.CollectionReader;
import org.apache.uima.jcas.JCas;
+import org.apache.uima.jcas.cas.EmptyFSList;
import org.apache.uima.jcas.cas.FSArray;
+import org.apache.uima.jcas.cas.NonEmptyFSList;
import org.apache.uima.jcas.tcas.Annotation;
import org.apache.uima.resource.ResourceInitializationException;
import org.cleartk.util.ViewURIUtil;
@@ -102,6 +107,7 @@ public class THYMEAnaforaXMLReader exten
// determine possible Anafora XML file names
List<File> possibleXMLFiles = Lists.newArrayList();
+ possibleXMLFiles.add(new File(this.anaforaDirectory, textFile.getName() + ".Coreference.gold.completed.xml"));
for (String anaforaXMLSuffix : this.anaforaXMLSuffixes) {
if (this.anaforaDirectory == null) {
possibleXMLFiles.add(new File(textFile + anaforaXMLSuffix));
@@ -224,6 +230,11 @@ public class THYMEAnaforaXMLReader exten
timeMention.addToIndexes();
annotation = timeMention;
+ } else if (type.equals("Markable")) {
+ Markable markable = new Markable(jCas, begin, end);
+ markable.addToIndexes();
+ annotation = markable;
+
} else {
throw new UnsupportedOperationException("unsupported entity type: " + type);
}
@@ -264,6 +275,51 @@ public class THYMEAnaforaXMLReader exten
AspectualTextRelation relation = new AspectualTextRelation(jCas);
addRelation(jCas, relation, sourceID, targetID, alinkType, idToAnnotation, id);
+ } else if (type.equals("Identical")) {
+ CollectionTextRelation chain = new CollectionTextRelation(jCas);
+ String mention = removeSingleChildText(propertiesElem, "FirstInstance", id);
+ NonEmptyFSList list = new NonEmptyFSList(jCas);
+ NonEmptyFSList root = list;
+ Markable antecedent, anaphor;
+ antecedent = (Markable) idToAnnotation.get(mention);
+ list.setHead(antecedent);
+ List<Element> corefs = propertiesElem.getChildren("Coreferring_String");
+// while((mention = removeSingleChildText(propertiesElem, "Coreferring_String", id)) != null){
+ for(Element coref : corefs){
+ mention = coref.getText();
+ NonEmptyFSList child = new NonEmptyFSList(jCas);
+ anaphor = (Markable) idToAnnotation.get(mention);
+ child.setHead(anaphor);
+ CoreferenceRelation pair = new CoreferenceRelation(jCas);
+ pair.setCategory("Identity");
+ RelationArgument arg1 = new RelationArgument(jCas);
+ arg1.setArgument(antecedent);
+ arg1.setRole("antecedent");
+ pair.setArg1(arg1);
+ RelationArgument arg2 = new RelationArgument(jCas);
+ arg2.setArgument(anaphor);
+ arg2.setRole("anaphor");
+ pair.setArg2(arg2);
+ pair.addToIndexes();
+ list.setTail(child);
+ list = child;
+ antecedent = anaphor;
+ }
+ propertiesElem.removeChildren("Coreferring_String");
+ EmptyFSList tail = new EmptyFSList(jCas);
+ list.setTail(tail);
+ root.addToIndexes();
+ chain.setMembers(root);
+ chain.addToIndexes();
+ } else if (type.equals("Set/Subset")){
+ error("This reader has not implemented reading of Set/Subset relations yet", id);
+
+ } else if (type.equals("Whole/Part")){
+ error("This reader has not implemented reading of Whole/Part relations yet", id);
+
+ } else if (type.equals("Appositive")){
+ error("This reader has not implemented reading of Appositive relations yet", id);
+
} else {
throw new UnsupportedOperationException("unsupported relation type: " + type);
}