bool cut(Unicode::const_iterator begin , Unicode::const_iterator end, vector<TrieNodeInfo>& segWordInfos)const { if(!_getInitFlag()) { LogError("not inited."); return false; } SegmentContext segContext; //calc DAG if(!_calcDAG(begin, end, segContext)) { LogError("_calcDAG failed."); return false; } if(!_calcDP(segContext)) { LogError("_calcDP failed."); return false; } if(!_cut(segContext, segWordInfos)) { LogError("_cut failed."); return false; } return true; }
bool Segment::cutDAG(const string& str, vector<TrieNodeInfo>& segWordInfos) { if(str.empty()) { return false; } segWordInfos.clear(); SegmentContext segContext; if(!TransCode::strToVec(str, segContext.uintVec)) { LogError("TransCode::strToVec failed."); return false; } //calc DAG if(!_calcDAG(segContext)) { LogError("_calcDAG failed."); return false; } if(!_calcDP(segContext)) { LogError("_calcDP failed."); return false; } if(!_cutDAG(segContext, segWordInfos)) { LogError("_cutDAG failed."); return false; } return true; }