Download tools/mosesdecoder/biconcor/biconcor.cpp from Quagmire1/wiki-cased: direct link, hf CLI and curl.
- Browser
- Download file 5.14 kB
-
https://huggingface.co/Quagmire1/wiki-cased/resolve/main/tools/mosesdecoder/biconcor/biconcor.cpp
- Command line
-
hf download hf://Quagmire1/wiki-cased/tools/mosesdecoder/biconcor/biconcor.cpp
-
curl -L -o biconcor.cpp https://huggingface.co/Quagmire1/wiki-cased/resolve/main/tools/mosesdecoder/biconcor/biconcor.cpp
5.14 kB
| 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; // output as HTML | |
| int prettyFlag = false; // output readable on screen | |
| int stdioFlag = false; // receive requests from STDIN, respond to STDOUT | |
| int max_translation = 20; | |
| int max_example = 50; | |
| string info = "usage: biconcor\n\t[--load model-file]\n\t[--save model-file]\n\t[--create source-corpus]\n\t[--query string]\n\t[--target target-corpus]\n\t[--alignment file]\n\t[--translations count]\n\t[--examples count]\n\t[--html]\n\t[--stdio]\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, 0, 'h'}, | |
| {"pretty", no_argument, 0, 'p'}, | |
| {"stdio", no_argument, 0, 'i'}, | |
| {"translations", required_argument, 0, 'o'}, | |
| {"examples", required_argument, 0, 'e'}, | |
| {0, 0, 0, 0} | |
| }; | |
| int option_index = 0; | |
| int c = getopt_long (argc, argv, "l:s:c:q:Q:t:a:hpio:e:", 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; | |
| case 'o': | |
| max_translation = atoi(optarg); | |
| break; | |
| case 'e': | |
| max_example = atoi(optarg); | |
| break; | |
| case 'p': | |
| prettyFlag = true; | |
| break; | |
| case 'h': | |
| htmlFlag = true; | |
| break; | |
| case 'i': | |
| stdioFlag = true; | |
| break; | |
| default: | |
| cerr << info; | |
| exit(1); | |
| } | |
| } | |
| if (stdioFlag) { | |
| queryFlag = true; | |
| } | |
| // 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 (stdioFlag) { | |
| cout << "-|||- BICONCOR START -|||-" << endl << flush; | |
| while(true) { | |
| string query; | |
| if (getline(cin, query, '\n').eof()) { | |
| return 0; | |
| } | |
| vector< string > queryString = alignment.Tokenize( query.c_str() ); | |
| PhrasePairCollection ppCollection( &suffixArray, &targetCorpus, &alignment, max_translation, max_example ); | |
| int total = ppCollection.GetCollection( queryString ); | |
| cout << "TOTAL: " << total << endl; | |
| if (htmlFlag) { | |
| ppCollection.PrintHTML(); | |
| } else { | |
| ppCollection.Print(prettyFlag); | |
| } | |
| cout << "-|||- BICONCOR END -|||-" << endl << flush; | |
| } | |
| } else if (queryFlag) { | |
| cerr << "query is " << query << endl; | |
| vector< string > queryString = alignment.Tokenize( query.c_str() ); | |
| PhrasePairCollection ppCollection( &suffixArray, &targetCorpus, &alignment, max_translation, max_example ); | |
| ppCollection.GetCollection( queryString ); | |
| if (htmlFlag) { | |
| ppCollection.PrintHTML(); | |
| } else { | |
| ppCollection.Print(prettyFlag); | |
| } | |
| } | |
| return 0; | |
| } | |