|
|
|
#pragma once |
|
|
|
#include <string> |
|
#include <vector> |
|
#include <boost/scoped_ptr.hpp> |
|
#include "moses/Factor.h" |
|
#include "moses/Phrase.h" |
|
#include "moses/TypeDef.h" |
|
#include "moses/Util.h" |
|
#include "moses/Range.h" |
|
#include "moses/TranslationOption.h" |
|
|
|
#include "moses/FF/StatefulFeatureFunction.h" |
|
#include "util/exception.hh" |
|
|
|
#include "LRState.h" |
|
#include "LexicalReorderingTable.h" |
|
#include "SparseReordering.h" |
|
|
|
|
|
namespace Moses |
|
{ |
|
class Factor; |
|
class Phrase; |
|
class Hypothesis; |
|
class InputType; |
|
|
|
|
|
|
|
class LexicalReordering : public StatefulFeatureFunction |
|
{ |
|
public: |
|
LexicalReordering(const std::string &line); |
|
virtual ~LexicalReordering(); |
|
void Load(AllOptions::ptr const& opts); |
|
|
|
virtual |
|
bool |
|
IsUseable(const FactorMask &mask) const; |
|
|
|
virtual |
|
FFState const* |
|
EmptyHypothesisState(const InputType &input) const; |
|
|
|
void |
|
InitializeForInput(ttasksptr const& ttask) { |
|
if (m_table) m_table->InitializeForInput(ttask); |
|
} |
|
|
|
Scores |
|
GetProb(const Phrase& f, const Phrase& e) const; |
|
|
|
virtual |
|
FFState* |
|
EvaluateWhenApplied(const Hypothesis& cur_hypo, |
|
const FFState* prev_state, |
|
ScoreComponentCollection* accumulator) const; |
|
|
|
virtual |
|
FFState* |
|
EvaluateWhenApplied(const ChartHypothesis&, int featureID, |
|
ScoreComponentCollection*) const { |
|
UTIL_THROW2("LexicalReordering is not valid for chart decoder"); |
|
} |
|
|
|
bool |
|
GetHaveDefaultScores() { |
|
return m_haveDefaultScores; |
|
} |
|
|
|
float |
|
GetDefaultScore( size_t i ) { |
|
return m_defaultScores[i]; |
|
} |
|
|
|
virtual |
|
void |
|
SetCache(TranslationOption& to) const; |
|
|
|
virtual |
|
void |
|
SetCache(TranslationOptionList& tol) const; |
|
|
|
private: |
|
bool DecodeCondition(std::string s); |
|
bool DecodeDirection(std::string s); |
|
bool DecodeNumFeatureFunctions(std::string s); |
|
|
|
boost::scoped_ptr<LRModel> m_configuration; |
|
std::string m_modelTypeString; |
|
std::vector<std::string> m_modelType; |
|
boost::scoped_ptr<LexicalReorderingTable> m_table; |
|
std::vector<LRModel::Condition> m_condition; |
|
std::vector<FactorType> m_factorsE, m_factorsF; |
|
std::string m_filePath; |
|
bool m_haveDefaultScores; |
|
Scores m_defaultScores; |
|
public: |
|
LRModel const& GetModel() const; |
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
|