Skip to content
Snippets Groups Projects
Commit 67ee4673 authored by Alexis Nasr's avatar Alexis Nasr
Browse files

Merge branch 'tagger_options' into 'master'

add compatibility with macaon configuration commandline options

See merge request !8
parents faef0f16 67862276
Branches
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