Skip to content
Snippets Groups Projects
Commit 67862276 authored by Benoit Favre's avatar Benoit Favre
Browse files

add compatibility with macaon configuration commandline options

parent 821ec273
No related branches found
No related tags found
1 merge request!8add compatibility with macaon configuration commandline options
#include <cstdlib>
#include <vector> #include <vector>
#include "crf_decoder.hh" #include "crf_decoder.hh"
#include "crf_binlexicon.hh" #include "crf_binlexicon.hh"
...@@ -42,15 +43,20 @@ void tag_sentence(macaon::Decoder& decoder, macaon::BinaryLexicon* lexicon, cons ...@@ -42,15 +43,20 @@ void tag_sentence(macaon::Decoder& decoder, macaon::BinaryLexicon* lexicon, cons
} }
void usage(const char* argv0) { void usage(const char* argv0) {
std::cerr << "usage: " << argv0 << " [--conll07|--column <num>] <model> [lexicon]\n"; std::cerr << "usage: " << argv0 << " [--conll07|--column <num>] [<model> [lexicon]|-L <lang> [-D <model-dir>] [--nolexicon]]\n";
exit(1); exit(1);
} }
int main(int argc, char** argv) { int main(int argc, char** argv) {
bool isConll07 = false; // warning: no verification of conll07 format bool isConll07 = false; // warning: no verification of conll07 format
int word_offset = 0; int word_offset = 0;
std::string modelDir = "";
std::string modelLang = "";
char* macaon_dir = getenv("MACAON_DIR");
if(macaon_dir != NULL) modelDir = macaon_dir;
std::string modelName = ""; std::string modelName = "";
std::string lexiconName = ""; std::string lexiconName = "";
bool noLexicon = false;
for(int i = 1; i < argc; i++) { for(int i = 1; i < argc; i++) {
std::string arg = argv[i]; std::string arg = argv[i];
...@@ -63,6 +69,16 @@ int main(int argc, char** argv) { ...@@ -63,6 +69,16 @@ int main(int argc, char** argv) {
arg = argv[i + 1]; arg = argv[i + 1];
word_offset = strtol(arg.c_str(), NULL, 10) - 1; word_offset = strtol(arg.c_str(), NULL, 10) - 1;
i++; i++;
} else if(arg == "-L") {
arg = argv[i + 1];
modelLang = arg;
i++;
} else if(arg == "-D") {
arg = argv[i + 1];
modelDir = arg;
i++;
} else if(arg == "--nolexicon") {
noLexicon = true;
} else if(modelName == "") { } else if(modelName == "") {
modelName = arg; modelName = arg;
} else if(lexiconName =="") { } else if(lexiconName =="") {
...@@ -71,11 +87,19 @@ int main(int argc, char** argv) { ...@@ -71,11 +87,19 @@ int main(int argc, char** argv) {
usage(argv[0]); usage(argv[0]);
} }
} }
if(modelDir != "" && modelLang != "") {
modelName = modelDir + "/" + modelLang + "/bin/crf_tagger_model.bin";
if(!noLexicon) lexiconName = modelDir + "/" + modelLang + "/bin/crf_tagger_wordtag_lexicon.bin";
}
if(modelName == "" || word_offset < 0) usage(argv[0]); if(modelName == "" || word_offset < 0) usage(argv[0]);
macaon::Decoder decoder(modelName); macaon::Decoder decoder(modelName);
if(!decoder.IsLoaded()) return 1;
macaon::BinaryLexicon *lexicon = NULL; macaon::BinaryLexicon *lexicon = NULL;
if(lexiconName != "") lexicon = new macaon::BinaryLexicon(lexiconName, decoder.getTagset()); if(lexiconName != "") {
lexicon = new macaon::BinaryLexicon(lexiconName, decoder.getTagset());
if(!lexicon->IsLoaded()) return 1;
}
std::string line; std::string line;
std::vector<std::vector<std::string> > lines; std::vector<std::vector<std::string> > lines;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment