From b82acaf71eac2a078d0b16dc41f544faa13c2d3a Mon Sep 17 00:00:00 2001 From: bigelephant29 Date: Thu, 21 Jul 2016 10:06:24 +0800 Subject: [PATCH 1/3] fix user dict tag bug : wrong buf index assigned --- include/cppjieba/DictTrie.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/cppjieba/DictTrie.hpp b/include/cppjieba/DictTrie.hpp index 82add4b..6935f3b 100644 --- a/include/cppjieba/DictTrie.hpp +++ b/include/cppjieba/DictTrie.hpp @@ -111,7 +111,7 @@ class DictTrie { MakeNodeInfo(node_info, buf[0], user_word_default_weight_, - (buf.size() == 2 ? buf[1] : UNKNOWN_TAG)); + (buf.size() == 3 ? buf[2] : UNKNOWN_TAG)); static_node_infos_.push_back(node_info); if (node_info.word.size() == 1) { user_dict_single_chinese_word_.insert(node_info.word[0]); From 2e1b6e04434fea43f933c4b517d0da79e4c147a2 Mon Sep 17 00:00:00 2001 From: bigelephant29 Date: Thu, 21 Jul 2016 10:38:46 +0800 Subject: [PATCH 2/3] user dict support user weight and user tag --- include/cppjieba/DictTrie.hpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/include/cppjieba/DictTrie.hpp b/include/cppjieba/DictTrie.hpp index 6935f3b..1c428f6 100644 --- a/include/cppjieba/DictTrie.hpp +++ b/include/cppjieba/DictTrie.hpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -108,10 +109,17 @@ class DictTrie { buf.clear(); Split(line, buf, " "); DictUnit node_info; - MakeNodeInfo(node_info, - buf[0], - user_word_default_weight_, - (buf.size() == 3 ? buf[2] : UNKNOWN_TAG)); + if(buf.size() == 1){ + MakeNodeInfo(node_info, + buf[0], + user_word_default_weight_, + UNKNOWN_TAG); + } else { + MakeNodeInfo(node_info, + buf[0], + (buf.size() == 2 ? std::stoi(buf[1], nullptr) : user_word_default_weight_), + (buf.size() == 3 ? buf[2] : buf[1])); + } static_node_infos_.push_back(node_info); if (node_info.word.size() == 1) { user_dict_single_chinese_word_.insert(node_info.word[0]); From 986106a553b96ff9acf1ff7d02c481345cd8720e Mon Sep 17 00:00:00 2001 From: bigelephant29 Date: Thu, 21 Jul 2016 10:54:08 +0800 Subject: [PATCH 3/3] change stoi to atoi --- include/cppjieba/DictTrie.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/cppjieba/DictTrie.hpp b/include/cppjieba/DictTrie.hpp index 1c428f6..26bbb2b 100644 --- a/include/cppjieba/DictTrie.hpp +++ b/include/cppjieba/DictTrie.hpp @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include @@ -117,7 +118,7 @@ class DictTrie { } else { MakeNodeInfo(node_info, buf[0], - (buf.size() == 2 ? std::stoi(buf[1], nullptr) : user_word_default_weight_), + (buf.size() == 2 ? atoi(buf[1].c_str()) : user_word_default_weight_), (buf.size() == 3 ? buf[2] : buf[1])); } static_node_infos_.push_back(node_info);