예제 #1
0
            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;
            }
예제 #2
0
	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;
	}