/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* ***** BEGIN LICENSE BLOCK ***** * Version: GPL 2.0 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License. You should have * received a copy of the GPL license along with this program; if you * did not, you can find it at http://www.gnu.org/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is Coreseek.com code. * * Copyright (C) 2007-2008. All Rights Reserved. * * Author: * Li monan * * ***** END LICENSE BLOCK ***** */ #ifndef css_SegmenterManager_h #define css_SegmenterManager_h #include #include "freelist.h" #include "UnigramDict.h" #include "SynonymsDict.h" #include "ThesaurusDict.h" #include "Segmenter.h" namespace css { // class CrfSegmenter; using namespace CRFPP; /** @author Monan Li */ class SegmenterManager { /* {TemplatePath=D:\cos\deps\Segment\doc\}*/ public: /** * Return a newly created segmenter */ Segmenter* getSegmenter(bool bFromPool = true); virtual int init(const char* path, u1 method = SEG_METHOD_NGRAM); void loadconfig(const char* confile); void clear(); SegmenterManager(); virtual ~SegmenterManager(); const char* what_() { return m_msg; } public: const static u1 SEG_METHOD_NGRAM = 0x1; protected: CRFPP::FreeList seg_freelist_; UnigramDict m_uni; UnigramDict m_kw; UnigramDict m_weight; SynonymsDict m_sym; ThesaurusDict m_thesaurus; Segmenter_ConfigObj m_config; u1 m_method; u1 m_inited; char m_msg[1024]; }; } /* End of namespace css */ #endif