edu.stanford.nlp.sequences
Class SequenceGibbsSampler

java.lang.Object
  extended by edu.stanford.nlp.sequences.SequenceGibbsSampler
All Implemented Interfaces:
BestSequenceFinder

public class SequenceGibbsSampler
extends Object
implements BestSequenceFinder

A Gibbs sampler for sequence models. Given a sequence model implementing the SequenceModel interface, this class is capable of sampling sequences from the distribution over sequences that it defines. It can also use this sampling procedure to find the best sequence.

Author:
grenager

Field Summary
 boolean returnLastFoundSequence
           
static int verbose
           
 
Constructor Summary
SequenceGibbsSampler(int numSamples, int sampleInterval, SequenceListener listener)
           
SequenceGibbsSampler(int numSamples, int sampleInterval, SequenceListener listener, List document)
           
SequenceGibbsSampler(int numSamples, int sampleInterval, SequenceListener listener, List document, boolean returnLastFoundSequence)
           
 
Method Summary
 int[] bestSequence(SequenceModel model)
          Finds the best sequence by collecting numSamples samples, scoring them, and then choosing the highest scoring sample.
 List<int[]> collectSamples(SequenceModel model, int numSamples, int sampleInterval)
          Collects numSamples samples of sequences, from the distribution over sequences defined by the sequence model passed on construction.
 List<int[]> collectSamples(SequenceModel model, int numSamples, int sampleInterval, int[] initialSequence)
          Collects numSamples samples of sequences, from the distribution over sequences defined by the sequence model passed on construction.
static int[] copy(int[] a)
           
 int[] findBestUsingAnnealing(SequenceModel model, CoolingSchedule schedule)
           
 int[] findBestUsingAnnealing(SequenceModel model, CoolingSchedule schedule, int[] initialSequence)
           
 int[] findBestUsingSampling(SequenceModel model, int numSamples, int sampleInterval, int[] initialSequence)
          Finds the best sequence by collecting numSamples samples, scoring them, and then choosing the highest scoring sample.
static int[] getRandomSequence(SequenceModel model)
           
 void printSamples(List samples, PrintStream out)
           
 double samplePosition(SequenceModel model, int[] sequence, int pos)
          Samples a single position in the sequence.
 double samplePosition(SequenceModel model, int[] sequence, int pos, double temperature)
          Samples a single position in the sequence.
 void sampleSequenceBackward(SequenceModel model, int[] sequence)
          Samples the complete sequence once in the backward direction Destructively modifies the sequence in place.
 void sampleSequenceBackward(SequenceModel model, int[] sequence, double temperature)
          Samples the complete sequence once in the backward direction Destructively modifies the sequence in place.
 void sampleSequenceForward(SequenceModel model, int[] sequence)
          Samples the complete sequence once in the forward direction Destructively modifies the sequence in place.
 void sampleSequenceForward(SequenceModel model, int[] sequence, double temperature)
          Samples the complete sequence once in the forward direction Destructively modifies the sequence in place.
 void sampleSequenceRepeatedly(SequenceModel model, int numSamples)
          Samples the sequence repeatedly, making numSamples passes over the entire sequence.
 void sampleSequenceRepeatedly(SequenceModel model, int[] sequence, int numSamples)
          Samples the sequence repeatedly, making numSamples passes over the entire sequence.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

verbose

public static int verbose

returnLastFoundSequence

public boolean returnLastFoundSequence
Constructor Detail

SequenceGibbsSampler

public SequenceGibbsSampler(int numSamples,
                            int sampleInterval,
                            SequenceListener listener,
                            List document,
                            boolean returnLastFoundSequence)
Parameters:
document - the underlying document which is a list of HasWord; a slight abstraction violation, but useful for debugging!!

SequenceGibbsSampler

public SequenceGibbsSampler(int numSamples,
                            int sampleInterval,
                            SequenceListener listener,
                            List document)

SequenceGibbsSampler

