/* -*- 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