001package org.cleartk.clearnlp; 002 003import java.util.List; 004 005import org.apache.uima.jcas.JCas; 006import org.apache.uima.jcas.cas.FSArray; 007import org.cleartk.srl.type.Predicate; 008import org.cleartk.srl.type.SemanticArgument; 009import org.cleartk.token.type.Token; 010import org.apache.uima.fit.util.FSCollectionFactory; 011 012import com.google.common.annotations.Beta; 013 014/** 015 * Defines common set of token data type operations used to convert output from semantic role labelers into 016 * the annotations and properties for {@link SemanticArgument} and {@link Predicate} 017 * 018 * @author Lee Becker 019 * 020 */ 021@Beta 022public class CleartkSemanticRoleOps implements SemanticRoleOps<SemanticArgument, Token, Predicate, Token>{ 023 024 @Override 025 public SemanticArgument createArgument(JCas jCas, Token span, String label) { 026 SemanticArgument argument = new SemanticArgument(jCas, span.getBegin(), span.getEnd()); 027 argument.setLabel(label); 028 argument.addToIndexes(); 029 return argument; 030 } 031 032 @Override 033 public Predicate createPredicate(JCas jCas, Token span, String rolesetId) { 034 Predicate pred = new Predicate(jCas, span.getBegin(), span.getEnd()); 035 pred.setFrameSet(rolesetId); 036 pred.addToIndexes(); 037 return pred; 038 } 039 040 @Override 041 public void setPredicateArguments(JCas jCas, Predicate predicate, List<SemanticArgument> arguments) { 042 predicate.setArguments(new FSArray(jCas, arguments.size())); 043 FSCollectionFactory.fillArrayFS(predicate.getArguments(), arguments); 044 } 045 046}