#include #include #include #include #include #include #include using namespace std; int stringToInteger(string s) { istringstream buffer(s); int some_int; buffer >> some_int; return some_int; } void loadInput(const char * fileName, vector & input) { ifstream sr (fileName); string line; if(sr.is_open()) { while(getline(sr , line )) { input.push_back(line); } sr.close(); } else { cout<<"Unable to read "< & currInput) { istringstream iss(s); currInput.clear(); do { string sub; iss >> sub; currInput.push_back(sub); } while (iss); currInput.pop_back(); } void getMeCepts ( set & eSide , set & fSide , map > & tS , map > & sT) { set :: iterator iter; int sz = eSide.size(); vector t; for (iter = eSide.begin(); iter != eSide.end(); iter++) { t = tS[*iter]; for (int i = 0; i < t.size(); i++) { fSide.insert(t[i]); } } for (iter = fSide.begin(); iter != fSide.end(); iter++) { t = sT[*iter]; for (int i = 0 ; i sz) { getMeCepts(eSide,fSide,tS,sT); } } void constructCepts(vector < pair < set , set > > & ceptsInPhrase, set & sourceNullWords, set & targetNullWords, vector & alignment, int eSize, int fSize) { ceptsInPhrase.clear(); sourceNullWords.clear(); targetNullWords.clear(); vector align; vector mAlign; std::map > sT; std::map > tS; std::set eSide; std::set fSide; std::set :: iterator iter; std :: map > :: iterator iter2; std :: pair < set , set > cept; int src; int tgt; ceptsInPhrase.clear(); int res; for (int j=0; jfirst); getMeCepts(eSide, fSide, tS , sT); for (iter = eSide.begin(); iter != eSide.end(); iter++) { iter2 = tS.find(*iter); tS.erase(iter2); } for (iter = fSide.begin(); iter != fSide.end(); iter++) { iter2 = sT.find(*iter); sT.erase(iter2); } cept = make_pair (fSide , eSide); ceptsInPhrase.push_back(cept); } } void getOneToOne(vector < pair < set , set > > & ceptsInPhrase , vector & currF , vector & currE, set & one) { string temp; for (int i = 0; i< ceptsInPhrase.size(); i++) { if (ceptsInPhrase[i].first.size() == 1 && ceptsInPhrase[i].second.size() == 1) { temp = currF[(*ceptsInPhrase[i].second.begin())] + "\t" + currE[(*ceptsInPhrase[i].first.begin())]; if (one.find(temp) == one.end()) one.insert(temp); } } } void printOneToOne ( set & one) { set :: iterator iter; for (iter = one.begin(); iter != one.end(); iter++) { cout<<*iter< e; vector f; vector a; vector < pair < set , set > > ceptsInPhrase; vector < pair < string , vector > > gCepts; set sourceNullWords; set targetNullWords; vector currE; vector currF; vector currA; set one; loadInput(argv[1],f); loadInput(argv[2],e); loadInput(argv[3],a); for (int i=0; i>xx; */ } printOneToOne(one); return 0; }