// $Id$ | |
/*********************************************************************** | |
Moses - factored phrase-based language decoder | |
Copyright (C) 2006 University of Edinburgh | |
This library is free software; you can redistribute it and/or | |
modify it under the terms of the GNU Lesser General Public | |
License as published by the Free Software Foundation; either | |
version 2.1 of the License, or (at your option) any later version. | |
This library 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 | |
Lesser General Public License for more details. | |
You should have received a copy of the GNU Lesser General Public | |
License along with this library; if not, write to the Free Software | |
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |
***********************************************************************/ | |
//this is required because: | |
//- IRSTLM package uses the namespace irstlm | |
//- the compilation of "IRST.cpp" requires "using namespace irstlm", which is defined in any file of the IRSTLM package | |
// but conflicts with these foward declaration of class lmContainer | |
//- for files in moses/LM the IRSTLM include directory is set | |
// but not for the rest of files | |
class lmContainer; // irst lm container for any lm type | |
class ngram; | |
class dictionary; | |
namespace Moses | |
{ | |
//class LanguageModel; | |
class FFState; | |
class Phrase; | |
/** Implementation of single factor LM using IRST's code. | |
* This is available from the same sourceforge repository | |
*/ | |
class LanguageModelIRST : public LanguageModelSingleFactor | |
{ | |
protected: | |
mutable std::vector<int> m_lmIdLookup; | |
lmContainer* m_lmtb; | |
int m_unknownId; //code of OOV | |
int m_empty; //code of an empty position | |
int m_lmtb_sentenceStart; //lmtb symbols to initialize ngram with | |
int m_lmtb_sentenceEnd; //lmt symbol to initialize ngram with | |
int m_lmtb_dub; //dictionary upperboud | |
int m_lmtb_size; //max ngram stored in the table | |
dictionary* d; | |
std::string m_mapFilePath; | |
void CreateFactors(FactorCollection &factorCollection); | |
int GetLmID( const Word &word ) const; | |
int GetLmID( const std::string &str ) const; | |
int GetLmID( const Factor *factor ) const; | |
public: | |
LanguageModelIRST(const std::string &line); | |
~LanguageModelIRST(); | |
void SetParameter(const std::string& key, const std::string& value); | |
bool IsUseable(const FactorMask &mask) const; | |
void Load(AllOptions::ptr const& opts); | |
const FFState *EmptyHypothesisState(const InputType &/*input*/) const; | |
virtual LMResult GetValue(const std::vector<const Word*> &contextFactor, State* finalState = NULL) const; | |
virtual void CalcScore(const Phrase &phrase, float &fullScore, float &ngramScore, size_t &oovCount) const; | |
virtual FFState *EvaluateWhenApplied(const Hypothesis &hypo, const FFState *ps, ScoreComponentCollection *out) const; | |
/* | |
virtual FFState *EvaluateWhenApplied(const ChartHypothesis& cur_hypo, int featureID, ScoreComponentCollection *accumulator) const; | |
virtual FFState *EvaluateWhenApplied(const Syntax::SHyperedge& hyperedge, int featureID, ScoreComponentCollection *accumulator) const; | |
*/ | |
void InitializeForInput(ttasksptr const& ttask); | |
void CleanUpAfterSentenceProcessing(const InputType& source); | |
void set_dictionary_upperbound(int dub) { | |
m_lmtb_size=dub ; | |
}; | |
}; | |
} | |