package edu.stanford.nlp.sempre; import fig.basic.*; /** * LanguageAnalyzer takes an utterance and applies various NLP pre-processing steps to * to output a LanguageInfo object * * @author Alex Ratner */ public abstract class LanguageAnalyzer { public static class Options { @Option public String languageAnalyzer = "SimpleAnalyzer"; @Option(gloss = "Whether to convert tokens in the utterance to lowercase") public boolean lowerCaseTokens = true; } public static Options opts = new Options(); // We keep a singleton LanguageAnalyzer because for any given run we // generally will be working with one. private static LanguageAnalyzer singleton; public static LanguageAnalyzer getSingleton() { if (singleton == null) singleton = (LanguageAnalyzer) Utils.newInstanceHard(SempreUtils.resolveClassName(opts.languageAnalyzer)); return singleton; } public static void setSingleton(LanguageAnalyzer analyzer) { singleton = analyzer; } public abstract LanguageInfo analyze(String utterance); }