NERsuite
1.1.1
|
00001 #ifndef _FEXTOR_TEST_H 00002 #define _FEXTOR_TEST_H 00003 00004 #include <string> 00005 #include <sstream> 00006 #include <stdio.h> 00007 #include "TestUtil.h" 00008 #include "../nersuite/FExtor.h" 00009 #include "fext_helper.h" 00010 00011 using namespace std; 00012 using namespace NER; 00013 00014 void TestFExtorWordFeature() 00015 { 00016 COLUMN_INFO cinfo; 00017 SetupColumnInfoHelper(cinfo); 00018 00019 FeatureExtractor fex(cinfo); 00020 V2_STR sent; 00021 sent.push_back(CreateWordHelper("0", "2", "ABC", "ABC", "N", "O", "O")); 00022 sent.push_back(CreateWordHelper("3", "5", "DEF", "DEF", "N", "O", "O")); 00023 00024 V2_STR feats; 00025 vector<string> feat; 00026 for (int i = 0; i < sent.size(); i++) 00027 { 00028 feats.push_back(feat); 00029 } 00030 // Test target function 00031 fex.ext_WORD_feats(sent, feats); 00032 00033 // Test result 00034 vector<string> feats_str; 00035 FeatureToStringHelper(feats, feats_str); 00036 if (feats_str.size() != 2) 00037 { 00038 throw new TestException("assert failed", __FILE__, __LINE__); 00039 } 00040 if (feats_str[0] != 00041 "2gram=$A,2gram=AB,2gram=BC,2gram=C$," 00042 "3gram=$$A,3gram=$AB,3gram=ABC,3gram=BC$,3gram=C$$," 00043 "4gram=$$$A,4gram=$$AB,4gram=$ABC,4gram=ABC$,4gram=BC$$,4gram=C$$$," 00044 "W_U_C=ABC,W_NU_C=ABC," 00045 "W_U_R1=DEF,W_NU_R1=DEF," 00046 "W_B_L1C=NULL/ABC,W_NB_L1C=NULL/ABC," 00047 "W_B_CR1=ABC/DEF,W_NB_CR1=ABC/DEF," 00048 "W_B_R1R2=DEF/NULL,W_NB_R1R2=DEF/NULL,") 00049 { 00050 throw new TestException("assert failed", __FILE__, __LINE__); 00051 } 00052 if (feats_str[1] != 00053 "2gram=$D,2gram=DE,2gram=EF,2gram=F$," 00054 "3gram=$$D,3gram=$DE,3gram=DEF,3gram=EF$,3gram=F$$," 00055 "4gram=$$$D,4gram=$$DE,4gram=$DEF,4gram=DEF$,4gram=EF$$,4gram=F$$$," 00056 "W_U_L1=ABC,W_NU_L1=ABC," 00057 "W_U_C=DEF,W_NU_C=DEF," 00058 "W_B_L2L1=NULL/ABC,W_NB_L2L1=NULL/ABC," 00059 "W_B_L1C=ABC/DEF,W_NB_L1C=ABC/DEF," 00060 "W_B_CR1=DEF/NULL,W_NB_CR1=DEF/NULL,") 00061 { 00062 throw new TestException("assert failed", __FILE__, __LINE__); 00063 } 00064 } 00065 00066 void TestFExtorLemmaFeature() 00067 { 00068 COLUMN_INFO cinfo; 00069 SetupColumnInfoHelper(cinfo); 00070 00071 FeatureExtractor fex(cinfo); 00072 V2_STR sent; 00073 sent.push_back(CreateWordHelper("0", "2", "ABC", "ABC", "N", "O", "O")); 00074 sent.push_back(CreateWordHelper("3", "5", "DEF", "DEF", "N", "O", "O")); 00075 00076 V2_STR feats; 00077 vector<string> feat; 00078 for (int i = 0; i < sent.size(); i++) 00079 { 00080 feats.push_back(feat); 00081 } 00082 // Test target function 00083 fex.ext_LEMMA_feats(sent, feats); 00084 00085 // Test result 00086 vector<string> feats_str; 00087 FeatureToStringHelper(feats, feats_str); 00088 if (feats_str.size() != 2) 00089 { 00090 throw new TestException("assert failed", __FILE__, __LINE__); 00091 } 00092 if (feats_str[0] != 00093 "L_U_C=ABC,L_NU_C=ABC," 00094 "L_U_R1=DEF,L_NU_R1=DEF," 00095 "L_B_L1C=NULL/ABC,L_NB_L1C=NULL/ABC," 00096 "L_B_CR1=ABC/DEF,L_NB_CR1=ABC/DEF," 00097 "L_B_R1R2=DEF/NULL,L_NB_R1R2=DEF/NULL,") 00098 { 00099 throw new TestException("assert failed", __FILE__, __LINE__); 00100 } 00101 if (feats_str[1] != 00102 "L_U_L1=ABC,L_NU_L1=ABC," 00103 "L_U_C=DEF,L_NU_C=DEF," 00104 "L_B_L2L1=NULL/ABC,L_NB_L2L1=NULL/ABC," 00105 "L_B_L1C=ABC/DEF,L_NB_L1C=ABC/DEF," 00106 "L_B_CR1=DEF/NULL,L_NB_CR1=DEF/NULL,") 00107 { 00108 throw new TestException("assert failed", __FILE__, __LINE__); 00109 } 00110 } 00111 00112 void TestFExtorOrthoFeature() 00113 { 00114 COLUMN_INFO cinfo; 00115 SetupColumnInfoHelper(cinfo); 00116 00117 FeatureExtractor fex(cinfo); 00118 V2_STR sent; 00119 sent.push_back(CreateWordHelper("0", "2", "ABC", "ABC", "N", "O", "O")); 00120 sent.push_back(CreateWordHelper("3", "5", "123", "DEF", "N", "O", "O")); 00121 sent.push_back(CreateWordHelper("6", "8", "Abc", "Abc", "N", "O", "O")); 00122 sent.push_back(CreateWordHelper("9", "14", "abc012", "abc012", "N", "O", "O")); 00123 00124 V2_STR feats; 00125 vector<string> feat; 00126 for (int i = 0; i < sent.size(); i++) 00127 { 00128 feats.push_back(feat); 00129 } 00130 // Test target function 00131 fex.ext_ORTHO_feats(sent, feats); 00132 00133 // Test result 00134 vector<string> feats_str; 00135 FeatureToStringHelper(feats, feats_str); 00136 if (feats_str.size() != 4) 00137 { 00138 throw new TestException("assert failed", __FILE__, __LINE__); 00139 } 00140 if (feats_str[0] != 00141 "O_BEG_CAP=B," 00142 "O_ONLY_CAPnDIGITS," 00143 "O_NO_LOWER_LETTERS," 00144 "O_ONLY_CAPS," 00145 "O_IN_CAP," 00146 "O_2_IN_CAPS," 00147 "O_LEN=3," 00148 "O_LEN_n_NO_LOW_LETTERS=3/O,") 00149 { 00150 throw new TestException("assert failed", __FILE__, __LINE__); 00151 } 00152 if (feats_str[1] != 00153 "O_BEG_CAP=X," 00154 "O_ONLY_DIGITS," 00155 "O_SOME_DIGITS," 00156 "O_ONLY_CAPnDIGITS," 00157 "O_NO_LOWER_LETTERS," 00158 "O_LEN=3," 00159 "O_LEN_n_NO_LOW_LETTERS=3/O,") 00160 { 00161 throw new TestException("assert failed", __FILE__, __LINE__); 00162 } 00163 if (feats_str[2] != 00164 "O_BEG_CAP=O,O_LEN=3,O_LEN_n_NO_LOW_LETTERS=3/X,") 00165 { 00166 throw new TestException("assert failed", __FILE__, __LINE__); 00167 } 00168 if (feats_str[3] != 00169 "O_BEG_CAP=X,O_SOME_DIGITS,O_ONLY_ALPHANUMERIC,O_LEN=6,O_LEN_n_NO_LOW_LETTERS=6/X,") 00170 { 00171 throw new TestException("assert failed", __FILE__, __LINE__); 00172 } 00173 } 00174 00175 void TestFExtorOrthoFeature_Greek() 00176 { 00177 COLUMN_INFO cinfo; 00178 SetupColumnInfoHelper(cinfo); 00179 00180 FeatureExtractor fex(cinfo); 00181 V2_STR sent; 00182 sent.push_back(CreateWordHelper("0", "5", "alpha", "alpha", "N", "O", "O")); 00183 00184 V2_STR feats; 00185 vector<string> feat; 00186 for (int i = 0; i < sent.size(); i++) 00187 { 00188 feats.push_back(feat); 00189 } 00190 // Test target function 00191 fex.ext_ORTHO_feats(sent, feats); 00192 00193 // Test result 00194 vector<string> feats_str; 00195 FeatureToStringHelper(feats, feats_str); 00196 if (feats_str.size() != 1) 00197 { 00198 throw new TestException("assert failed", __FILE__, __LINE__); 00199 } 00200 if (feats_str[0] != 00201 "O_BEG_CAP=B,O_GREEK_A2Z=alpha/,O_LEN=5,O_LEN_n_NO_LOW_LETTERS=5/X,") 00202 { 00203 throw new TestException("assert failed", __FILE__, __LINE__); 00204 } 00205 } 00206 00207 void TestFExtorOrthoFeature_Comma() 00208 { 00209 COLUMN_INFO cinfo; 00210 SetupColumnInfoHelper(cinfo); 00211 00212 FeatureExtractor fex(cinfo); 00213 V2_STR sent; 00214 sent.push_back(CreateWordHelper("0", "3", "a,b", "a,b", "N", "O", "O")); 00215 00216 V2_STR feats; 00217 vector<string> feat; 00218 for (int i = 0; i < sent.size(); i++) 00219 { 00220 feats.push_back(feat); 00221 } 00222 // Test target function 00223 fex.ext_ORTHO_feats(sent, feats); 00224 00225 // Test result 00226 vector<string> feats_str; 00227 FeatureToStringHelper(feats, feats_str); 00228 if (feats_str.size() != 1) 00229 { 00230 throw new TestException("assert failed", __FILE__, __LINE__); 00231 } 00232 if (feats_str[0] != 00233 "O_BEG_CAP=B,O_COMMAS,O_LEN=3,O_LEN_n_NO_LOW_LETTERS=3/X,") 00234 { 00235 throw new TestException("assert failed", __FILE__, __LINE__); 00236 } 00237 } 00238 00239 void TestFExtorOrthoFeature_Period() 00240 { 00241 COLUMN_INFO cinfo; 00242 SetupColumnInfoHelper(cinfo); 00243 00244 FeatureExtractor fex(cinfo); 00245 V2_STR sent; 00246 sent.push_back(CreateWordHelper("0", "3", "a.b", "a,b", "N", "O", "O")); 00247 00248 V2_STR feats; 00249 vector<string> feat; 00250 for (int i = 0; i < sent.size(); i++) 00251 { 00252 feats.push_back(feat); 00253 } 00254 // Test target function 00255 fex.ext_ORTHO_feats(sent, feats); 00256 00257 // Test result 00258 vector<string> feats_str; 00259 FeatureToStringHelper(feats, feats_str); 00260 if (feats_str.size() != 1) 00261 { 00262 throw new TestException("assert failed", __FILE__, __LINE__); 00263 } 00264 if (feats_str[0] != 00265 "O_BEG_CAP=B,O_PERIODS,O_LEN=3,O_LEN_n_NO_LOW_LETTERS=3/X,") 00266 { 00267 throw new TestException("assert failed", __FILE__, __LINE__); 00268 } 00269 } 00270 00271 void TestFExtorOrthoFeature_Hyphon() 00272 { 00273 COLUMN_INFO cinfo; 00274 SetupColumnInfoHelper(cinfo); 00275 00276 FeatureExtractor fex(cinfo); 00277 V2_STR sent; 00278 sent.push_back(CreateWordHelper("0", "3", "a-b", "a,b", "N", "O", "O")); 00279 00280 V2_STR feats; 00281 vector<string> feat; 00282 for (int i = 0; i < sent.size(); i++) 00283 { 00284 feats.push_back(feat); 00285 } 00286 // Test target function 00287 fex.ext_ORTHO_feats(sent, feats); 00288 00289 // Test result 00290 vector<string> feats_str; 00291 FeatureToStringHelper(feats, feats_str); 00292 if (feats_str.size() != 1) 00293 { 00294 throw new TestException("assert failed", __FILE__, __LINE__); 00295 } 00296 if (feats_str[0] != 00297 "O_BEG_CAP=B,O_HYPHONS,O_LEN=3,O_LEN_n_NO_LOW_LETTERS=3/X,") 00298 { 00299 throw new TestException("assert failed", __FILE__, __LINE__); 00300 } 00301 } 00302 00303 void TestFExtorOrthoFeature_Slash() 00304 { 00305 COLUMN_INFO cinfo; 00306 SetupColumnInfoHelper(cinfo); 00307 00308 FeatureExtractor fex(cinfo); 00309 V2_STR sent; 00310 sent.push_back(CreateWordHelper("0", "3", "a/b", "a/b", "N", "O", "O")); 00311 00312 V2_STR feats; 00313 vector<string> feat; 00314 for (int i = 0; i < sent.size(); i++) 00315 { 00316 feats.push_back(feat); 00317 } 00318 // Test target function 00319 fex.ext_ORTHO_feats(sent, feats); 00320 00321 // Test result 00322 vector<string> feats_str; 00323 FeatureToStringHelper(feats, feats_str); 00324 if (feats_str.size() != 1) 00325 { 00326 throw new TestException("assert failed", __FILE__, __LINE__); 00327 } 00328 if (feats_str[0] != 00329 "O_BEG_CAP=B,O_SLASHES,O_LEN=3,O_LEN_n_NO_LOW_LETTERS=3/X,") 00330 { 00331 throw new TestException("assert failed", __FILE__, __LINE__); 00332 } 00333 } 00334 00335 void TestFExtorOrthoFeature_OpenSB() 00336 { 00337 COLUMN_INFO cinfo; 00338 SetupColumnInfoHelper(cinfo); 00339 00340 FeatureExtractor fex(cinfo); 00341 V2_STR sent; 00342 sent.push_back(CreateWordHelper("0", "3", "[ab", "[ab", "N", "O", "O")); 00343 00344 V2_STR feats; 00345 vector<string> feat; 00346 for (int i = 0; i < sent.size(); i++) 00347 { 00348 feats.push_back(feat); 00349 } 00350 // Test target function 00351 fex.ext_ORTHO_feats(sent, feats); 00352 00353 // Test result 00354 vector<string> feats_str; 00355 FeatureToStringHelper(feats, feats_str); 00356 if (feats_str.size() != 1) 00357 { 00358 throw new TestException("assert failed", __FILE__, __LINE__); 00359 } 00360 if (feats_str[0] != 00361 "O_BEG_CAP=B,O_OpenSB,O_LEN=3,O_LEN_n_NO_LOW_LETTERS=3/X,") 00362 { 00363 throw new TestException("assert failed", __FILE__, __LINE__); 00364 } 00365 } 00366 00367 void TestFExtorOrthoFeature_CloseSB() 00368 { 00369 COLUMN_INFO cinfo; 00370 SetupColumnInfoHelper(cinfo); 00371 00372 FeatureExtractor fex(cinfo); 00373 V2_STR sent; 00374 sent.push_back(CreateWordHelper("0", "3", "ab]", "ab]", "N", "O", "O")); 00375 00376 V2_STR feats; 00377 vector<string> feat; 00378 for (int i = 0; i < sent.size(); i++) 00379 { 00380 feats.push_back(feat); 00381 } 00382 // Test target function 00383 fex.ext_ORTHO_feats(sent, feats); 00384 00385 // Test result 00386 vector<string> feats_str; 00387 FeatureToStringHelper(feats, feats_str); 00388 if (feats_str.size() != 1) 00389 { 00390 throw new TestException("assert failed", __FILE__, __LINE__); 00391 } 00392 if (feats_str[0] != 00393 "O_BEG_CAP=B,O_CloseSB,O_LEN=3,O_LEN_n_NO_LOW_LETTERS=3/X,") 00394 { 00395 throw new TestException("assert failed", __FILE__, __LINE__); 00396 } 00397 } 00398 00399 void TestFExtorOrthoFeature_OpenP() 00400 { 00401 COLUMN_INFO cinfo; 00402 SetupColumnInfoHelper(cinfo); 00403 00404 FeatureExtractor fex(cinfo); 00405 V2_STR sent; 00406 sent.push_back(CreateWordHelper("0", "3", "(ab", "(ab", "N", "O", "O")); 00407 00408 V2_STR feats; 00409 vector<string> feat; 00410 for (int i = 0; i < sent.size(); i++) 00411 { 00412 feats.push_back(feat); 00413 } 00414 // Test target function 00415 fex.ext_ORTHO_feats(sent, feats); 00416 00417 // Test result 00418 vector<string> feats_str; 00419 FeatureToStringHelper(feats, feats_str); 00420 if (feats_str.size() != 1) 00421 { 00422 throw new TestException("assert failed", __FILE__, __LINE__); 00423 } 00424 if (feats_str[0] != 00425 "O_BEG_CAP=B,O_OpenP,O_LEN=3,O_LEN_n_NO_LOW_LETTERS=3/X,") 00426 { 00427 throw new TestException("assert failed", __FILE__, __LINE__); 00428 } 00429 } 00430 00431 void TestFExtorOrthoFeature_CloseP() 00432 { 00433 COLUMN_INFO cinfo; 00434 SetupColumnInfoHelper(cinfo); 00435 00436 FeatureExtractor fex(cinfo); 00437 V2_STR sent; 00438 sent.push_back(CreateWordHelper("0", "3", "ab)", "ab)", "N", "O", "O")); 00439 00440 V2_STR feats; 00441 vector<string> feat; 00442 for (int i = 0; i < sent.size(); i++) 00443 { 00444 feats.push_back(feat); 00445 } 00446 // Test target function 00447 fex.ext_ORTHO_feats(sent, feats); 00448 00449 // Test result 00450 vector<string> feats_str; 00451 FeatureToStringHelper(feats, feats_str); 00452 if (feats_str.size() != 1) 00453 { 00454 throw new TestException("assert failed", __FILE__, __LINE__); 00455 } 00456 if (feats_str[0] != 00457 "O_BEG_CAP=B,O_CloseP,O_LEN=3,O_LEN_n_NO_LOW_LETTERS=3/X,") 00458 { 00459 throw new TestException("assert failed", __FILE__, __LINE__); 00460 } 00461 } 00462 00463 void TestFExtorOrthoFeature_Colon() 00464 { 00465 COLUMN_INFO cinfo; 00466 SetupColumnInfoHelper(cinfo); 00467 00468 FeatureExtractor fex(cinfo); 00469 V2_STR sent; 00470 sent.push_back(CreateWordHelper("0", "3", "a:b", "a:b", "N", "O", "O")); 00471 00472 V2_STR feats; 00473 vector<string> feat; 00474 for (int i = 0; i < sent.size(); i++) 00475 { 00476 feats.push_back(feat); 00477 } 00478 // Test target function 00479 fex.ext_ORTHO_feats(sent, feats); 00480 00481 // Test result 00482 vector<string> feats_str; 00483 FeatureToStringHelper(feats, feats_str); 00484 if (feats_str.size() != 1) 00485 { 00486 throw new TestException("assert failed", __FILE__, __LINE__); 00487 } 00488 if (feats_str[0] != 00489 "O_BEG_CAP=B,O_COLONS,O_LEN=3,O_LEN_n_NO_LOW_LETTERS=3/X,") 00490 { 00491 throw new TestException("assert failed", __FILE__, __LINE__); 00492 } 00493 } 00494 00495 void TestFExtorOrthoFeature_Semicolon() 00496 { 00497 COLUMN_INFO cinfo; 00498 SetupColumnInfoHelper(cinfo); 00499 00500 FeatureExtractor fex(cinfo); 00501 V2_STR sent; 00502 sent.push_back(CreateWordHelper("0", "3", "a;b", "a;b", "N", "O", "O")); 00503 00504 V2_STR feats; 00505 vector<string> feat; 00506 for (int i = 0; i < sent.size(); i++) 00507 { 00508 feats.push_back(feat); 00509 } 00510 // Test target function 00511 fex.ext_ORTHO_feats(sent, feats); 00512 00513 // Test result 00514 vector<string> feats_str; 00515 FeatureToStringHelper(feats, feats_str); 00516 if (feats_str.size() != 1) 00517 { 00518 throw new TestException("assert failed", __FILE__, __LINE__); 00519 } 00520 if (feats_str[0] != 00521 "O_BEG_CAP=B,O_SemiCOLONS,O_LEN=3,O_LEN_n_NO_LOW_LETTERS=3/X,") 00522 { 00523 throw new TestException("assert failed", __FILE__, __LINE__); 00524 } 00525 } 00526 00527 void TestFExtorOrthoFeature_Percentage() 00528 { 00529 COLUMN_INFO cinfo; 00530 SetupColumnInfoHelper(cinfo); 00531 00532 FeatureExtractor fex(cinfo); 00533 V2_STR sent; 00534 sent.push_back(CreateWordHelper("0", "3", "a%b", "a%b", "N", "O", "O")); 00535 00536 V2_STR feats; 00537 vector<string> feat; 00538 for (int i = 0; i < sent.size(); i++) 00539 { 00540 feats.push_back(feat); 00541 } 00542 // Test target function 00543 fex.ext_ORTHO_feats(sent, feats); 00544 00545 // Test result 00546 vector<string> feats_str; 00547 FeatureToStringHelper(feats, feats_str); 00548 if (feats_str.size() != 1) 00549 { 00550 throw new TestException("assert failed", __FILE__, __LINE__); 00551 } 00552 if (feats_str[0] != 00553 "O_BEG_CAP=B,O_PERCENTAGE,O_LEN=3,O_LEN_n_NO_LOW_LETTERS=3/X,") 00554 { 00555 throw new TestException("assert failed", __FILE__, __LINE__); 00556 } 00557 } 00558 00559 00560 void TestFExtorOrthoFeature_Apostrophe() 00561 { 00562 COLUMN_INFO cinfo; 00563 SetupColumnInfoHelper(cinfo); 00564 00565 FeatureExtractor fex(cinfo); 00566 V2_STR sent; 00567 sent.push_back(CreateWordHelper("0", "3", "a'b", "a'b", "N", "O", "O")); 00568 00569 V2_STR feats; 00570 vector<string> feat; 00571 for (int i = 0; i < sent.size(); i++) 00572 { 00573 feats.push_back(feat); 00574 } 00575 // Test target function 00576 fex.ext_ORTHO_feats(sent, feats); 00577 00578 // Test result 00579 vector<string> feats_str; 00580 FeatureToStringHelper(feats, feats_str); 00581 if (feats_str.size() != 1) 00582 { 00583 throw new TestException("assert failed", __FILE__, __LINE__); 00584 } 00585 if (feats_str[0] != 00586 "O_BEG_CAP=B,O_APOSTROPHE,O_LEN=3,O_LEN_n_NO_LOW_LETTERS=3/X,") 00587 { 00588 throw new TestException("assert failed", __FILE__, __LINE__); 00589 } 00590 } 00591 00592 00593 00594 void TestFExtorPOSFeature() 00595 { 00596 COLUMN_INFO cinfo; 00597 SetupColumnInfoHelper(cinfo); 00598 00599 FeatureExtractor fex(cinfo); 00600 V2_STR sent; 00601 sent.push_back(CreateWordHelper("0", "2", "ABC", "ABC", "N", "O", "O")); 00602 00603 V2_STR feats; 00604 vector<string> feat; 00605 for (int i = 0; i < sent.size(); i++) 00606 { 00607 feats.push_back(feat); 00608 } 00609 // Test target function 00610 fex.ext_POS_feats(sent, feats); 00611 00612 // Test result 00613 vector<string> feats_str; 00614 FeatureToStringHelper(feats, feats_str); 00615 if (feats_str.size() != 1) 00616 { 00617 throw new TestException("assert failed", __FILE__, __LINE__); 00618 } 00619 if (feats_str[0] != 00620 "P_U_C=N,P_B_L1C=NULL/N,P_B_CR1=N/NULL,") 00621 { 00622 throw new TestException("assert failed", __FILE__, __LINE__); 00623 } 00624 } 00625 00626 void TestFExtorLemmaPOSFeature() 00627 { 00628 COLUMN_INFO cinfo; 00629 SetupColumnInfoHelper(cinfo); 00630 00631 FeatureExtractor fex(cinfo); 00632 V2_STR sent; 00633 sent.push_back(CreateWordHelper("0", "2", "ABC", "ABC", "N", "O", "O")); 00634 00635 V2_STR feats; 00636 vector<string> feat; 00637 for (int i = 0; i < sent.size(); i++) 00638 { 00639 feats.push_back(feat); 00640 } 00641 // Test target function 00642 fex.ext_LEMMA_POS_feats(sent, feats); 00643 00644 // Test result 00645 vector<string> feats_str; 00646 FeatureToStringHelper(feats, feats_str); 00647 if (feats_str.size() != 1) 00648 { 00649 throw new TestException("assert failed", __FILE__, __LINE__); 00650 } 00651 if (feats_str[0] != 00652 "LP_U_C=ABC_N,LP_B_L1C=NULL_NULL/ABC_N,LP_B_CR1=ABC_N/NULL_NULL,") 00653 { 00654 throw new TestException("assert failed", __FILE__, __LINE__); 00655 } 00656 } 00657 00658 void TestFExtorChunkFeature() 00659 { 00660 COLUMN_INFO cinfo; 00661 SetupColumnInfoHelper(cinfo); 00662 00663 FeatureExtractor fex(cinfo); 00664 V2_STR sent; 00665 sent.push_back(CreateWordHelper("0", "2", "ABC", "ABC", "N", "B-NP", "O")); 00666 sent.push_back(CreateWordHelper("3", "5", "DEF", "DEF", "N", "O", "O")); 00667 00668 V2_STR feats; 00669 vector<string> feat; 00670 for (int i = 0; i < sent.size(); i++) 00671 { 00672 feats.push_back(feat); 00673 } 00674 // Test target function 00675 fex.ext_CHUNK_feats(sent, feats); 00676 00677 // Test result 00678 vector<string> feats_str; 00679 FeatureToStringHelper(feats, feats_str); 00680 if (feats_str.size() != 2) 00681 { 00682 throw new TestException("assert failed", __FILE__, __LINE__); 00683 } 00684 if (feats_str[0] != 00685 "CH_TYPE=B-NP,CH_C_LW=ABC,CH_C_LL=ABC,") 00686 { 00687 throw new TestException("assert failed", __FILE__, __LINE__); 00688 } 00689 if (feats_str[1] != 00690 "CH_TYPE=O,CH_C_LW=DEF,CH_C_LL=DEF,") 00691 { 00692 throw new TestException("assert failed", __FILE__, __LINE__); 00693 } 00694 } 00695 00696 #endif