|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once |
|
|
|
|
|
#include <cstddef> |
|
|
#include <string> |
|
|
#include <vector> |
|
|
#include "../TypeDef.h" |
|
|
#include "../Phrase.h" |
|
|
|
|
|
namespace Moses2 |
|
|
{ |
|
|
template<typename WORD> |
|
|
class TargetPhrase; |
|
|
|
|
|
class System; |
|
|
class PhraseImpl; |
|
|
class TargetPhrases; |
|
|
class TargetPhraseImpl; |
|
|
class Scores; |
|
|
class ManagerBase; |
|
|
class MemPool; |
|
|
class InputType; |
|
|
|
|
|
namespace SCFG |
|
|
{ |
|
|
class TargetPhrase; |
|
|
class TargetPhrases; |
|
|
class Word; |
|
|
} |
|
|
|
|
|
class FeatureFunction |
|
|
{ |
|
|
public: |
|
|
|
|
|
FeatureFunction(size_t startInd, const std::string &line); |
|
|
virtual ~FeatureFunction(); |
|
|
virtual void Load(System &system) { |
|
|
} |
|
|
|
|
|
size_t GetStartInd() const { |
|
|
return m_startInd; |
|
|
} |
|
|
size_t GetNumScores() const { |
|
|
return m_numScores; |
|
|
} |
|
|
const std::string &GetName() const { |
|
|
return m_name; |
|
|
} |
|
|
void SetName(const std::string &val) { |
|
|
m_name = val; |
|
|
} |
|
|
|
|
|
virtual size_t HasPhraseTableInd() const { |
|
|
return false; |
|
|
} |
|
|
void SetPhraseTableInd(size_t ind) { |
|
|
m_PhraseTableInd = ind; |
|
|
} |
|
|
size_t GetPhraseTableInd() const { |
|
|
return m_PhraseTableInd; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
virtual bool IsTuneable() const { |
|
|
return m_tuneable; |
|
|
} |
|
|
|
|
|
virtual void SetParameter(const std::string& key, const std::string& value); |
|
|
|
|
|
|
|
|
virtual void |
|
|
EvaluateInIsolation(MemPool &pool, const System &system, const Phrase<Moses2::Word> &source, |
|
|
const TargetPhraseImpl &targetPhrase, Scores &scores, |
|
|
SCORE &estimatedScore) const = 0; |
|
|
|
|
|
|
|
|
|
|
|
virtual void |
|
|
EvaluateInIsolation(MemPool &pool, const System &system, const Phrase<SCFG::Word> &source, |
|
|
const TargetPhrase<SCFG::Word> &targetPhrase, Scores &scores, |
|
|
SCORE &estimatedScore) const = 0; |
|
|
|
|
|
|
|
|
virtual void EvaluateAfterTablePruning(MemPool &pool, |
|
|
const TargetPhrases &tps, const Phrase<Moses2::Word> &sourcePhrase) const { |
|
|
} |
|
|
|
|
|
virtual void EvaluateAfterTablePruning(MemPool &pool, |
|
|
const SCFG::TargetPhrases &tps, const Phrase<SCFG::Word> &sourcePhrase) const { |
|
|
} |
|
|
|
|
|
virtual void InitializeForInput(const ManagerBase &mgr, const InputType &input) { }; |
|
|
|
|
|
|
|
|
virtual void CleanUpAfterSentenceProcessing(const System &system, const InputType &input) const { |
|
|
} |
|
|
|
|
|
protected: |
|
|
size_t m_startInd; |
|
|
size_t m_numScores; |
|
|
size_t m_PhraseTableInd; |
|
|
std::string m_name; |
|
|
std::vector<std::vector<std::string> > m_args; |
|
|
bool m_tuneable; |
|
|
|
|
|
virtual void ReadParameters(); |
|
|
void ParseLine(const std::string &line); |
|
|
}; |
|
|
|
|
|
} |
|
|
|
|
|
|