package edu.berkeley.nlp.PCFGLA; import java.io.*; import java.util.Map; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; /** * Stores the serialized material representing the grammar and lexicon of a * parser, and an Options that specifies things like how unknown words were * handled and how distances were binned that will also be needed to parse * with the grammar. * * @author Slav Petrov */ public class ParserData implements Serializable { Lexicon lex; Grammar gr; Map numbs; SpanPredictor sp; short[] numSubStatesArray; int h_markov; int v_markov; Binarization bin; public Binarization getBinarization() { return bin; } public short[] getNumSubStatesArray() { return numSubStatesArray; } public SpanPredictor getSpanPredictor() { return sp; } public Grammar getGrammar() { return gr; } public Lexicon getLexicon() { return lex; } public Map getNumbs() { return numbs; } public int getH_markov() { return h_markov; } public int getV_markov() { return v_markov; } public ParserData(Lexicon lex, Grammar gr, SpanPredictor sp, Map numbs, short[] nSub,int v_m, int h_m, Binarization b) { this.lex = lex; this.gr = gr; this.sp = sp; this.numbs = numbs; this.numSubStatesArray = nSub; this.h_markov = h_m; this.v_markov = v_m; this.bin = b; } public boolean Save(String fileName) { try { //here's some code from online; it looks good and gzips the output! // there's a whole explanation at http://www.ecst.csuchico.edu/~amk/foo/advjava/notes/serial.html // Create the necessary output streams to save the scribble. FileOutputStream fos = new FileOutputStream(fileName); // Save to file GZIPOutputStream gzos = new GZIPOutputStream(fos); // Compressed ObjectOutputStream out = new ObjectOutputStream(gzos); // Save objects out.writeObject(this); // Write the mix of grammars out.flush(); // Always flush the output. out.close(); // And close the stream. gzos.close(); fos.close(); } catch (IOException e) { System.out.println("IOException: "+e); return false; } return true; } public static ParserData Load(String fileName) { ParserData pData = null; try { FileInputStream fis = new FileInputStream(fileName); // Load from file GZIPInputStream gzis = new GZIPInputStream(fis); // Compressed ObjectInputStream in = new ObjectInputStream(gzis); // Load objects pData = (ParserData)in.readObject(); // Read the mix of grammars in.close(); // And close the stream. gzis.close(); fis.close(); } catch (IOException e) { System.out.println("IOException\n"+e); return null; } catch (ClassNotFoundException e) { System.out.println("Class not found!"); return null; } return pData; } private static final long serialVersionUID = 1; }