// Path: src/main/java/edu/berkeley/nlp/entity/coref/ConjFeatures.java
// public enum ConjFeatures {
//   NONE, TYPE, TYPE_OR_RAW_PRON, TYPE_OR_CANONICAL_PRON, SEMCLASS_OR_CANONICAL_PRON, SEMCLASS_OR_CANONICAL_PRON_COORD,
//       NER_OR_CANONICAL_PRON, NERFINE_OR_CANONICAL_PRON, SEMCLASS_NER_OR_CANONICAL_PRON,
//       CUSTOM_OR_CANONICAL_PRON, CUSTOM_NER_OR_CANONICAL_PRON, CUSTOM_NERMED_OR_CANONICAL_PRON, CUSTOM_NERFINE_OR_CANONICAL_PRON;
// }


import edu.berkeley.nlp.entity.coref.ConjFeatures;
import edu.berkeley.nlp.entity.coref.ConjScheme;
import edu.berkeley.nlp.entity.coref.CorefPrunerJavaHack;
import edu.berkeley.nlp.entity.coref.CorefSystem;
import edu.berkeley.nlp.entity.lang.Language;
import edu.berkeley.nlp.futile.fig.basic.Option;
import edu.berkeley.nlp.futile.fig.exec.Execution;
import edu.berkeley.nlp.futile.util.Logger;

  @Option(gloss = "")
  public static String neMentType = "all";
  @Option(gloss = "")
  public static boolean setProperMentionsFromNER = true;
  
  // TRAINING AND INFERENCE
  // These settings are reasonable and quite robust; you really shouldn't have
  // to tune the regularizer. I didn't find adjusting it useful even when going
  // from thousands to millions of features.
  @Option(gloss = "eta for Adagrad")
  public static double eta = 1.0;
  @Option(gloss = "Regularization constant (might be lambda or c depending on which algorithm is used)")
  public static double reg = 0.001;
  @Option(gloss = "Batch size; right now batchSize > 1 works badly for some reason")
  public static int batchSize = 1;
  
  // COREFERENCE OPTIONS
  @Option(gloss = "Loss fcn to use")
  public static String lossFcn = "customLoss-0.1-3-1";
  @Option(gloss = "Loss fcn to use")
  public static String lossFcnSecondPass = "customLoss-0.1-3-1";
  @Option(gloss = "Number of iterations")
  public static int numItrs = 20;
  @Option(gloss = "Pruning strategy for coarse pass. No pruning by default")
  public static String pruningStrategy = "distance:10000:5000";
  
  @Option(gloss = "Features to use")
  public static String pairwiseFeats = "FINAL";
  @Option(gloss = "Conjunction features: what bits do we add to each feature?")
// Path: src/main/java/edu/berkeley/nlp/entity/coref/ConjFeatures.java
// public enum ConjFeatures {
//   NONE, TYPE, TYPE_OR_RAW_PRON, TYPE_OR_CANONICAL_PRON, SEMCLASS_OR_CANONICAL_PRON, SEMCLASS_OR_CANONICAL_PRON_COORD,
//       NER_OR_CANONICAL_PRON, NERFINE_OR_CANONICAL_PRON, SEMCLASS_NER_OR_CANONICAL_PRON,
//       CUSTOM_OR_CANONICAL_PRON, CUSTOM_NER_OR_CANONICAL_PRON, CUSTOM_NERMED_OR_CANONICAL_PRON, CUSTOM_NERFINE_OR_CANONICAL_PRON;
// }


// Path: src/main/java/edu/berkeley/nlp/entity/Driver.java
import edu.berkeley.nlp.entity.coref.ConjFeatures;
import edu.berkeley.nlp.entity.coref.ConjScheme;
import edu.berkeley.nlp.entity.coref.CorefPrunerJavaHack;
import edu.berkeley.nlp.entity.coref.CorefSystem;
import edu.berkeley.nlp.entity.lang.Language;
import edu.berkeley.nlp.futile.fig.basic.Option;
import edu.berkeley.nlp.futile.fig.exec.Execution;
import edu.berkeley.nlp.futile.util.Logger;


  @Option(gloss = "")
  public static String neMentType = "all";
  @Option(gloss = "")
  public static boolean setProperMentionsFromNER = true;
  
  // TRAINING AND INFERENCE
  // These settings are reasonable and quite robust; you really shouldn't have
  // to tune the regularizer. I didn't find adjusting it useful even when going
  // from thousands to millions of features.
  @Option(gloss = "eta for Adagrad")
  public static double eta = 1.0;
  @Option(gloss = "Regularization constant (might be lambda or c depending on which algorithm is used)")
  public static double reg = 0.001;
  @Option(gloss = "Batch size; right now batchSize > 1 works badly for some reason")
  public static int batchSize = 1;
  
  // COREFERENCE OPTIONS
  @Option(gloss = "Loss fcn to use")
  public static String lossFcn = "customLoss-0.1-3-1";
  @Option(gloss = "Loss fcn to use")
  public static String lossFcnSecondPass = "customLoss-0.1-3-1";
  @Option(gloss = "Number of iterations")
  public static int numItrs = 20;
  @Option(gloss = "Pruning strategy for coarse pass. No pruning by default")
  public static String pruningStrategy = "distance:10000:5000";
  
  @Option(gloss = "Features to use")
  public static String pairwiseFeats = "FINAL";
  @Option(gloss = "Conjunction features: what bits do we add to each feature?")
  public static ConjFeatures conjFeats = ConjFeatures.TYPE_OR_CANONICAL_PRON;