/* * ArraysDataSetDefinition.java * * Yaoyong Li 22/03/2007 * * $Id: ArraysDataSetDefinition.java, v 1.0 2007-03-22 12:58:16 +0000 yaoyong $ */ package gate.learning; import java.util.List; /** * Arrays and variables representing the features from one unit of data set * definition, for the purpose of fast computation. */ public class ArraysDataSetDefinition { /** Array of annotation types for all ATTRIBUTEs. */ String[] typesInDataSetDef; /** Array of annotation featuress for all ATTRIBUTEs. */ String[] featuresInDataSetDef; /** Array of names of all ATTRIBUTEs. */ String[] namesInDataSetDef; /** * Array of annotation types of all attributes in Argument 1 of a relation. */ String[] arg1s; /** * Array of annotation types of all attributes in Argument 2 of a relation. */ String[] arg2s; /** Position of the feature's annotation to the instance annotation. */ int[] featurePosition; /** Number of ATTRIBUTEs in the dataset definition unit. */ int numTypes = 0; /** Number of NGRAMs in the dataset definition unit. */ int numNgrams = 0; /** Name of annotation type for class. */ String classType; /** Name of annotation feature for class. */ String classFeature; /** Name of feature in the instance annotation as argument 1 of the relation. */ String classArg1; /** Name of feature in the instance annotation as argument 2 of the relation. */ String classArg2; /** * The furthest left-hand position of the features, relative to the instance. */ int maxNegPosition = 0; /** * The furthest right-hand position of the features, relative to the instance. */ int maxPosPosition = 0; /** Put the types and feautures and others into the arrays. */ void putTypeAndFeatIntoArray(List attrs) { numTypes = obtainNumberOfNLPTypes(attrs); typesInDataSetDef = new String[numTypes]; featuresInDataSetDef = new String[numTypes]; namesInDataSetDef = new String[numTypes]; featurePosition = new int[numTypes]; // added allFeat; obtainGATETypesAndFeatures(attrs); // System.out.println("name0="+namesInDataSetDef[0]); for(int i = 0; i < numTypes; ++i) { if(featurePosition[i] < maxNegPosition) maxNegPosition = featurePosition[i]; if(featurePosition[i] > maxPosPosition) maxPosPosition = featurePosition[i]; } maxNegPosition = -maxNegPosition; } /** Get the number of features in the dataset definition unit. */ static int obtainNumberOfNLPTypes(List attrs) { int num = 0; if(attrs == null) { return num; } else { for(int i = 0; i < attrs.size(); i++) { if(!((Attribute)attrs.get(i)).isClass()) num++; } return num; } } /** Get the type, feature, name and position of each of attribute features. */ void obtainGATETypesAndFeatures(List attrs) { int num0 = 0; for(int i = 0; i < attrs.size(); i++) { Attribute attr = (Attribute)attrs.get(i); if(!attr.isClass()) { typesInDataSetDef[num0] = attr.getType(); featuresInDataSetDef[num0] = attr.getFeature(); namesInDataSetDef[num0] = attr.getName(); featurePosition[num0] = attr.getPosition(); // System.out.println(new Integer(num0+1) + " " + // namesInDataSetDef[num0] + " " // + typesInDataSetDef[num0] + " " + // featuresInDataSetDef[num0]); ++num0; } else { classType = attr.getType(); classFeature = attr.getFeature(); } } } /** * Get the annotation features of the two arguments of relation for all the * ATTRIBUTE_RELs. */ void obtainArgs(List relAttrs) { int num0 = 0; arg1s = new String[numTypes]; arg2s = new String[numTypes]; for(int i = 0; i < relAttrs.size(); i++) { AttributeRelation attr = (AttributeRelation)relAttrs.get(i); if(!attr.isClass()) { arg1s[num0] = attr.getArg1(); arg2s[num0] = attr.getArg2(); ++num0; } else { classArg1 = attr.getArg1(); classArg2 = attr.getArg2(); } } } }