/* 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. */ #include "NTables.h" #include #include "defs.h" #include #include "Parameter.h" GLOBAL_PARAMETER(double,NTablesFactorGraphemes,"nSmooth","smoothing for fertility parameters (good value: 64): weight for wordlength-dependent fertility parameters",PARLEV_SMOOTH,64.0); GLOBAL_PARAMETER(double,NTablesFactorGeneral,"nSmoothGeneral","smoothing for fertility parameters (default: 0): weight for word-independent fertility parameters",PARLEV_SMOOTH,0.0); template void nmodel::printNTable(int noEW, const char* filename, const Vector& evlist, bool actual) const // prints the fertility table but with actual sourcce words (not their id) { cerr << "Dumping nTable to: " << filename << '\n'; ofstream of(filename); VALTYPE p ; WordIndex k, i ; for(i=1; int(i) < noEW; i++){ if (evlist[i].freq > 0){ if (actual) of << evlist[i].word << ' ' ; else of << i << ' ' ; for( k=0; k < MAX_FERTILITY; k++){ p = getValue(i, k); if (p <= PROB_SMOOTH) p = 0; of << p << ' '; } of << '\n'; } } } template void nmodel::readNTable(const char *filename){ /* This function reads the n table from a file. Each line is of the format: source_word_id p0 p1 p2 ... pn This is the inverse operation of the printTable function. NAS, 7/11/99 */ ifstream inf(filename); cerr << "Reading fertility table from " << filename << "\n"; if(!inf){ cerr << "\nERROR: Cannot open " << filename <<"\n"; return; } VALTYPE prob; WordIndex tok, i; int nFert=0; while(!inf.eof()){ nFert++; inf >> ws >> tok; if (tok > MAX_VOCAB_SIZE){ cerr << "NTables:readNTable(): unrecognized token id: " << tok <<'\n'; exit(-1); } for(i = 0; i < MAX_FERTILITY; i++){ inf >> ws >> prob; getRef(tok, i)=prob; } } cerr << "Read " << nFert << " entries in fertility table.\n"; inf.close(); } template class nmodel; //template class nmodel;