/** * Title: StanfordMaxEnt<p> * Description: A Maximum Entropy Toolkit<p> * Copyright: Copyright (c) Trustees of Leland Stanford University * Company: Stanford University<p> */ package edu.stanford.nlp.maxent; import edu.stanford.nlp.io.PrintFile; /** * This is a general class for a Problem to be solved by the MaxEnt toolkit. * There have to be experiments and features. * * @author Kristina Toutanova * @version 1.0 */ public class Problem { public int exSize; public int fSize; /** * This is the training data. */ public Experiments data; /** * These are the features. */ public Features functions; public Problem(Experiments d, Features f) { data = d; functions = f; exSize = d.size(); fSize = f.size(); } public Problem() { } public void add(Feature f) { functions.add(f); fSize++; } public void removeLast() { functions.removeLast(); fSize--; } public void print() { System.out.println(" Problem printing "); data.print(); System.out.println(" Function printing "); for (int i = 0; i < fSize; i++) { functions.get(i).print(); } } public void print(String filename) { try { PrintFile pf = new PrintFile(filename); pf.println(" Problem printing "); data.print(pf); pf.println(" Function printing "); for (int i = 0; i < fSize; i++) { functions.get(i).print(pf); } } catch (Exception e) { System.out.println("Exception in Problem.print()"); } } /* // This is broken... it's not clear what it's supposed to do, but // class Experiments requires a "vArray" to function correctly. // Otherwise you just can't run ptilde on it. If that makes sense // to you, please do everyone a favor and fix this test program or // at least document what those fields mean. -horatio public static void main(String[] args) { double[] f1 = {0, 1, 1, 0, 1, 1}; double[] f2 = {1, 0, 1, 1, 0, 1}; Experiments gophers = new Experiments(); for (int i = 0; i < 3; i++) { gophers.add(new Experiments()); } for (int i = 0; i < 3; i++) { gophers.add(new Experiments()); } gophers.ptilde(); Index<IntPair> instanceIndex = gophers.createIndex(); Features feats = new Features(); feats.add(new Feature(gophers, f1, instanceIndex)); feats.add(new Feature(gophers, f2, instanceIndex)); Problem p = new Problem(gophers, feats); System.out.println(p.exSize); System.out.println(p.functions.get(1).ftilde()); } */ }