public RandomTokenSequenceIterator (Random r, Alphabet vocab, String[] classnames) { this (r, new Dirichlet(vocab, 2.0), 30, 0, 10, 20, classnames); }
public Alphabet getAlphabet () { return classCentroidDistribution.getAlphabet(); }
public Dirichlet randomDirichlet (Random r, double averageAlpha) { double[] pr = randomRawMultinomial (r); double alphaSum = pr.length*averageAlpha; //System.out.println ("randomDirichlet alphaSum = "+alphaSum); for (int i = 0; i < pr.length; i++) pr[i] *= alphaSum; return new Dirichlet (pr, dict); }
assert (classCentroidDistribution.getAlphabet() instanceof Alphabet); this.classCentroidAvergeAlphaMean = classCentroidAvergeAlphaMean; this.classCentroidAvergeAlphaVariance = classCentroidAvergeAlphaVariance; classCentroidAvergeAlphaVariance); logger.fine ("aveAlpha = "+aveAlpha); classCentroid[i] = classCentroidDistribution.randomDirichlet (r, aveAlpha);
public FeatureVector randomFeatureVector (Random r, int size) { return new FeatureVector (this.randomFeatureSequence (r, size)); }
public double[] randomVector (Random r) { return randomRawMultinomial (r); }
public MAPEstimator (Dirichlet d) { super (d.size()); prior = d; }
public FeatureSequence randomFeatureSequence (Random r, int length) { Multinomial m = randomMultinomial (r); return m.randomFeatureSequence (r, length); }
public Instance nextInstance () { if (currentInstanceIndex < 0) { if (currentClassIndex <= 0) throw new IllegalStateException ("No next TokenSequence."); currentClassIndex--; currentInstanceIndex = numInstancesPerClass[currentClassIndex] - 1; } URI uri = null; try { uri = new URI ("random:" + classNames[currentClassIndex] + "/" + currentInstanceIndex); } catch (Exception e) {e.printStackTrace(); throw new IllegalStateException (); } //xxx Producing small numbers? int randomSize = r.nextPoisson (featureVectorSizePoissonLambda); int randomSize = (int)featureVectorSizePoissonLambda; TokenSequence ts = classCentroid[currentClassIndex].randomTokenSequence (r, randomSize); //logger.fine ("FeatureVector "+currentClassIndex+" "+currentInstanceIndex); fv.print(); currentInstanceIndex--; return new Instance (ts, classNames[currentClassIndex], uri, null); }
public Instance nextInstance () { if (currentInstanceIndex < 0) { if (currentClassIndex <= 0) throw new IllegalStateException ("No next FeatureVector."); currentClassIndex--; currentInstanceIndex = numInstancesPerClass[currentClassIndex] - 1; } URI uri = null; try { uri = new URI ("random:" + classNames[currentClassIndex] + "/" + currentInstanceIndex); } catch (Exception e) {e.printStackTrace(); throw new IllegalStateException (); } //xxx Producing small numbers? int randomSize = r.nextPoisson (featureVectorSizePoissonLambda); int randomSize = (int)featureVectorSizePoissonLambda; FeatureVector fv = classCentroid[currentClassIndex].randomFeatureVector (r, randomSize); //logger.fine ("FeatureVector "+currentClassIndex+" "+currentInstanceIndex); fv.print(); currentInstanceIndex--; return new Instance (fv, classNames[currentClassIndex], uri, null); }
assert (classCentroidDistribution.getAlphabet() instanceof Alphabet); this.classCentroidAvergeAlphaMean = classCentroidAvergeAlphaMean; this.classCentroidAvergeAlphaVariance = classCentroidAvergeAlphaVariance; classCentroidAvergeAlphaVariance); logger.fine ("aveAlpha = "+aveAlpha); classCentroid[i] = classCentroidDistribution.randomDirichlet (r, aveAlpha);
public TokenSequence randomTokenSequence (Random r, int length) { FeatureSequence fs = randomFeatureSequence (r, length); TokenSequence ts = new TokenSequence (length); for (int i = 0; i < length; i++) ts.add (fs.getObjectAtPosition(i)); return ts; }
public Multinomial randomMultinomial (Random r) { return new Multinomial (randomRawMultinomial(r), dict, alphas.length, false, false); }
public RandomFeatureVectorIterator (Random r, Alphabet vocab, String[] classnames) { this (r, new Dirichlet(vocab, 2.0), 30, 0, 10, 20, classnames); }
public Alphabet getAlphabet () { return classCentroidDistribution.getAlphabet(); }
public InstanceList (Random r, Alphabet vocab, String[] classNames, int meanInstancesPerLabel) { this (r, new Dirichlet(vocab, 2.0), 30, 0, 10, meanInstancesPerLabel, classNames); }
public Dirichlet estimate () { Dirichlet d = new Dirichlet (((Multinomial)multinomials.get(0)).size()); for (int i = 1; i < multinomials.size(); i++) ((Multinomial)multinomials.get(i)).addProbabilitiesTo(d.alphas); double alphaSum = 0; for (int i = 0; i < d.alphas.length; i++) alphaSum += d.alphas[i]; for (int i = 0; i < d.alphas.length; i++) d.alphas[i] /= alphaSum; // xxx Fix this to set sum by variance matching throw new UnsupportedOperationException ("Not yet implemented."); //return d; }
public RandomFeatureVectorIterator (Random r, int vocabSize, int numClasses) { this (r, new Dirichlet(dictOfSize(vocabSize), 2.0), 30, 0, 10, 20, classNamesOfSize(numClasses)); }
public InstanceList (Random r, int vocabSize, int numClasses) { this (r, new Dirichlet(dictOfSize(vocabSize), 2.0), 30, 0, 10, 20, classNamesOfSize(numClasses)); }
public RandomTokenSequenceIterator (Random r, int vocabSize, int numClasses) { this (r, new Dirichlet(dictOfSize(vocabSize), 2.0), 30, 0, 10, 20, classNamesOfSize(numClasses)); }