modify cmakelists.txt for gbk encoding

This commit is contained in:
wyy 2013-12-06 00:21:18 -08:00
parent b1a71f0495
commit d82ac83a8a
3 changed files with 12 additions and 15 deletions

View File

@ -1,7 +1,9 @@
PROJECT(CPPJIEBA) PROJECT(CPPJIEBA)
SET(CMAKE_INSTALL_PREFIX /usr) SET(CMAKE_INSTALL_PREFIX /usr)
ADD_DEFINITIONS(-std=c++0x -O3) ADD_DEFINITIONS(-std=c++0x -O3)
#ADD_DEFINITIONS(-DCPPJIEBA_GBK) IF (DEFINED ENC)
ADD_DEFINITIONS(-DCPPJIEBA_${ENC})
ENDIF()
ADD_SUBDIRECTORY(src) ADD_SUBDIRECTORY(src)
ADD_SUBDIRECTORY(dicts) ADD_SUBDIRECTORY(dicts)
ADD_SUBDIRECTORY(scripts) ADD_SUBDIRECTORY(scripts)

View File

@ -8,9 +8,6 @@
现在支持utf8,gbk编码的分词。 现在支持utf8,gbk编码的分词。
- `master`分支支持`utf8`编码
- `gbk`分支支持`gbk`编码
## 安装与使用 ## 安装与使用
### 下载和安装 ### 下载和安装
@ -22,6 +19,8 @@ cd cppjieba-master
mkdir build mkdir build
cd build cd build
cmake .. cmake ..
# 默认是utf8编码如果要使用gbk编码则使用下句cmake命令
# cmake .. -DENC=GBK
make make
sudo make install sudo make install
``` ```
@ -122,14 +121,14 @@ Output:
核心目录,包含主要源代码。 核心目录,包含主要源代码。
#### Trie树 #### Trie树
Trie.cpp/Trie.h 负责载入词典的trie树主要供Segment模块使用。 Trie.hpp 负责载入词典的trie树主要供Segment模块使用。
#### Segment模块 #### Segment模块
MPSegment.cpp/MPSegment.h MPSegment.hpp
(Maximum Probability)最大概率法:负责根据Trie树构建有向无环图和进行动态规划算法是分词算法的核心。 (Maximum Probability)最大概率法:负责根据Trie树构建有向无环图和进行动态规划算法是分词算法的核心。
HMMSegment.cpp/HMMSegment.h HMMSegment.hpp
是根据HMM模型来进行分词主要算法思路是根据(B,E,M,S)四个状态来代表每个字的隐藏状态。 是根据HMM模型来进行分词主要算法思路是根据(B,E,M,S)四个状态来代表每个字的隐藏状态。
HMM模型由dicts/下面的`hmm_model.utf8`提供。 HMM模型由dicts/下面的`hmm_model.utf8`提供。
分词算法即viterbi算法。 分词算法即viterbi算法。

View File

@ -6,7 +6,7 @@
namespace CppJieba 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; typedef Unicode::const_iterator UniConIter;
class ChineseFilter; class ChineseFilter;
class ChFilterIterator class ChFilterIterator
@ -55,19 +55,15 @@ namespace CppJieba
{ {
return DIGIT_OR_LETTER; return DIGIT_OR_LETTER;
} }
if(x >= 0x4e00 && x <= 0x9fff)
{
return CHWORD; return CHWORD;
} }
return OTHERS;
}
ChFilterIterator _get(UniConIter iter) ChFilterIterator _get(UniConIter iter)
{ {
UniConIter _begin = iter; UniConIter _begin = iter;
const UniConIter& _end = ptUnico->end(); const UniConIter& _end = ptUnico->end();
if(iter == _end) if(iter == _end)
{ {
return ChFilterIterator(ptUnico, end, end, OTHERS); return ChFilterIterator(ptUnico, end, end, DIGIT_OR_LETTER);
} }
CHAR_TYPE charType = _charType(*iter); CHAR_TYPE charType = _charType(*iter);
iter ++; iter ++;
@ -99,7 +95,7 @@ namespace CppJieba
} }
iterator end() iterator end()
{ {
return iterator(&_unico, _unico.end(), _unico.end(), OTHERS); return iterator(&_unico, _unico.end(), _unico.end(), DIGIT_OR_LETTER);
} }
}; };
} }