You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ctakes.apache.org by dl...@apache.org on 2016/10/06 16:30:52 UTC
svn commit: r1763626 -
/ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/nn/ae/EventEventTokenBasedAnnotator.java
Author: dligach
Date: Thu Oct 6 16:30:52 2016
New Revision: 1763626
URL: http://svn.apache.org/viewvc?rev=1763626&view=rev
Log:
fixed a few issues (args weren't numbered; context size was 5)
Modified:
ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/nn/ae/EventEventTokenBasedAnnotator.java
Modified: ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/nn/ae/EventEventTokenBasedAnnotator.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/nn/ae/EventEventTokenBasedAnnotator.java?rev=1763626&r1=1763625&r2=1763626&view=diff
==============================================================================
--- ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/nn/ae/EventEventTokenBasedAnnotator.java (original)
+++ ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/nn/ae/EventEventTokenBasedAnnotator.java Thu Oct 6 16:30:52 2016
@@ -34,9 +34,6 @@ public class EventEventTokenBasedAnnotat
@Override
public void process(JCas jCas) throws AnalysisEngineProcessException {
-// Map<EventMention, Collection<EventMention>> coveringMap =
-// JCasUtil.indexCovering(jCas, EventMention.class, EventMention.class);
-
//get all gold relation lookup
Map<List<Annotation>, BinaryTextRelation> relationLookup;
relationLookup = new HashMap<>();
@@ -71,12 +68,10 @@ public class EventEventTokenBasedAnnotat
String context;
if(arg2.getBegin() < arg1.getBegin()) {
// ... time ... event ... scenario
- context = EventEventRelPrinter.getTokensBetween(jCas, sentence, arg2, "e", arg1, "e", 5);
-// context = getTokensBetweenExpanded(jCas, sentence, arg2, "e", arg1, "e", 5, coveringMap);
+ context = EventEventRelPrinter.getTokensBetween(jCas, sentence, arg2, "e2", arg1, "e1", 2);
} else {
// ... event ... time ... scenario
- context = EventEventRelPrinter.getTokensBetween(jCas, sentence, arg1, "e", arg2, "e", 5);
-// context = getTokensBetweenExpanded(jCas, sentence, arg1, "e", arg2, "e", 5, coveringMap);
+ context = EventEventRelPrinter.getTokensBetween(jCas, sentence, arg1, "e1", arg2, "e2", 2);
}
//derive features based on context:
@@ -87,11 +82,11 @@ public class EventEventTokenBasedAnnotat
}
// during training, feed the features to the data writer
- if (this.isTraining()) {
+ if(this.isTraining()) {
String category = getRelationCategory(relationLookup, arg1, arg2);
- if (category == null) {
+ if(category == null) {
category = NO_RELATION_CATEGORY;
- }else{
+ } else{
category = category.toLowerCase();
}
this.dataWriter.write(new Instance<>(category, feats));
@@ -117,114 +112,7 @@ public class EventEventTokenBasedAnnotat
}
}
-
- /**
- * Print context from left to right.
- * @param contextSize number of tokens to include on the left of arg1 and on the right of arg2
- */
- public static String getTokensBetweenExpanded(
- JCas jCas,
- Sentence sent,
- Annotation left,
- String leftType,
- Annotation right,
- String rightType,
- int contextSize,
- Map<EventMention, Collection<EventMention>> coveringMap) {
-
- boolean leftIsExpanded = false;
- Annotation longerLeft = left;
- if(left instanceof EventMention){
- longerLeft = getLongerEvent(coveringMap, left);
- if(longerLeft != left){
- leftIsExpanded = true;
- }
- }
-
- boolean rightIsExpanded = false;
- Annotation longerRight = right;
- if(right instanceof EventMention){
- longerRight = getLongerEvent(coveringMap, right);
- if(longerRight != right){
- rightIsExpanded = true;
- }
- }
-
- List<String> tokens = new ArrayList<>();
- if(leftIsExpanded){
- for(BaseToken baseToken : JCasUtil.selectPreceding(jCas, BaseToken.class, longerLeft, contextSize)) {
- if(sent.getBegin() <= baseToken.getBegin()) {
- tokens.add(baseToken.getCoveredText());
- }
- }
- }else{
- for(BaseToken baseToken : JCasUtil.selectPreceding(jCas, BaseToken.class, left, contextSize)) {
- if(sent.getBegin() <= baseToken.getBegin()) {
- tokens.add(baseToken.getCoveredText());
- }
- }
- }
- tokens.add("<" + leftType + ">");
- tokens.add(left.getCoveredText());
- tokens.add("</" + leftType + ">");
- if(leftIsExpanded){
- if(rightIsExpanded){
- for(BaseToken baseToken : JCasUtil.selectBetween(jCas, BaseToken.class, longerLeft, longerRight)) {
- tokens.add(baseToken.getCoveredText());
- }
- }else{
- for(BaseToken baseToken : JCasUtil.selectBetween(jCas, BaseToken.class, longerLeft, right)) {
- tokens.add(baseToken.getCoveredText());
- }
- }
- }else if(rightIsExpanded){
- for(BaseToken baseToken : JCasUtil.selectBetween(jCas, BaseToken.class, left, longerRight)) {
- tokens.add(baseToken.getCoveredText());
- }
- }else{
- for(BaseToken baseToken : JCasUtil.selectBetween(jCas, BaseToken.class, left, right)) {
- tokens.add(baseToken.getCoveredText());
- }
- }
- tokens.add("<" + rightType + ">");
- tokens.add(right.getCoveredText());
- tokens.add("</" + rightType + ">");
- if(rightIsExpanded){
- for(BaseToken baseToken : JCasUtil.selectFollowing(jCas, BaseToken.class, longerRight, contextSize)) {
- if(baseToken.getEnd() <= sent.getEnd()) {
- tokens.add(baseToken.getCoveredText());
- }
- }
- }else{
- for(BaseToken baseToken : JCasUtil.selectFollowing(jCas, BaseToken.class, right, contextSize)) {
- if(baseToken.getEnd() <= sent.getEnd()) {
- tokens.add(baseToken.getCoveredText());
- }
- }
- }
-
- return String.join(" ", tokens).replaceAll("[\r\n]", " ");
- }
-
- private static Annotation getLongerEvent(Map<EventMention, Collection<EventMention>> coveringMap,
- Annotation event) {
- int maxSpan = getSpan(event);
- Annotation longerEvent = event;
- Collection<EventMention> eventList = coveringMap.get(event);
- for(EventMention covEvent : eventList){
- int span = getSpan(covEvent);
- if(span > maxSpan){
- maxSpan = span;
- longerEvent = covEvent;
- }
- }
- return longerEvent;
- }
-
- private static int getSpan(Annotation left) {
- return (left.getEnd()-left.getBegin());
- }
-
+
/**
* original way of getting label
* @param relationLookup
@@ -308,8 +196,6 @@ public class EventEventTokenBasedAnnotat
}
private static List<IdentifiedAnnotationPair> getCandidateRelationArgumentPairs(JCas jCas, Sentence sentence) {
-// Map<EventMention, Collection<EventMention>> coveringMap =
-// JCasUtil.indexCovering(jCas, EventMention.class, EventMention.class);
List<IdentifiedAnnotationPair> pairs = Lists.newArrayList();
List<EventMention> events = new ArrayList<>(JCasUtil.selectCovered(jCas, EventMention.class, sentence));
@@ -328,44 +214,6 @@ public class EventEventTokenBasedAnnotat
for(int j = i+1; j < eventNum; j++){
EventMention eventA = events.get(i);
EventMention eventB = events.get(j);
-
-// boolean eventAMedical = false;
-// for( EventMention aEve : JCasUtil.selectCovering(jCas, EventMention.class, eventA)){
-// if(!aEve.getClass().equals(EventMention.class)){//this event cover a UMLS semantic type
-// eventAMedical = true;
-// break;
-// }
-// }
-//
-// boolean eventBMedical = false;
-// for( EventMention bEve : JCasUtil.selectCovering(jCas, EventMention.class, eventB)){
-// if(!bEve.getClass().equals(EventMention.class)){//this event cover a UMLS semantic type
-// eventBMedical = true;
-// break;
-// }
-// }
-
-// if(this.isTraining()){
-// //pairing covering system events:
-// if(eventAMedical || eventBMedical){
-// for (EventMention event1 : coveringMap.get(eventA)){
-// if(!hasOverlap(event1,eventB)){//don't generate overlapping arguments
-// pairs.add(new IdentifiedAnnotationPair(event1, eventB));
-// }
-//
-// for(EventMention event2 : coveringMap.get(eventB)){
-// if(!hasOverlap(event1,event2)){//don't generate overlapping arguments
-// pairs.add(new IdentifiedAnnotationPair(event1, event2));
-// }
-// }
-// }
-// for(EventMention event2 : coveringMap.get(eventB)){
-// if(!hasOverlap(eventA,event2)){//don't generate overlapping arguments
-// pairs.add(new IdentifiedAnnotationPair(eventA, event2));
-// }
-// }
-// }
-// }
pairs.add(new IdentifiedAnnotationPair(eventA, eventB));
}
@@ -373,15 +221,4 @@ public class EventEventTokenBasedAnnotat
return pairs;
}
-
- private static boolean hasOverlap(Annotation event1, Annotation event2) {
- if(event1.getEnd()>=event2.getBegin()&&event1.getEnd()<=event2.getEnd()){
- return true;
- }
- if(event2.getEnd()>=event1.getBegin()&&event2.getEnd()<=event1.getEnd()){
- return true;
- }
- return false;
- }
-
}