00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "tools.h"
00022
00023 using namespace std;
00024 using namespace boost::xpressive;
00025 namespace TERCPPNS_Tools
00026 {
00027
00028 string vectorToString ( vector<string> vec )
00029 {
00030 string retour ( "" );
00031 for ( vector<string>::iterator vecIter = vec.begin(); vecIter != vec.end(); vecIter++ ) {
00032 if ( vecIter == vec.begin() ) {
00033 retour += ( *vecIter );
00034 } else {
00035 retour += "\t" + ( *vecIter );
00036 }
00037 }
00038 return retour;
00039 }
00040 string vectorToString ( vector<char> vec )
00041 {
00042 stringstream retour;
00043 retour.str("");
00044 for ( vector<char>::iterator vecIter = vec.begin(); vecIter != vec.end(); vecIter++ ) {
00045 if ( vecIter == vec.begin() ) {
00046 retour << ( *vecIter );
00047 } else {
00048 retour << "\t" << ( *vecIter );
00049 }
00050 }
00051 return retour.str();
00052 }
00053 string vectorToString ( vector<int> vec )
00054 {
00055 stringstream retour;
00056 retour.str("");
00057 for ( vector<int>::iterator vecIter = vec.begin(); vecIter != vec.end(); vecIter++ ) {
00058 if ( vecIter == vec.begin() ) {
00059 retour << ( *vecIter );
00060 } else {
00061 retour << "\t" << ( *vecIter );
00062 }
00063 }
00064 return retour.str();
00065 }
00066 string vectorToString ( vector<int> * vec )
00067 {
00068 stringstream retour;
00069 retour.str("");
00070 for ( vector<int>::iterator vecIter = vec->begin(); vecIter != vec->end(); vecIter++ ) {
00071 if ( vecIter == vec->begin() ) {
00072 retour << ( *vecIter );
00073 } else {
00074 retour << "\t" << ( *vecIter );
00075 }
00076 }
00077 return retour.str();
00078 }
00079
00080 string vectorToString ( vector< string > vec, string s )
00081 {
00082 string retour ( "" );
00083 for ( vector<string>::iterator vecIter = vec.begin(); vecIter != vec.end(); vecIter++ ) {
00084 if ( vecIter == vec.begin() ) {
00085 retour += ( *vecIter );
00086 } else {
00087 retour += s + ( *vecIter );
00088 }
00089 }
00090 return retour;
00091
00092 }
00093
00094 string vectorToString ( vector< char > vec, string s )
00095 {
00096 stringstream retour;
00097 retour.str("");
00098 for ( vector<char>::iterator vecIter = vec.begin(); vecIter != vec.end(); vecIter++ ) {
00099 if ( vecIter == vec.begin() ) {
00100 retour << ( *vecIter );
00101 } else {
00102 retour << s << ( *vecIter );
00103 }
00104 }
00105 return retour.str();
00106
00107 }
00108
00109 string vectorToString ( vector< int > vec, string s )
00110 {
00111 stringstream retour;
00112 retour.str("");
00113 for ( vector<int>::iterator vecIter = vec.begin(); vecIter != vec.end(); vecIter++ ) {
00114 if ( vecIter == vec.begin() ) {
00115 retour << ( *vecIter );
00116 } else {
00117 retour << s << ( *vecIter );
00118 }
00119 }
00120 return retour.str();
00121
00122 }
00123
00124 string vectorToString ( vector< bool > vec, string s )
00125 {
00126 stringstream retour;
00127 retour.str("");
00128 for ( vector<bool>::iterator vecIter = vec.begin(); vecIter != vec.end(); vecIter++ ) {
00129 if ( vecIter == vec.begin() ) {
00130 retour << ( *vecIter );
00131 } else {
00132 retour << s << ( *vecIter );
00133 }
00134 }
00135 return retour.str();
00136
00137 }
00138 string vectorToString ( char* vec, string s , int taille)
00139 {
00140 stringstream retour;
00141 retour.str("");
00142 int l_i;
00143 for ( l_i=0; l_i < taille ; l_i++) {
00144 if ( l_i == 0 ) {
00145 retour << vec[l_i];
00146 } else {
00147 retour << s << vec[l_i];
00148 }
00149 }
00150 return retour.str();
00151
00152 }
00153
00154 string vectorToString ( int* vec, string s , int taille)
00155 {
00156 stringstream retour;
00157 retour.str("");
00158 int l_i;
00159 for ( l_i=0; l_i < taille ; l_i++) {
00160 if ( l_i == 0 ) {
00161 retour << vec[l_i];
00162 } else {
00163 retour << s << vec[l_i];
00164 }
00165 }
00166 return retour.str();
00167
00168 }
00169
00170 string vectorToString ( bool* vec, string s , int taille)
00171 {
00172 stringstream retour;
00173 retour.str("");
00174 int l_i;
00175 for ( l_i=0; l_i < taille ; l_i++) {
00176 if ( l_i == 0 ) {
00177 retour << vec[l_i];
00178 } else {
00179 retour << s << vec[l_i];
00180 }
00181 }
00182 return retour.str();
00183
00184 }
00185
00186 string vectorToString ( vector<bool>* vec, string s , int taille)
00187 {
00188 stringstream retour;
00189 retour.str("");
00190 int l_i;
00191 for ( l_i=0; l_i < taille ; l_i++) {
00192 if ( l_i == 0 ) {
00193 retour << vec->at(l_i);
00194 } else {
00195 retour << s << vec->at(l_i);
00196 }
00197 }
00198 return retour.str();
00199
00200 }
00201
00202 string vectorToString ( vector<int>* vec, string s , int taille)
00203 {
00204 stringstream retour;
00205 retour.str("");
00206 int l_i;
00207 for ( l_i=0; l_i < taille ; l_i++) {
00208 if ( l_i == 0 ) {
00209 retour << vec->at(l_i);
00210 } else {
00211 retour << s << vec->at(l_i);
00212 }
00213 }
00214 return retour.str();
00215
00216 }
00217
00218
00219
00220 vector<string> subVector ( vector<string> vec, int start, int end )
00221 {
00222 vector<string> retour;
00223 if ( start > end ) {
00224 cerr << "ERREUR : TERcalc::subVector : end > start" << endl;
00225 exit ( 0 );
00226 }
00227 for ( int i = start; ( ( i < end ) && ( i < ( int ) vec.size() ) ); i++ ) {
00228 retour.push_back ( vec.at ( i ) );
00229 }
00230 return retour;
00231 }
00232
00233 vector<int> subVector ( vector<int> vec, int start, int end )
00234 {
00235 vector<int> retour;
00236 if ( start > end ) {
00237 cerr << "ERREUR : TERcalc::subVector : end > start" << endl;
00238 exit ( 0 );
00239 }
00240 for ( int i = start; ( ( i < end ) && ( i < ( int ) vec.size() ) ); i++ ) {
00241 retour.push_back ( vec.at ( i ) );
00242 }
00243 return retour;
00244 }
00245
00246 vector<float> subVector ( vector<float> vec, int start, int end )
00247 {
00248 vector<float> retour;
00249 if ( start > end ) {
00250 cerr << "ERREUR : TERcalc::subVector : end > start" << endl;
00251 exit ( 0 );
00252 }
00253 for ( int i = start; ( ( i < end ) && ( i < ( int ) vec.size() ) ); i++ ) {
00254 retour.push_back ( vec.at ( i ) );
00255 }
00256 return retour;
00257 }
00258
00259 vector<string> copyVector ( vector<string> vec )
00260 {
00261 vector<string> retour;
00262 for ( int i = 0; i < ( int ) vec.size(); i++ ) {
00263 retour.push_back ( vec.at ( i ) );
00264 }
00265 return retour;
00266 }
00267 vector<int> copyVector ( vector<int> vec )
00268 {
00269 vector<int> retour;
00270 for ( int i = 0; i < ( int ) vec.size(); i++ ) {
00271 retour.push_back ( vec.at ( i ) );
00272 }
00273 return retour;
00274 }
00275 vector<float> copyVector ( vector<float> vec )
00276 {
00277 vector<float> retour;
00278 for ( int i = 0; i < ( int ) vec.size(); i++ ) {
00279 retour.push_back ( vec.at ( i ) );
00280 }
00281 return retour;
00282 }
00283 vector<string> stringToVector ( string s, string tok )
00284 {
00285 vector<string> to_return;
00286 string to_push ( "" );
00287 bool pushed = false;
00288 string::iterator sIt;
00289 for ( sIt = s.begin(); sIt < s.end(); sIt++ ) {
00290 pushed = false;
00291 for ( string::iterator sTok = tok.begin(); sTok < tok.end(); sTok++ ) {
00292 if ( ( *sIt ) == ( *sTok ) ) {
00293 to_return.push_back ( to_push );
00294 to_push = "";
00295 pushed = true;
00296 }
00297 }
00298 if ( !pushed ) {
00299 to_push.push_back ( ( *sIt ) );
00300 }
00301 }
00302 to_return.push_back ( to_push );
00303 return to_return;
00304 }
00305 vector<int> stringToVectorInt ( string s, string tok )
00306 {
00307 vector<int> to_return;
00308 string to_push ( "" );
00309 bool pushed = false;
00310 string::iterator sIt;
00311 for ( sIt = s.begin(); sIt < s.end(); sIt++ ) {
00312 pushed = false;
00313 for ( string::iterator sTok = tok.begin(); sTok < tok.end(); sTok++ ) {
00314 if ( ( *sIt ) == ( *sTok ) ) {
00315 if ( ( int ) to_push.length() > 0 ) {
00316 to_return.push_back ( atoi ( to_push.c_str() ) );
00317 }
00318 to_push = "";
00319 pushed = true;
00320 }
00321 }
00322 if ( !pushed ) {
00323 to_push.push_back ( ( *sIt ) );
00324 }
00325 }
00326 if ( ( int ) to_push.length() > 0 ) {
00327 to_return.push_back ( atoi ( to_push.c_str() ) );
00328 }
00329 return to_return;
00330 }
00331 vector<float> stringToVectorFloat ( string s, string tok )
00332 {
00333 vector<float> to_return;
00334 string to_push ( "" );
00335 bool pushed = false;
00336 string::iterator sIt;
00337 for ( sIt = s.begin(); sIt < s.end(); sIt++ ) {
00338 pushed = false;
00339 for ( string::iterator sTok = tok.begin(); sTok < tok.end(); sTok++ ) {
00340 if ( ( *sIt ) == ( *sTok ) ) {
00341 if ( ( int ) to_push.length() > 0 ) {
00342 to_return.push_back ( atof ( to_push.c_str() ) );
00343 }
00344 to_push = "";
00345 pushed = true;
00346 }
00347 }
00348 if ( !pushed ) {
00349 to_push.push_back ( ( *sIt ) );
00350 }
00351 }
00352 if ( ( int ) to_push.length() > 0 ) {
00353 to_return.push_back ( atoi ( to_push.c_str() ) );
00354 }
00355 return to_return;
00356 }
00357
00358 string lowerCase ( string str )
00359 {
00360 for ( int i = 0; i < ( int ) str.size(); i++ ) {
00361 if ( ( str[i] >= 0x41 ) && ( str[i] <= 0x5A ) ) {
00362 str[i] = str[i] + 0x20;
00363 }
00364 }
00365 return str;
00366 }
00367 string removePunctTercom ( string str )
00368 {
00369 string str_mod = str;
00370 sregex rex;
00371 string replace;
00372
00373
00374 rex = sregex::compile ( "^[ ]+" );
00375 replace = "";
00376 str_mod = regex_replace ( str_mod, rex, replace );
00377
00378 rex = sregex::compile ( "[\"]" );
00379 replace = ( " " );
00380 str_mod = regex_replace ( str_mod, rex, replace );
00381
00382 rex = sregex::compile ( "[,]" );
00383 replace = " ";
00384 str_mod = regex_replace ( str_mod, rex, replace );
00385
00386 rex = sregex::compile ( "([^0-9])([\\.])([^0-9])" );
00387 replace = ( "$1 $3" );
00388 str_mod = regex_replace ( str_mod, rex, replace );
00389
00390 rex = sregex::compile ( "([^0-9])([\\.])([^0-9])" );
00391 replace = ( "$1 $3" );
00392 str_mod = regex_replace ( str_mod, rex, replace );
00393
00394 rex = sregex::compile ( "([^0-9])([\\.])([^0-9])" );
00395 replace = ( "$1 $3" );
00396 str_mod = regex_replace ( str_mod, rex, replace );
00397
00398 rex = sregex::compile ( "([\\.]$)" );
00399 replace = ( " " );
00400 str_mod = regex_replace ( str_mod, rex, replace );
00401
00402 rex = sregex::compile ( "[\\?]" );
00403 replace = ( " " );
00404 str_mod = regex_replace ( str_mod, rex, replace );
00405
00406 rex = sregex::compile ( "[\\;]" );
00407 replace = ( " " );
00408 str_mod = regex_replace ( str_mod, rex, replace );
00409
00410 rex = sregex::compile ( "[\\:]" );
00411 replace = ( " " );
00412 str_mod = regex_replace ( str_mod, rex, replace );
00413
00414 rex = sregex::compile ( "[\\!]" );
00415 replace = ( " " );
00416 str_mod = regex_replace ( str_mod, rex, replace );
00417
00418 rex = sregex::compile ( "[\\(]" );
00419 replace = ( " " );
00420 str_mod = regex_replace ( str_mod, rex, replace );
00421
00422 rex = sregex::compile ( "[\\)]" );
00423 replace = ( " " );
00424 str_mod = regex_replace ( str_mod, rex, replace );
00425
00426 rex = sregex::compile ( "[ ]+" );
00427 replace = " ";
00428 str_mod = regex_replace ( str_mod, rex, replace );
00429
00430 rex = sregex::compile ( "[ ]+$" );
00431 replace = "";
00432 str_mod = regex_replace ( str_mod, rex, replace );
00433
00434 return str_mod;
00435 }
00436 string removePunct ( string str )
00437 {
00438 string str_mod = str;
00439 sregex rex;
00440 string replace;
00441
00442
00443 rex = sregex::compile ( "^[ ]+" );
00444 replace = "";
00445 str_mod = regex_replace ( str_mod, rex, replace );
00446
00447 rex = sregex::compile ( "[\"]" );
00448 replace = ( " " );
00449 str_mod = regex_replace ( str_mod, rex, replace );
00450
00451 rex = sregex::compile ( "[,]" );
00452 replace = " ";
00453 str_mod = regex_replace ( str_mod, rex, replace );
00454
00455 rex = sregex::compile ( "([^0-9])([\\.])([^0-9])" );
00456 replace = ( "$1 $3" );
00457 str_mod = regex_replace ( str_mod, rex, replace );
00458
00459 rex = sregex::compile ( "([^0-9])([\\.])([^0-9])" );
00460 replace = ( "$1 $3" );
00461 str_mod = regex_replace ( str_mod, rex, replace );
00462
00463 rex = sregex::compile ( "([^0-9])([\\.])([^0-9])" );
00464 replace = ( "$1 $3" );
00465 str_mod = regex_replace ( str_mod, rex, replace );
00466
00467 rex = sregex::compile ( "([\\.]$)" );
00468 replace = ( " " );
00469 str_mod = regex_replace ( str_mod, rex, replace );
00470
00471 rex = sregex::compile ( "[\\?]" );
00472 replace = ( " " );
00473 str_mod = regex_replace ( str_mod, rex, replace );
00474
00475 rex = sregex::compile ( "[\\;]" );
00476 replace = ( " " );
00477 str_mod = regex_replace ( str_mod, rex, replace );
00478
00479 rex = sregex::compile ( "[\\:]" );
00480 replace = ( " " );
00481 str_mod = regex_replace ( str_mod, rex, replace );
00482
00483 rex = sregex::compile ( "[\\!]" );
00484 replace = ( " " );
00485 str_mod = regex_replace ( str_mod, rex, replace );
00486
00487 rex = sregex::compile ( "[\\(]" );
00488 replace = ( " " );
00489 str_mod = regex_replace ( str_mod, rex, replace );
00490
00491 rex = sregex::compile ( "[\\)]" );
00492 replace = ( " " );
00493 str_mod = regex_replace ( str_mod, rex, replace );
00494
00495 rex = sregex::compile ( "[ ]+" );
00496 replace = " ";
00497 str_mod = regex_replace ( str_mod, rex, replace );
00498
00499 rex = sregex::compile ( "[ ]+$" );
00500 replace = "";
00501 str_mod = regex_replace ( str_mod, rex, replace );
00502
00503 rex = sregex::compile ( "^[ ]+" );
00504 replace = "";
00505 str_mod = regex_replace ( str_mod, rex, replace );
00506
00507 return str_mod;
00508 }
00509 string tokenizePunct ( string str )
00510 {
00511 string str_mod = str;
00512 sregex rex = sregex::compile ( "(([^0-9])([\\,])([^0-9]))" );
00513 string replace ( "$2 $3 $4" );
00514 str_mod = regex_replace ( str_mod, rex, replace );
00515
00516 rex = sregex::compile ( "(([^0-9])([\\.])([^0-9]))" );
00517 replace = ( "$2 $3 $4" );
00518 str_mod = regex_replace ( str_mod, rex, replace );
00519
00520 rex = sregex::compile ( "( ([A-Z]|[a-z]) ([\\.]) )" );
00521 replace = ( " $2. " );
00522 str_mod = regex_replace ( str_mod, rex, replace );
00523
00524 rex = sregex::compile ( "( ([A-Z]|[a-z]) ([\\.])$)" );
00525 replace = ( " $2. " );
00526 str_mod = regex_replace ( str_mod, rex, replace );
00527
00528 rex = sregex::compile ( "(^([A-Z]|[a-z]) ([\\.]) )" );
00529 replace = ( " $2. " );
00530 str_mod = regex_replace ( str_mod, rex, replace );
00531
00532 rex = sregex::compile ( "(([A-Z]|[a-z])([\\.]) ([A-Z]|[a-z])([\\.]) )" );
00533 replace = ( "$2.$4. " );
00534 str_mod = regex_replace ( str_mod, rex, replace );
00535
00536 rex = sregex::compile ( "[\\?]" );
00537 replace = ( " ? " );
00538 str_mod = regex_replace ( str_mod, rex, replace );
00539
00540 rex = sregex::compile ( "[\\;]" );
00541 replace = ( " ; " );
00542 str_mod = regex_replace ( str_mod, rex, replace );
00543
00544 rex = sregex::compile ( "(([^0-9])([\\:])([^0-9]))" );
00545 replace = ( "$2 $3 $4" );
00546 str_mod = regex_replace ( str_mod, rex, replace );
00547
00548 rex = sregex::compile ( "[\\!]" );
00549 replace = ( " ! " );
00550 str_mod = regex_replace ( str_mod, rex, replace );
00551
00552 rex = sregex::compile ( "[\\(]" );
00553 replace = ( " ( " );
00554 str_mod = regex_replace ( str_mod, rex, replace );
00555
00556 rex = sregex::compile ( "[\\)]" );
00557 replace = ( " ) " );
00558 str_mod = regex_replace ( str_mod, rex, replace );
00559
00560 rex = sregex::compile ( "[\"]" );
00561 replace = ( " \" " );
00562 str_mod = regex_replace ( str_mod, rex, replace );
00563
00564 rex = sregex::compile ( "(num_ \\( ([^\\)]+) \\))" );
00565 replace = ( "num_($2)" );
00566 str_mod = regex_replace ( str_mod, rex, replace );
00567
00568 rex = sregex::compile ( "(ordinal_ \\( ([^\\)]*) \\))" );
00569 replace = ( "ordinal_($2)" );
00570 str_mod = regex_replace ( str_mod, rex, replace );
00571
00572 rex = sregex::compile ( "(^([Mm]) \\.)" );
00573 replace = ( "$2." );
00574 str_mod = regex_replace ( str_mod, rex, replace );
00575
00576 rex = sregex::compile ( "( ([Mm]) \\.)" );
00577 replace = ( " $2." );
00578 str_mod = regex_replace ( str_mod, rex, replace );
00579
00580 rex = sregex::compile ( "(^([Dd]r) \\.)" );
00581 replace = ( "$2." );
00582 str_mod = regex_replace ( str_mod, rex, replace );
00583
00584 rex = sregex::compile ( "( ([Dd]r) \\.)" );
00585 replace = ( " $2." );
00586 str_mod = regex_replace ( str_mod, rex, replace );
00587
00588 rex = sregex::compile ( "(^([Mm]r) \\.)" );
00589 replace = ( "$2." );
00590 str_mod = regex_replace ( str_mod, rex, replace );
00591
00592 rex = sregex::compile ( "( ([Mm]r) \\.)" );
00593 replace = ( " $2." );
00594 str_mod = regex_replace ( str_mod, rex, replace );
00595
00596 rex = sregex::compile ( "(^([Mm]rs) \\.)" );
00597 replace = ( "$2." );
00598 str_mod = regex_replace ( str_mod, rex, replace );
00599
00600 rex = sregex::compile ( "( ([Mm]rs) \\.)" );
00601 replace = ( " $2." );
00602 str_mod = regex_replace ( str_mod, rex, replace );
00603
00604 rex = sregex::compile ( "(^([Nn]o) \\.)" );
00605 replace = ( "$2." );
00606 str_mod = regex_replace ( str_mod, rex, replace );
00607
00608 rex = sregex::compile ( "( ([Nn]o) \\.)" );
00609 replace = ( " $2." );
00610 str_mod = regex_replace ( str_mod, rex, replace );
00611
00612
00613
00614
00615
00616
00617
00618
00619
00620
00621
00622
00623
00624
00625
00626
00627
00628 rex = sregex::compile ( "(^(([A-Z][a-z])) \\. )" );
00629 replace = ( "$2. " );
00630 str_mod = regex_replace ( str_mod, rex, replace );
00631
00632 rex = sregex::compile ( "( (([A-Z][a-z])) \\. )" );
00633 replace = ( " $2. " );
00634 str_mod = regex_replace ( str_mod, rex, replace );
00635
00636 rex = sregex::compile ( "(^(([A-Z][a-z][a-z])) \\. )" );
00637 replace = ( "$2. " );
00638 str_mod = regex_replace ( str_mod, rex, replace );
00639
00640 rex = sregex::compile ( "( (([A-Z][a-z][a-z])) \\. )" );
00641 replace = ( " $2. " );
00642 str_mod = regex_replace ( str_mod, rex, replace );
00643
00644 rex = sregex::compile ( "[ ]+" );
00645 replace = " ";
00646 str_mod = regex_replace ( str_mod, rex, replace );
00647
00648 rex = sregex::compile ( "^[ ]+" );
00649 replace = "";
00650 str_mod = regex_replace ( str_mod, rex, replace );
00651
00652 rex = sregex::compile ( "[ ]+$" );
00653 replace = "";
00654 str_mod = regex_replace ( str_mod, rex, replace );
00655
00656 return str_mod;
00657 }
00658
00659 string normalizeStd ( string str )
00660 {
00661 string str_mod = str;
00662 sregex rex = sregex::compile ( "(<skipped>)" );
00663 string replace ( "" );
00664 str_mod = regex_replace ( str_mod, rex, replace );
00665
00666 rex = sregex::compile ( "-\n" );
00667 replace = ( "" );
00668 str_mod = regex_replace ( str_mod, rex, replace );
00669
00670 rex = sregex::compile ( "\n" );
00671 replace = ( " " );
00672 str_mod = regex_replace ( str_mod, rex, replace );
00673
00674 rex = sregex::compile ( """ );
00675 replace = ( "\"" );
00676 str_mod = regex_replace ( str_mod, rex, replace );
00677
00678 rex = sregex::compile ( "&" );
00679 replace = ( "& " );
00680 str_mod = regex_replace ( str_mod, rex, replace );
00681
00682 rex = sregex::compile ( "<" );
00683 replace = ( "<" );
00684 str_mod = regex_replace ( str_mod, rex, replace );
00685
00686 rex = sregex::compile ( ">" );
00687 replace = ( ">" );
00688 str_mod = regex_replace ( str_mod, rex, replace );
00689
00690 return str_mod;
00691 }
00692
00693 param copyParam ( param p )
00694 {
00695 param to_return;
00696 to_return.caseOn = p.caseOn;
00697 to_return.noPunct = p.noPunct;
00698 to_return.debugMode = p.debugMode;
00699 to_return.debugLevel = p.debugLevel;
00700 to_return.hypothesisFile = p.hypothesisFile;
00701 to_return.referenceFile = p.referenceFile;
00702 to_return.normalize = p.normalize;
00703 to_return.noTxtIds = p.noTxtIds;
00704 to_return.verbose = p.verbose;
00705 to_return.count_verbose = p.count_verbose;
00706 to_return.outputFileExtension = p.outputFileExtension;
00707 to_return.outputFileName = p.outputFileName;
00708 to_return.sgmlInputs = p.sgmlInputs;
00709 to_return.tercomLike = p.tercomLike;
00710 to_return.printAlignments = p.printAlignments;
00711 to_return.WER=p.WER;
00712 return to_return;
00713 }
00714 string printParams ( param p )
00715 {
00716 stringstream s;
00717 s << "caseOn = " << p.caseOn << endl;
00718 s << "noPunct = " << p.noPunct << endl;
00719 s << "debugMode = " << p.debugMode << endl;
00720 s << "debugLevel = " << p.debugLevel << endl;
00721 s << "hypothesisFile = " << p.hypothesisFile << endl;
00722 s << "referenceFile = " << p.referenceFile << endl;
00723 s << "normalize = " << p.normalize << endl;
00724 s << "noTxtIds = " << p.noTxtIds << endl;
00725 s << "outputFileExtension = " << p.outputFileExtension << endl;
00726 s << "outputFileName = " << p.outputFileName << endl;
00727 s << "sgmlInputs = " << p.sgmlInputs << endl;
00728 s << "tercomLike = " << p.tercomLike << endl;
00729 s << "verbose = " << p.verbose << endl;
00730 s << "count_verbose = " << p.count_verbose << endl;
00731 return s.str();
00732
00733 }
00734 string join ( string delim, vector<string> arr )
00735 {
00736 if ( ( int ) arr.size() == 0 ) return "";
00737
00738
00739 stringstream s;
00740 s.str ( "" );
00741 for ( int i = 0; i < ( int ) arr.size(); i++ ) {
00742 if ( i == 0 ) {
00743 s << arr.at ( i );
00744 } else {
00745 s << delim << arr.at ( i );
00746 }
00747 }
00748 return s.str();
00749
00750 }
00751
00752 }