From d82ac83a8a8e62b3193e06b3c00133eb404d31ac Mon Sep 17 00:00:00 2001 From: wyy Date: Fri, 6 Dec 2013 00:21:18 -0800 Subject: [PATCH] modify cmakelists.txt for gbk encoding --- CMakeLists.txt | 4 +++- README.md | 11 +++++------ src/ChineseFilter.hpp | 12 ++++-------- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index dd751d5..9a6d5f9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,9 @@ PROJECT(CPPJIEBA) SET(CMAKE_INSTALL_PREFIX /usr) ADD_DEFINITIONS(-std=c++0x -O3) -#ADD_DEFINITIONS(-DCPPJIEBA_GBK) +IF (DEFINED ENC) + ADD_DEFINITIONS(-DCPPJIEBA_${ENC}) +ENDIF() ADD_SUBDIRECTORY(src) ADD_SUBDIRECTORY(dicts) ADD_SUBDIRECTORY(scripts) diff --git a/README.md b/README.md index 83ff2bf..3db03fd 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,6 @@ 现在支持utf8,gbk编码的分词。 -- `master`分支支持`utf8`编码 -- `gbk`分支支持`gbk`编码 - ## 安装与使用 ### 下载和安装 @@ -22,6 +19,8 @@ cd cppjieba-master mkdir build cd build cmake .. +# 默认是utf8编码,如果要使用gbk编码则使用下句cmake命令 +# cmake .. -DENC=GBK make sudo make install ``` @@ -122,14 +121,14 @@ Output: 核心目录,包含主要源代码。 #### Trie树 -Trie.cpp/Trie.h 负责载入词典的trie树,主要供Segment模块使用。 +Trie.hpp 负责载入词典的trie树,主要供Segment模块使用。 #### Segment模块 -MPSegment.cpp/MPSegment.h +MPSegment.hpp (Maximum Probability)最大概率法:负责根据Trie树构建有向无环图和进行动态规划算法,是分词算法的核心。 -HMMSegment.cpp/HMMSegment.h +HMMSegment.hpp 是根据HMM模型来进行分词,主要算法思路是根据(B,E,M,S)四个状态来代表每个字的隐藏状态。 HMM模型由dicts/下面的`hmm_model.utf8`提供。 分词算法即viterbi算法。 diff --git a/src/ChineseFilter.hpp b/src/ChineseFilter.hpp index adca186..2957828 100644 --- a/src/ChineseFilter.hpp +++ b/src/ChineseFilter.hpp @@ -6,7 +6,7 @@ namespace CppJieba { - enum CHAR_TYPE { CHWORD = 0, DIGIT_OR_LETTER = 1, OTHERS = 2}; + enum CHAR_TYPE { CHWORD = 0, DIGIT_OR_LETTER = 1}; typedef Unicode::const_iterator UniConIter; class ChineseFilter; class ChFilterIterator @@ -55,11 +55,7 @@ namespace CppJieba { return DIGIT_OR_LETTER; } - if(x >= 0x4e00 && x <= 0x9fff) - { - return CHWORD; - } - return OTHERS; + return CHWORD; } ChFilterIterator _get(UniConIter iter) { @@ -67,7 +63,7 @@ namespace CppJieba const UniConIter& _end = ptUnico->end(); if(iter == _end) { - return ChFilterIterator(ptUnico, end, end, OTHERS); + return ChFilterIterator(ptUnico, end, end, DIGIT_OR_LETTER); } CHAR_TYPE charType = _charType(*iter); iter ++; @@ -99,7 +95,7 @@ namespace CppJieba } iterator end() { - return iterator(&_unico, _unico.end(), _unico.end(), OTHERS); + return iterator(&_unico, _unico.end(), _unico.end(), DIGIT_OR_LETTER); } }; }