示例#1
0
        bool cut(Unicode::const_iterator begin, Unicode::const_iterator end, vector<string>& res) const
        {
            assert(_getInitFlag());
            if (begin >= end)
            {
                LogError("begin >= end");
                return false;
            }

            vector<Unicode> uRes;
            if (!cut(begin, end, uRes))
            {
                LogError("get unicode cut result error.");
                return false;
            }

            string tmp;
            for (vector<Unicode>::const_iterator uItr = uRes.begin(); uItr != uRes.end(); uItr++)
            {
                if (TransCode::encode(*uItr, tmp))
                {
                    res.push_back(tmp);
                }
                else
                {
                    LogError("encode failed.");
                }
            }

            return true;
        }
示例#2
0
            virtual bool cut(Unicode::const_iterator begin, Unicode::const_iterator end, vector<string>& res)const
            {
                if(begin == end)
                {
                    return false;
                }

                vector<Unicode> uRes;
                uRes.reserve(end - begin);
                if (!cut(begin, end, uRes))
                {
                    return false;
                }

                size_t offset = res.size();
                res.resize(res.size() + uRes.size());
                for(size_t i = 0; i < uRes.size(); i ++, offset++)
                {
                    if(!TransCode::encode(uRes[i], res[offset]))
                    {
                      Rcout<<"encode failed."<<std::endl;
                  
                    }
                }
                return true;
            }
示例#3
0
            virtual bool cut(Unicode::const_iterator begin, Unicode::const_iterator end, vector<string>& res)const
            {
                assert(_getInitFlag());
                if(begin == end)
                {
                    return false;
                }

                vector<Unicode> words;
                words.reserve(end - begin);
                if(!cut(begin, end, words))
                {
                    return false;
                }
                size_t offset = res.size();
                res.resize(res.size() + words.size());
                for(size_t i = 0; i < words.size(); i++)
                {
                    if(!TransCode::encode(words[i], res[i + offset]))
                    {
                        LogError("encode failed.");
                        res[i + offset].clear();
                    }
                }
                return true;
            }
示例#4
0
            virtual bool cut(Unicode::const_iterator begin, Unicode::const_iterator end, vector<string>& res)const
            {
                assert(_getInitFlag());
                if(begin == end)
                {
                    return false;
                }

                vector<Unicode> words;
                if(!cut(begin, end, words))
                {
                    return false;
                }
                string word;
                for(size_t i = 0; i < words.size(); i++)
                {
                    if(TransCode::encode(words[i], word))
                    {
                        res.push_back(word);
                    }
                    else
                    {
                        LogError("encode failed.");
                    }
                }
                return true;
            }
示例#5
0
 bool cut(const string& sentence, 
       vector<string>& words, 
       size_t max_word_len) const {
   Unicode unicode;
   if (!TransCode::decode(sentence, unicode)) {
     return false;
   }
   vector<Unicode> unicodeWords;
   cut(unicode.begin(), unicode.end(), 
         unicodeWords, max_word_len);
   words.resize(unicodeWords.size());
   for (size_t i = 0; i < words.size(); i++) {
     TransCode::encode(unicodeWords[i], words[i]);
   }
   return true;
 }
示例#6
0
 virtual bool cut(Unicode::const_iterator begin, Unicode::const_iterator end, vector<string>& res)const {
   if(begin == end) {
     return false;
   }
   vector<Unicode> words;
   words.reserve(end - begin);
   if(!cut(begin, end, words)) {
     return false;
   }
   size_t offset = res.size();
   res.resize(res.size() + words.size());
   for(size_t i = 0; i < words.size(); i++) {
     TransCode::encode(words[i], res[offset + i]);
   }
   return true;
 }
示例#7
0
            virtual bool cut(Unicode::const_iterator begin, Unicode::const_iterator end, vector<string>& res)const
            {
                assert(_getInitFlag());

                vector<TrieNodeInfo> segWordInfos;
                if(!cut(begin, end, segWordInfos))
                {
                    return false;
                }
                string tmp;
                for(uint i = 0; i < segWordInfos.size(); i++)
                {
                    if(TransCode::encode(segWordInfos[i].word, tmp))
                    {
                        res.push_back(tmp);
                    }
                    else
                    {
                        LogError("encode failed.");
                    }
                }
                return true;
            }