diff --git a/include/cppjieba/DictTrie.hpp b/include/cppjieba/DictTrie.hpp index aaefb04..d4d2043 100644 --- a/include/cppjieba/DictTrie.hpp +++ b/include/cppjieba/DictTrie.hpp @@ -80,8 +80,10 @@ class DictTrie { return min_weight_; } - void InserUserDictNode(vector& buf){ + void InserUserDictNode(const string& line){ + vector buf; DictUnit node_info; + Split(line, buf, " "); if(buf.size() == 1){ MakeNodeInfo(node_info, buf[0], @@ -103,6 +105,12 @@ class DictTrie { user_dict_single_chinese_word_.insert(node_info.word[0]); } } + + void LoadUserDict(vector& buf){ + for (size_t i = 0; i < buf.size(); i++) { + InserUserDictNode(buf[i]); + } + } private: void Init(const string& dict_path, const string& user_dict_paths, UserWordWeightOption user_word_weight_opt) { @@ -139,14 +147,12 @@ class DictTrie { ifstream ifs(files[i].c_str()); XCHECK(ifs.is_open()) << "open " << files[i] << " failed"; string line; - vector buf; + for (; getline(ifs, line); lineno++) { if (line.size() == 0) { continue; } - buf.clear(); - Split(line, buf, " "); - InserUserDictNode(buf); + InserUserDictNode(line); } } } diff --git a/include/cppjieba/Jieba.hpp b/include/cppjieba/Jieba.hpp index ef5cb45..2062a75 100644 --- a/include/cppjieba/Jieba.hpp +++ b/include/cppjieba/Jieba.hpp @@ -88,6 +88,10 @@ class Jieba { return &model_; } + void LoadUserDict(vector& buf) { + dict_trie_.LoadUserDict(buf); + } + private: DictTrie dict_trie_; HMMModel model_;