#ifndef TIMBL_CHOPPERS_H
#define TIMBL_CHOPPERS_H
/*
$Id: Choppers.h 15565 2013-01-07 14:27:05Z sloot $
$URL: https://ilk.uvt.nl/svn/trunk/sources/Timbl6/include/timbl/Choppers.h $
Copyright (c) 1998 - 2013
ILK - Tilburg University
CLiPS - University of Antwerp
This file is part of timbl
timbl is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
timbl is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, see .
For questions and suggestions, see:
http://ilk.uvt.nl/software.html
or send mail to:
timbl@uvt.nl
*/
namespace Timbl{
static const std::string DefaultSparseString = "0.0000E-17";
class Chopper {
public:
virtual ~Chopper() {};
virtual bool chop( const std::string&, size_t ) = 0;
const std::string& getField( size_t i ) const { return choppedInput[i]; };
virtual double getExW() const { return -1; };
virtual int getOcc() const { return 1; };
virtual std::string getString() const = 0;
void print( std::ostream& os ){
os << getString();
};
void swapTarget( size_t target_pos ){
std::string tmp = choppedInput[target_pos];
for ( size_t i = target_pos+1; i < vSize; ++i )
choppedInput[i-1] = choppedInput[i];
choppedInput[vSize-1] = tmp;
}
static Chopper *create( InputFormatType , bool, int, bool );
static InputFormatType getInputFormat( const std::string&,
bool=false );
static size_t countFeatures( const std::string&,
InputFormatType,
int,
bool=false );
protected:
virtual void init( const std::string&, size_t, bool );
size_t vSize;
std::string strippedInput;
std::vector choppedInput;
};
class ExChopper: public virtual Chopper {
public:
double getExW() const { return exW; };
protected:
void init( const std::string&, size_t, bool );
double exW;
};
class OccChopper: public virtual Chopper {
public:
int getOcc() const { return occ; };
protected:
void init( const std::string&, size_t, bool );
int occ;
};
class C45_Chopper : public virtual Chopper {
public:
bool chop( const std::string&, size_t );
std::string getString() const;
};
class C45_ExChopper : public C45_Chopper, public ExChopper {
};
class C45_OccChopper : public C45_Chopper, public OccChopper {
};
class ARFF_Chopper : public C45_Chopper {
public:
bool chop( const std::string&, size_t );
};
class ARFF_ExChopper : public C45_ExChopper {
};
class ARFF_OccChopper : public C45_OccChopper {
};
class Bin_Chopper : public virtual Chopper {
public:
bool chop( const std::string&, size_t );
std::string getString() const;
};
class Bin_ExChopper : public Bin_Chopper, public ExChopper {
};
class Bin_OccChopper : public Bin_Chopper, public OccChopper {
};
class Compact_Chopper : public virtual Chopper {
public:
Compact_Chopper( int L ): fLen(L){};
bool chop( const std::string&, size_t );
std::string getString() const;
private:
int fLen;
Compact_Chopper();
};
class Compact_ExChopper : public Compact_Chopper, public ExChopper {
public:
Compact_ExChopper( int L ): Compact_Chopper( L ){};
private:
Compact_ExChopper();
};
class Compact_OccChopper : public Compact_Chopper, public OccChopper {
public:
Compact_OccChopper( int L ): Compact_Chopper( L ){};
private:
Compact_OccChopper();
};
class Columns_Chopper : public virtual Chopper {
public:
bool chop( const std::string&, size_t );
std::string getString() const;
};
class Columns_ExChopper : public Columns_Chopper, public ExChopper {
};
class Columns_OccChopper : public Columns_Chopper, public OccChopper {
};
class Tabbed_Chopper : public virtual Chopper {
public:
bool chop( const std::string&, size_t );
std::string getString() const;
};
class Tabbed_ExChopper : public Tabbed_Chopper, public ExChopper {
};
class Tabbed_OccChopper : public Tabbed_Chopper, public OccChopper {
};
class Sparse_Chopper : public virtual Chopper {
public:
bool chop( const std::string&, size_t );
std::string getString() const;
};
class Sparse_ExChopper : public Sparse_Chopper, public ExChopper {
};
class Sparse_OccChopper : public Sparse_Chopper, public OccChopper {
};
}
#endif // TIMBL_CHOPPERS_H