/* EGYPT Toolkit for Statistical Machine Translation Written by Yaser Al-Onaizan, Jan Curin, Michael Jahr, Kevin Knight, John Lafferty, Dan Melamed, David Purdy, Franz Och, Noah Smith, and David Yarowsky. This program 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 2 of the License, or (at your option) any later version. This program 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, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _defs_h #define _defs_h 1 #include #include #include const int TRANSFER_SIMPLE=1; const int TRANSFER=0; const unsigned int MAX_SENTENCE_LENGTH_ALLOWED=101; const int TRAIN_BUFFER_SIZE= 50000; //#ifdef WORDINDEX_WITH_4_BYTE typedef unsigned int WordIndex; const unsigned int MAX_VOCAB_SIZE=UINT_MAX; typedef unsigned int PositionIndex; //#else //typedef unsigned short WordIndex; //const unsigned int MAX_VOCAB_SIZE=USHRT_MAX; //typedef unsigned short PositionIndex; //#endif extern WordIndex MAX_FERTILITY; const int MAX_W=457979; extern double LAMBDA; // Lambda that is used to scale cross_entropy factor typedef float PROB ; typedef float COUNT ; class LogProb { private: double x ; public: LogProb():x(0){} LogProb(double y):x(y){} LogProb(float y):x(y){} LogProb(int y):x(y){} LogProb(WordIndex y):x(y){} operator double() const {return x;} LogProb operator *= (double y) { x *= y ; return *this;} LogProb operator *= (LogProb y) { x *= y.x ; return *this;} LogProb operator /= (double y) { x /= y ; return *this;} LogProb operator /= (LogProb y) { x /= y.x ; return *this;} LogProb operator += (double y) { x += y ; return *this;} LogProb operator += (LogProb y) { x += y.x ; return *this;} }; const int PARLEV_ITER=1; const int PARLEV_OPTHEUR=2; const int PARLEV_OUTPUT=3; const int PARLEV_SMOOTH=4; const int PARLEV_EM=5; const int PARLEV_MODELS=6; const int PARLEV_SPECIAL=7; const int PARLEV_INPUT=8; #endif