public SequenceGibbsSampler(int numSamples,
                            int sampleInterval,
                            SequenceListener listener)
Method Detail

copy

public static int[] copy(int[] a)

getRandomSequence

public static int[] getRandomSequence(SequenceModel model)

bestSequence

public int[] bestSequence(SequenceModel model)
Finds the best sequence by collecting numSamples samples, scoring them, and then choosing the highest scoring sample.

Specified by:
bestSequence in interface BestSequenceFinder
Returns:
the array of type int representing the highest scoring sequence

findBestUsingSampling

public int[] findBestUsingSampling(SequenceModel model,
                                   int numSamples,
                                   int sampleInterval,
                                   int[] initialSequence)
Finds the best sequence by collecting numSamples samples, scoring them, and then choosing the highest scoring sample.

Returns:
the array of type int representing the highest scoring sequence

findBestUsingAnnealing

public int[] findBestUsingAnnealing(SequenceModel model,
                                    CoolingSchedule schedule)

findBestUsingAnnealing

public int[] findBestUsingAnnealing(SequenceModel model,
                                    CoolingSchedule schedule,
                                    int[] initialSequence)

collectSamples

public List<int[]> collectSamples(SequenceModel model,
                                  int numSamples,
                                  int sampleInterval)
Collects numSamples samples of sequences, from the distribution over sequences defined by the sequence model passed on construction. All samples collected are sampleInterval samples apart, in an attempt to reduce autocorrelation.

Returns:
a List containing the sequence samples, as arrays of type int, and their scores

collectSamples

public List<int[]> collectSamples(SequenceModel model,
                                  int numSamples,
                                  int sampleInterval,
                                  int[] initialSequence)
Collects numSamples samples of sequences, from the distribution over sequences defined by the sequence model passed on construction. All samples collected are sampleInterval samples apart, in an attempt to reduce autocorrelation.

Returns:
a Counter containing the sequence samples, as arrays of type int, and their scores

sampleSequenceRepeatedly

public void sampleSequenceRepeatedly(SequenceModel model,
                                     int[] sequence,
                                     int numSamples)
Samples the sequence repeatedly, making numSamples passes over the entire sequence.


sampleSequenceRepeatedly

public void sampleSequenceRepeatedly(SequenceModel model,
                                     int numSamples)
Samples the sequence repeatedly, making numSamples passes over the entire sequence. Destructively modifies the sequence in place.


sampleSequenceForward

public void sampleSequenceForward(SequenceModel model,
                                  int[] sequence)
Samples the complete sequence once in the forward direction Destructively modifies the sequence in place.

Parameters:
sequence - the sequence to start with.

sampleSequenceForward

public void sampleSequenceForward(SequenceModel model,
                                  int[] sequence,
                                  double temperature)
Samples the complete sequence once in the forward direction Destructively modifies the sequence in place.

Parameters:
sequence - the sequence to start with.

sampleSequenceBackward

public void sampleSequenceBackward(SequenceModel model,
                                   int[] sequence)
Samples the complete sequence once in the backward direction Destructively modifies the sequence in place.

Parameters:
sequence - the sequence to start with.

sampleSequenceBackward

public void sampleSequenceBackward(SequenceModel model,
                                   int[] sequence,
                                   double temperature)
Samples the complete sequence once in the backward direction Destructively modifies the sequence in place.

Parameters:
sequence - the sequence to start with.

samplePosition

public double samplePosition(SequenceModel model,
                             int[] sequence,
                             int pos)
Samples a single position in the sequence. Destructively modifies the sequence in place. returns the score of the new sequence

Parameters:
sequence - the sequence to start with
pos - the position to sample.

samplePosition

public double samplePosition(SequenceModel model,
                             int[] sequence,
                             int pos,
                             double temperature)
Samples a single position in the sequence. Destructively modifies the sequence in place. returns the score of the new sequence

Parameters:
sequence - the sequence to start with
pos - the position to sample.

printSamples

public void printSamples(List samples,
                         PrintStream out)


Stanford NLP Group