/**
*
*/
package edu.berkeley.nlp.discPCFG;
import java.util.List;
import edu.berkeley.nlp.PCFGLA.BinaryRule;
import edu.berkeley.nlp.PCFGLA.Grammar;
import edu.berkeley.nlp.PCFGLA.Rule;
import edu.berkeley.nlp.PCFGLA.SimpleLexicon;
import edu.berkeley.nlp.PCFGLA.SpanPredictor;
import edu.berkeley.nlp.PCFGLA.UnaryRule;
import edu.berkeley.nlp.syntax.StateSet;
/**
* @author petrov
*
*/
public interface Linearizer {
public double[] getLinearizedGrammar();
public double[] getLinearizedLexicon();
public double[] getLinearizedSpanPredictor();
public double[] getLinearizedWeights();
public void delinearizeWeights(double[] logWeights);
public Grammar getGrammar();
public SimpleLexicon getLexicon();
public SpanPredictor getSpanPredictor();
public void increment(double[] counts, StateSet stateSet, int tag, double[] weights, boolean isGold);
public void increment(double[] counts, UnaryRule rule, double[] weights, boolean isGold);
public void increment(double[] counts, BinaryRule rule, double[] weights, boolean isGold);
public void increment(double[] counts, List<StateSet> sentence, double[][][] weights, boolean isGold);
public int dimension();
public int getNGrammarWeights();
public int getNLexiconWeights();
public int getNSpanWeights();
}