NERsuite  1.1.1
src/nersuitetest/FExtorTest.h
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
 All Classes Functions Variables