ChartBase:: ChartBase(SentRep & sentence) : crossEntropy_(0.0L), wrd_count_(0), ruleiCounts_(0), popedEdgeCount_(0), sentence_( sentence ) { #ifdef DEBUG extern int rulei_high_water; rulei_high_water = 0; #endif /* DEBUG */ numItemsToDelete = 0; wrd_count_ = sentence.length(); endPos = wrd_count_; const char* endwrd = NULL; if(wrd_count_ > 0) endwrd = sentence_[wrd_count_-1].lexeme().c_str(); if(endwrd && finalPunc(endwrd)) endPos = wrd_count_-1; else if(wrd_count_ > 2) { endwrd = sentence[wrd_count_-2].lexeme().c_str(); if(finalPunc(endwrd)) endPos = wrd_count_-2; else { endwrd = sentence[wrd_count_-3].lexeme().c_str(); if(finalPunc(endwrd)) endPos = wrd_count_-3; } } }
void Bchart:: rPendFactor() { endPos = wrd_count_; const char* endwrd = NULL; if(wrd_count_ > 0) endwrd = sentence_[wrd_count_-1].lexeme().c_str(); if(endwrd && finalPunc(endwrd)) endPos = wrd_count_-1; else if(wrd_count_ > 2) { endwrd = sentence_[wrd_count_-2].lexeme().c_str(); if(finalPunc(endwrd)) endPos = wrd_count_-2; else { endwrd = sentence_[wrd_count_-3].lexeme().c_str(); if(finalPunc(endwrd)) endPos = wrd_count_-3; } } cerr << "GG" << endl; }
int ChartBase:: effEnd(int pos) { bool ans; if(pos > endPos) return 0; if(pos == endPos) return 1; //in case no final punc; const char* wrd = sentence_[pos].lexeme().c_str(); if(finalPunc(wrd)) ans = 1; else if(pos > wrd_count_ -3) ans = 0; else if(!strcmp(wrd,",")) { if(sentence_[pos+1].lexeme() == "''") ans = 1; // ,'' acts like end of sentence; else ans = 0; //ans = 2 for alt version??? } else ans = 0; return ans; }