diff options
author | Hieu Hoang <fishandfrolick@gmail.com> | 2012-06-01 02:32:24 +0400 |
---|---|---|
committer | Hieu Hoang <fishandfrolick@gmail.com> | 2012-06-01 02:32:24 +0400 |
commit | 417d5ee57ba980b4a88031550163a218bf9c5a1c (patch) | |
tree | 29662a0db328b4fc5fa3ece97cb5bbf931d79fee /biconcor/biconcor.cpp | |
parent | 48faedb3bdfe1507d19cf2b76fbc81f3be2ff244 (diff) |
move biconcor to /
Diffstat (limited to 'biconcor/biconcor.cpp')
-rw-r--r-- | biconcor/biconcor.cpp | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/biconcor/biconcor.cpp b/biconcor/biconcor.cpp new file mode 100644 index 000000000..a25e63cb7 --- /dev/null +++ b/biconcor/biconcor.cpp @@ -0,0 +1,123 @@ +#include "SuffixArray.h" +#include "TargetCorpus.h" +#include "Alignment.h" +#include "PhrasePairCollection.h" +#include <getopt.h> +#include "base64.h" + +using namespace std; + +int main(int argc, char* argv[]) +{ + // handle parameters + string query; + string fileNameSuffix; + string fileNameSource; + string fileNameTarget = ""; + string fileNameAlignment = ""; + int loadFlag = false; + int saveFlag = false; + int createFlag = false; + int queryFlag = false; + int htmlFlag = false; + string info = "usage: suffix-query\n\t[--load file]\n\t[--save file]\n\t[--create source-corpus]\n\t[--query string]\n\t[--target target-corpus]\n\t[--alignment file]\n"; + while(1) { + static struct option long_options[] = { + {"load", required_argument, 0, 'l'}, + {"save", required_argument, 0, 's'}, + {"create", required_argument, 0, 'c'}, + {"query", required_argument, 0, 'q'}, + {"target", required_argument, 0, 't'}, + {"alignment", required_argument, 0, 'a'}, + {"html", no_argument, &htmlFlag, 0}, + {0, 0, 0, 0} + }; + int option_index = 0; + int c = getopt_long (argc, argv, "l:s:c:q:Q:t:a:h", long_options, &option_index); + if (c == -1) break; + switch (c) { + case 'l': + fileNameSuffix = string(optarg); + loadFlag = true; + break; + case 't': + fileNameTarget = string(optarg); + break; + case 'a': + fileNameAlignment = string(optarg); + break; + case 's': + fileNameSuffix = string(optarg); + saveFlag = true; + break; + case 'c': + fileNameSource = string(optarg); + createFlag = true; + break; + case 'Q': + query = base64_decode(string(optarg)); + queryFlag = true; + break; + case 'q': + query = string(optarg); + queryFlag = true; + break; + default: + cerr << info; + exit(1); + } + } + + // check if parameter settings are legal + if (saveFlag && !createFlag) { + cerr << "error: cannot save without creating\n" << info; + exit(1); + } + if (saveFlag && loadFlag) { + cerr << "error: cannot load and save at the same time\n" << info; + exit(1); + } + if (!loadFlag && !createFlag) { + cerr << "error: neither load or create - i have no info!\n" << info; + exit(1); + } + if (createFlag && (fileNameTarget == "" || fileNameAlignment == "")) { + cerr << "error: i have no target corpus or alignment\n" << info; + exit(1); + } + + // do your thing + SuffixArray suffixArray; + TargetCorpus targetCorpus; + Alignment alignment; + if (createFlag) { + cerr << "will create\n"; + cerr << "source corpus is in " << fileNameSource << endl; + suffixArray.Create( fileNameSource ); + cerr << "target corpus is in " << fileNameTarget << endl; + targetCorpus.Create( fileNameTarget ); + cerr << "alignment is in " << fileNameAlignment << endl; + alignment.Create( fileNameAlignment ); + if (saveFlag) { + suffixArray.Save( fileNameSuffix ); + targetCorpus.Save( fileNameSuffix ); + alignment.Save( fileNameSuffix ); + cerr << "will save in " << fileNameSuffix << endl; + } + } + if (loadFlag) { + cerr << "will load from " << fileNameSuffix << endl; + suffixArray.Load( fileNameSuffix ); + targetCorpus.Load( fileNameSuffix ); + alignment.Load( fileNameSuffix ); + } + if (queryFlag) { + cerr << "query is " << query << endl; + vector< string > queryString = alignment.Tokenize( query.c_str() ); + PhrasePairCollection ppCollection( &suffixArray, &targetCorpus, &alignment ); + ppCollection.GetCollection( queryString ); + ppCollection.PrintHTML(); + } + + return 0; +} |