You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ctakes.apache.org by se...@apache.org on 2017/09/11 20:02:20 UTC
svn commit: r1808061 - in /ctakes/trunk:
ctakes-constituency-parser/src/main/java/org/apache/ctakes/constituency/parser/ae/
ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/
ctakes-coreference/src/main/java/org/apache/ctakes/coreference/ae/ ct...
Author: seanfinan
Date: Mon Sep 11 20:02:19 2017
New Revision: 1808061
URL: http://svn.apache.org/viewvc?rev=1808061&view=rev
Log:
Add hints that ConstituencyParser is 'needed' for coref
Modified:
ctakes/trunk/ctakes-constituency-parser/src/main/java/org/apache/ctakes/constituency/parser/ae/ConstituencyParser.java
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/PipeBitInfo.java
ctakes/trunk/ctakes-coreference/src/main/java/org/apache/ctakes/coreference/ae/DeterministicMarkableAnnotator.java
ctakes/trunk/ctakes-coreference/src/main/java/org/apache/ctakes/coreference/ae/MarkableSalienceAnnotator.java
ctakes/trunk/ctakes-coreference/src/main/java/org/apache/ctakes/coreference/ae/MentionClusterCoreferenceAnnotator.java
ctakes/trunk/ctakes-coreference/src/main/java/org/apache/ctakes/coreference/factory/CoreferenceAnnotatorFactory.java
Modified: ctakes/trunk/ctakes-constituency-parser/src/main/java/org/apache/ctakes/constituency/parser/ae/ConstituencyParser.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-constituency-parser/src/main/java/org/apache/ctakes/constituency/parser/ae/ConstituencyParser.java?rev=1808061&r1=1808060&r2=1808061&view=diff
==============================================================================
--- ctakes/trunk/ctakes-constituency-parser/src/main/java/org/apache/ctakes/constituency/parser/ae/ConstituencyParser.java (original)
+++ ctakes/trunk/ctakes-constituency-parser/src/main/java/org/apache/ctakes/constituency/parser/ae/ConstituencyParser.java Mon Sep 11 20:02:19 2017
@@ -38,7 +38,8 @@ import java.io.FileNotFoundException;
@PipeBitInfo(
name = "Constituency Parser",
description = ".",
- dependencies = { PipeBitInfo.TypeProduct.DOCUMENT_ID, PipeBitInfo.TypeProduct.SENTENCE }
+ dependencies = { PipeBitInfo.TypeProduct.DOCUMENT_ID, PipeBitInfo.TypeProduct.SENTENCE },
+ products = { PipeBitInfo.TypeProduct.TREE_NODE }
)
public class ConstituencyParser extends JCasAnnotator_ImplBase {
public static final String PARAM_MODEL_FILENAME = "MODEL_FILENAME";
Modified: ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/PipeBitInfo.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/PipeBitInfo.java?rev=1808061&r1=1808060&r2=1808061&view=diff
==============================================================================
--- ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/PipeBitInfo.java (original)
+++ ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/PipeBitInfo.java Mon Sep 11 20:02:19 2017
@@ -8,6 +8,7 @@ import org.apache.ctakes.typesystem.type
import org.apache.ctakes.typesystem.type.syntax.BaseToken;
import org.apache.ctakes.typesystem.type.syntax.Chunk;
import org.apache.ctakes.typesystem.type.syntax.ConllDependencyNode;
+import org.apache.ctakes.typesystem.type.syntax.TerminalTreebankNode;
import org.apache.ctakes.typesystem.type.textsem.IdentifiedAnnotation;
import org.apache.ctakes.typesystem.type.textsem.Markable;
import org.apache.ctakes.typesystem.type.textsem.SemanticRoleRelation;
@@ -62,6 +63,7 @@ public @interface PipeBitInfo {
DEGREE_RELATION( DegreeOfTextRelation.class ),
TEMPORAL_RELATION( TemporalTextRelation.class ),
DEPENDENCY_NODE( ConllDependencyNode.class ),
+ TREE_NODE( TerminalTreebankNode.class ),
MARKABLE( Markable.class ),
COREFERENCE_RELATION( CoreferenceRelation.class );
Modified: ctakes/trunk/ctakes-coreference/src/main/java/org/apache/ctakes/coreference/ae/DeterministicMarkableAnnotator.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-coreference/src/main/java/org/apache/ctakes/coreference/ae/DeterministicMarkableAnnotator.java?rev=1808061&r1=1808060&r2=1808061&view=diff
==============================================================================
--- ctakes/trunk/ctakes-coreference/src/main/java/org/apache/ctakes/coreference/ae/DeterministicMarkableAnnotator.java (original)
+++ ctakes/trunk/ctakes-coreference/src/main/java/org/apache/ctakes/coreference/ae/DeterministicMarkableAnnotator.java Mon Sep 11 20:02:19 2017
@@ -1,14 +1,5 @@
package org.apache.ctakes.coreference.ae;
-import static org.apache.ctakes.dependency.parser.util.DependencyUtility.getDependencyNodes;
-import static org.apache.ctakes.dependency.parser.util.DependencyUtility.getProgeny;
-import static org.apache.ctakes.dependency.parser.util.DependencyUtility.getSentence;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
import org.apache.ctakes.core.pipeline.PipeBitInfo;
import org.apache.ctakes.dependency.parser.util.DependencyUtility;
import org.apache.ctakes.typesystem.type.syntax.BaseToken;
@@ -25,14 +16,22 @@ import org.apache.uima.fit.util.JCasUtil
import org.apache.uima.jcas.JCas;
import org.apache.uima.resource.ResourceInitializationException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import static org.apache.ctakes.core.pipeline.PipeBitInfo.TypeProduct.*;
+import static org.apache.ctakes.dependency.parser.util.DependencyUtility.*;
+
@PipeBitInfo(
name = "Markable Annotator (Deterministic)",
description = "Annotates Markables for use by Coreference Annotators." +
" degree_of type and a single modifier.",
- dependencies = { PipeBitInfo.TypeProduct.SECTION, PipeBitInfo.TypeProduct.SENTENCE,
- PipeBitInfo.TypeProduct.IDENTIFIED_ANNOTATION, PipeBitInfo.TypeProduct.DEPENDENCY_NODE,
- PipeBitInfo.TypeProduct.TIMEX },
- products = { PipeBitInfo.TypeProduct.MARKABLE }
+ dependencies = { SECTION, SENTENCE,
+ IDENTIFIED_ANNOTATION, DEPENDENCY_NODE,
+ TREE_NODE, TIMEX },
+ products = { MARKABLE }
)
public class DeterministicMarkableAnnotator extends JCasAnnotator_ImplBase {
Modified: ctakes/trunk/ctakes-coreference/src/main/java/org/apache/ctakes/coreference/ae/MarkableSalienceAnnotator.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-coreference/src/main/java/org/apache/ctakes/coreference/ae/MarkableSalienceAnnotator.java?rev=1808061&r1=1808060&r2=1808061&view=diff
==============================================================================
--- ctakes/trunk/ctakes-coreference/src/main/java/org/apache/ctakes/coreference/ae/MarkableSalienceAnnotator.java (original)
+++ ctakes/trunk/ctakes-coreference/src/main/java/org/apache/ctakes/coreference/ae/MarkableSalienceAnnotator.java Mon Sep 11 20:02:19 2017
@@ -1,10 +1,5 @@
package org.apache.ctakes.coreference.ae;
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
import org.apache.ctakes.core.pipeline.PipeBitInfo;
import org.apache.ctakes.coreference.ae.features.salience.ClinicalFeatureExtractor;
import org.apache.ctakes.coreference.ae.features.salience.GrammaticalRoleFeatureExtractor;
@@ -27,6 +22,11 @@ import org.cleartk.ml.jar.DefaultDataWri
import org.cleartk.ml.jar.DirectoryDataWriterFactory;
import org.cleartk.ml.jar.GenericJarClassifierFactory;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
@PipeBitInfo(
name = "Markable Salience Annotator",
description = "Annotates Markable Salience.",
@@ -90,7 +90,7 @@ public class MarkableSalienceAnnotator e
}else{
Map<Boolean,Double> outcomes = this.classifier.score(features);
markable.setConfidence(outcomes.get(true).floatValue());
- }
+ }
}
}
}
Modified: ctakes/trunk/ctakes-coreference/src/main/java/org/apache/ctakes/coreference/ae/MentionClusterCoreferenceAnnotator.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-coreference/src/main/java/org/apache/ctakes/coreference/ae/MentionClusterCoreferenceAnnotator.java?rev=1808061&r1=1808060&r2=1808061&view=diff
==============================================================================
--- ctakes/trunk/ctakes-coreference/src/main/java/org/apache/ctakes/coreference/ae/MentionClusterCoreferenceAnnotator.java (original)
+++ ctakes/trunk/ctakes-coreference/src/main/java/org/apache/ctakes/coreference/ae/MentionClusterCoreferenceAnnotator.java Mon Sep 11 20:02:19 2017
@@ -249,9 +249,10 @@ public class MentionClusterCoreferenceAn
relationLookup = new HashMap<>();
}
-
- for ( Segment segment : JCasUtil.select( jCas, Segment.class ) ) {
- for ( Markable mention : JCasUtil.selectCovered( jCas, Markable.class, segment ) ) {
+ final Map<Segment, Collection<Markable>> segmentMarkables = JCasUtil.indexCovered( jCas, Segment.class, Markable.class );
+ for ( Collection<Markable> markables : segmentMarkables.values() ) {
+ for ( Markable mention : markables ) {
+//System.out.println( "MCCA Markable: " + mention.getCoveredText() + " :" + mention.getBegin() + "," + mention.getEnd() );
// ConllDependencyNode headNode = DependencyUtility.getNominalHeadNode(jCas, mention);
boolean singleton = true;
double maxScore = 0.0;
@@ -259,6 +260,7 @@ public class MentionClusterCoreferenceAn
for ( CollectionTextRelationIdentifiedAnnotationPair pair : this.getCandidateRelationArgumentPairs( jCas, mention ) ) {
CollectionTextRelation cluster = pair.getCluster();
+//System.out.println( " MCCA Pair Cluster: " + pair.getCluster().getCategory() );
// apply all the feature extractors to extract the list of features
List<Feature> features = new ArrayList<>();
for ( RelationFeaturesExtractor<CollectionTextRelation, IdentifiedAnnotation> extractor : this.relationExtractors ) {
@@ -266,6 +268,8 @@ public class MentionClusterCoreferenceAn
if ( feats != null ) {
// Logger.getRootLogger().info(String.format("For cluster with %d mentions, %d %s features", JCasUtil.select(cluster.getMembers(), Markable.class).size(), feats.size(), extractor.getClass().getSimpleName()));
features.addAll( feats );
+//System.out.println( " MCCA Extract: " + extractor.getClass().getSimpleName() + " Features:");
+//feats.forEach( f -> System.out.println( " " + f.toString() ) );
}
}
@@ -305,9 +309,10 @@ public class MentionClusterCoreferenceAn
// annotations
else {
String predictedCategory = this.classify( features );
+//System.out.println( " MCCA Predicted Category: " + predictedCategory + " Scores:" );
// TODO look at scores in classifier and try best-pair rather than first-pair?
Map<String, Double> scores = this.classifier.score( features );
-
+//scores.forEach( (k,v) -> System.out.println( " " + k + " = " + v ) );
// add a relation annotation if a true relation was predicted
if ( !predictedCategory.equals( NO_RELATION_CATEGORY ) ) {
// Logger.getLogger("MCAnnotator").info(String.format("Making a pair with score %f", scores.get(predictedCategory)));
@@ -438,7 +443,6 @@ public class MentionClusterCoreferenceAn
// do that by finding the head of the markable, then finding the identifiedannotations that cover it:
Map<Markable, List<IdentifiedAnnotation>> markable2annotations = MarkableUtilities.indexCoveringUmlsAnnotations(jCas);
-
for(CollectionTextRelation cluster : JCasUtil.select(jCas, CollectionTextRelation.class)){
CounterMap<Class<? extends IdentifiedAnnotation>> headCounts = new CounterMap<>();
List<Markable> memberList = new ArrayList<>(JCasUtil.select(cluster.getMembers(), Markable.class));
Modified: ctakes/trunk/ctakes-coreference/src/main/java/org/apache/ctakes/coreference/factory/CoreferenceAnnotatorFactory.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-coreference/src/main/java/org/apache/ctakes/coreference/factory/CoreferenceAnnotatorFactory.java?rev=1808061&r1=1808060&r2=1808061&view=diff
==============================================================================
--- ctakes/trunk/ctakes-coreference/src/main/java/org/apache/ctakes/coreference/factory/CoreferenceAnnotatorFactory.java (original)
+++ ctakes/trunk/ctakes-coreference/src/main/java/org/apache/ctakes/coreference/factory/CoreferenceAnnotatorFactory.java Mon Sep 11 20:02:19 2017
@@ -18,14 +18,7 @@
*/
package org.apache.ctakes.coreference.factory;
-import org.apache.ctakes.coreference.ae.DeterministicMarkableAnnotator;
-import org.apache.ctakes.coreference.ae.MarkableHeadTreeCreator;
-import org.apache.ctakes.coreference.ae.MarkableSalienceAnnotator;
-import org.apache.ctakes.coreference.ae.MentionClusterCoreferenceAnnotator;
-import org.apache.ctakes.coreference.ae.MipacqMarkableCreator;
-import org.apache.ctakes.coreference.ae.MipacqMarkableExpander;
-import org.apache.ctakes.coreference.ae.MipacqMarkablePairGenerator;
-import org.apache.ctakes.coreference.ae.MipacqSvmChainCreator;
+import org.apache.ctakes.coreference.ae.*;
import org.apache.uima.analysis_engine.AnalysisEngineDescription;
import org.apache.uima.fit.factory.AggregateBuilder;
import org.apache.uima.fit.factory.AnalysisEngineFactory;
@@ -54,7 +47,7 @@ public class CoreferenceAnnotatorFactory
public static AnalysisEngineDescription getMentionClusterCoreferenceDescription() throws ResourceInitializationException {
AggregateBuilder builder = new AggregateBuilder();
- // Add markables using syntax: (nouns and pronouns)
+ // Add markables using syntax: (nouns and pronouns) ; requires TerminalTreeBankNodes (from ConstituencyParser)
builder.add(AnalysisEngineFactory.createEngineDescription(DeterministicMarkableAnnotator.class));
builder.add(getMentionClusterResolverDescription());