Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 package org.apache.ctakes.temporal.ae.feature;
 
 import java.util.List;
 
import  org.cleartk.ml.Feature;
	private static final String FEAT_NAME = "Depending_Verb"
	public List<Feature> extract(JCas jcasIdentifiedAnnotation arg1,
		List<Feature> features = new ArrayList<>();
		// first get the common ancestor of both arguments...
		ConllDependencyNode ancestor = null;
		boolean hasCommonVerb = false;
		outerloop:
		for (ConllDependencyNode firstNode : JCasUtil.selectCovered(jcasConllDependencyNode.classarg1)) {//get the covered conll nodes within the first extent
			String pos = firstNode.getPostag();
			if(pos!=null && pos.startsWith("NN")){//get the head node
				for(ConllDependencyNode nextNode : JCasUtil.selectCovered(jcasConllDependencyNode.classarg2)){//get the covered conll nodes within the next extent
					pos = nextNode.getPostag();
					if(pos!=null && pos.startsWith("NN")){//get the head node
						ancestor = DependencyParseUtils.getCommonAncestor(firstNodenextNode);
						if(ancestor!=null && ancestor.getPostag().startsWith("VB")){
							features.add(new Feature("both_events_governed_by_the_same_verb"));
							features.add(new Feature(ancestor.getDeprel()+"_"+ancestor.getCoveredText().toLowerCase()));
							hasCommonVerb = true;
							break outerloop;
						}
					}
				}
			}
		}
		if(!hasCommonVerb){//if arg1 and arg2 don't depend on the same verb, get their independent depending verbs
			features.addAll(getDependingVerbFeature(jcasarg1));
			features.addAll(getDependingVerbFeature(jcasarg2));
		}
		return features;
	}
	private static List<Feature> getDependingVerbFeature(JCas jcasIdentifiedAnnotation arg) {
		List<Feature> feats = new ArrayList<>();
		for (ConllDependencyNode dnode : JCasUtil.selectCovered(jcasConllDependencyNode.classarg)) {//get the covered conll nodes within the first extent
			String pos = dnode.getPostag();
			if(pos!=null && pos.startsWith("NN")){//get the head node
				ConllDependencyNode verbNode = getVerbAncestor(dnode);
				if(verbNode != null){//get verb node features
					Integer typeId = -1;
					if(arg instanceof EventMention){
						EventMention mention = (EventMentionarg;
						if(mention.getEvent() != null && mention.getEvent().getProperties() != null){
							typeId = mention.getEvent().getProperties().getTypeIndexID();
						}
					}
					feats.add(new Feature(typeId+"_"verbNode.getPostag()));
					String depRelation = dnode.getDeprel();
					if(depRelation.startsWith("nsubj"))
						feats.add(new Feature(typeId+"_isASubject"));
					else if(depRelation.startsWith("dobj"))
						feats.add(new Feature(typeId+"_isAnObject"));
					break;
				}
			}
		}
		return feats;
	}
		ConllDependencyNode verbNode = null;
		ConllDependencyNode currNode = dnode;
	    while (currNode != null && currNode.getHead() != null) { 
	      currNode = currNode.getHead();
	      String nodepos = currNode == null ? null : currNode.getPostag();
	      if(nodepos != null && nodepos.startsWith("VB")){
	    	  verbNode = currNode;
	    	  return verbNode;
	      }
	    }
		return verbNode;
	}
New to GrepCode? Check out our FAQ X