00001 #include "KenDsg.h" 00002 00003 namespace Moses 00004 { 00005 00006 DsgLM* ConstructDsgLM(const char *file) 00007 { 00008 lm::ngram::ModelType model_type; 00009 lm::ngram::Config config; 00010 if (lm::ngram::RecognizeBinary(file, model_type)) { 00011 switch(model_type) { 00012 case lm::ngram::PROBING: 00013 return new KenDsg<lm::ngram::ProbingModel>(file, config); 00014 case lm::ngram::REST_PROBING: 00015 return new KenDsg<lm::ngram::RestProbingModel>(file, config); 00016 case lm::ngram::TRIE: 00017 return new KenDsg<lm::ngram::TrieModel>(file, config); 00018 case lm::ngram::QUANT_TRIE: 00019 return new KenDsg<lm::ngram::QuantTrieModel>(file, config); 00020 case lm::ngram::ARRAY_TRIE: 00021 return new KenDsg<lm::ngram::ArrayTrieModel>(file, config); 00022 case lm::ngram::QUANT_ARRAY_TRIE: 00023 return new KenDsg<lm::ngram::QuantArrayTrieModel>(file, config); 00024 default: 00025 UTIL_THROW2("Unrecognized kenlm model type " << model_type); 00026 } 00027 } else { 00028 return new KenDsg<lm::ngram::ProbingModel>(file, config); 00029 } 00030 } 00031 00032 } // namespace 00033 00034