public void increment (FeatureSequence fs, double scale) { if (fs.getAlphabet() != dictionary) throw new IllegalArgumentException ("Vocabularies don't match."); for (int fsi = 0; fsi < fs.size(); fsi++) increment (fs.getIndexAtPosition(fsi), scale); }
public AugmentableFeatureVector (FeatureSequence fs, boolean binary) { this (fs.getAlphabet(), binary); for (int i = fs.size()-1; i >= 0; i--) add (fs.getIndexAtPosition(i), 1.0); }
public void priorCost(InstanceList trainingSet) { int numLabels = outputAlphabet.size(); priorInitialCost = new double[numLabels]; priorFinalCost = new double[numLabels]; int initialNum = 0; int finalNum = 0; for (int i = 0; i < trainingSet.size(); i++) { Instance instance = trainingSet.getInstance(i); FeatureSequence output = (FeatureSequence) instance.getTarget(); int initialIndex = outputAlphabet.lookupIndex (output.get(0)); int finalIndex= outputAlphabet.lookupIndex (output.get(output.size()-1)); assert (initialIndex >= 0 && finalIndex >= 0); priorInitialCost[initialIndex] ++; priorFinalCost[finalIndex] ++; initialNum ++; finalNum ++; } for(int i=0; i<numLabels; i++){ priorInitialCost[i] = (priorInitialCost[i]+1)/(initialNum+numLabels); priorInitialCost[i] = -Math.log(priorInitialCost[i]); priorFinalCost[i] /= finalNum; priorFinalCost[i] = -Math.log(priorFinalCost[i]); System.out.println((String)outputAlphabet.lookupObject(i) + " " + priorInitialCost[i] + " " + priorFinalCost[i]); } }
private boolean[][] labelConnectionsIn (InstanceList trainingSet) { int numLabels = outputAlphabet.size(); boolean[][] connections = new boolean[numLabels][numLabels]; for (int i = 0; i < trainingSet.size(); i++) { Instance instance = trainingSet.getInstance(i); FeatureSequence output = (FeatureSequence) instance.getTarget(); for (int j = 1; j < output.size(); j++) { int sourceIndex = outputAlphabet.lookupIndex (output.get(j-1)); int destIndex = outputAlphabet.lookupIndex (output.get(j)); assert (sourceIndex >= 0 && destIndex >= 0); connections[sourceIndex][destIndex] = true; } } return connections; }
private boolean[][] labelConnectionsIn (InstanceList trainingSet) { int numLabels = outputAlphabet.size(); boolean[][] connections = new boolean[numLabels][numLabels]; for (int i = 0; i < trainingSet.size(); i++) { Instance instance = trainingSet.getInstance(i); FeatureSequence output = (FeatureSequence) instance.getTarget(); for (int j = 1; j < output.size(); j++) { int sourceIndex = outputAlphabet.lookupIndex (output.get(j-1)); int destIndex = outputAlphabet.lookupIndex (output.get(j)); assert (sourceIndex >= 0 && destIndex >= 0); connections[sourceIndex][destIndex] = true; } } return connections; }
private boolean[][] labelConnectionsIn (InstanceList trainingSet) { int numLabels = outputAlphabet.size(); boolean[][] connections = new boolean[numLabels][numLabels]; for (int i = 0; i < trainingSet.size(); i++) { Instance instance = trainingSet.getInstance(i); FeatureSequence output = (FeatureSequence) instance.getTarget(); for (int j = 1; j < output.size(); j++) { int sourceIndex = outputAlphabet.lookupIndex (output.get(j-1)); int destIndex = outputAlphabet.lookupIndex (output.get(j)); assert (sourceIndex >= 0 && destIndex >= 0); connections[sourceIndex][destIndex] = true; } } return connections; }
private boolean[][] labelConnectionsIn (InstanceList trainingSet) { int numLabels = outputAlphabet.size(); boolean[][] connections = new boolean[numLabels][numLabels]; for (int i = 0; i < trainingSet.size(); i++) { Instance instance = trainingSet.getInstance(i); FeatureSequence output = (FeatureSequence) instance.getTarget(); for (int j = 1; j < output.size(); j++) { int sourceIndex = outputAlphabet.lookupIndex (output.get(j-1)); int destIndex = outputAlphabet.lookupIndex (output.get(j)); assert (sourceIndex >= 0 && destIndex >= 0); connections[sourceIndex][destIndex] = true; } } return connections; }
private boolean[][] labelConnectionsIn (InstanceList trainingSet) { int numLabels = outputAlphabet.size(); boolean[][] connections = new boolean[numLabels][numLabels]; for (int i = 0; i < trainingSet.size(); i++) { Instance instance = trainingSet.getInstance(i); FeatureSequence output = (FeatureSequence) instance.getTarget(); for (int j = 1; j < output.size(); j++) { int sourceIndex = outputAlphabet.lookupIndex (output.get(j-1)); int destIndex = outputAlphabet.lookupIndex (output.get(j)); assert (sourceIndex >= 0 && destIndex >= 0); connections[sourceIndex][destIndex] = true; } } return connections; }
private boolean[][] labelConnectionsIn (InstanceList trainingSet, String start) { int numLabels = outputAlphabet.size(); boolean[][] connections = new boolean[numLabels][numLabels]; for (int i = 0; i < trainingSet.size(); i++) { Instance instance = trainingSet.getInstance(i); FeatureSequence output = (FeatureSequence) instance.getTarget(); for (int j = 1; j < output.size(); j++) { int sourceIndex = outputAlphabet.lookupIndex (output.get(j-1)); int destIndex = outputAlphabet.lookupIndex (output.get(j)); assert (sourceIndex >= 0 && destIndex >= 0); connections[sourceIndex][destIndex] = true; } } // Handle start state if (start != null) { int startIndex = outputAlphabet.lookupIndex (start); for (int j = 0; j < outputAlphabet.size(); j++) { connections[startIndex][j] = true; } } return connections; }
public void testNewPutSizeFreeze () { Alphabet dict = new Alphabet (); FeatureSequence fs = new FeatureSequence (dict, 10); fs.add (dict.lookupIndex ("apple")); fs.add (dict.lookupIndex ("bear")); fs.add (dict.lookupIndex ("car")); fs.add (dict.lookupIndex ("door")); assertTrue (fs.size() == 4); double[] weights = new double[4]; fs.addFeatureWeightsTo (weights); assertTrue (weights[1] == 1.0); fs.add (dict.lookupIndex ("bear")); int[] feats = fs.toFeatureIndexSequence(); assertTrue (feats[0] == 0); assertTrue (feats[1] == 1); assertTrue (feats[2] == 2); assertTrue (feats[3] == 3); assertTrue (feats[4] == 1); }