mirror of
https://github.com/moses-smt/mosesdecoder.git
synced 2024-12-29 06:52:34 +03:00
add Bilingual LM class
This commit is contained in:
parent
6dda0d19cf
commit
a7abd02fc6
74
moses/FF/bilingual-lm/BilingualLM.cpp
Normal file
74
moses/FF/bilingual-lm/BilingualLM.cpp
Normal file
@ -0,0 +1,74 @@
|
||||
#include <vector>
|
||||
#include "BilingualLM.h"
|
||||
#include "moses/ScoreComponentCollection.h"
|
||||
#include "moses/Hypothesis.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
namespace Moses
|
||||
{
|
||||
int BilingualLMState::Compare(const FFState& other) const
|
||||
{
|
||||
const BilingualLMState &otherState = static_cast<const BilingualLMState&>(other);
|
||||
|
||||
if (m_targetLen == otherState.m_targetLen)
|
||||
return 0;
|
||||
return (m_targetLen < otherState.m_targetLen) ? -1 : +1;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
BilingualLM::BilingualLM(const std::string &line)
|
||||
:StatefulFeatureFunction(3, line)
|
||||
{
|
||||
ReadParameters();
|
||||
}
|
||||
|
||||
void BilingualLM::EvaluateInIsolation(const Phrase &source
|
||||
, const TargetPhrase &targetPhrase
|
||||
, ScoreComponentCollection &scoreBreakdown
|
||||
, ScoreComponentCollection &estimatedFutureScore) const
|
||||
{}
|
||||
|
||||
void BilingualLM::EvaluateWithSourceContext(const InputType &input
|
||||
, const InputPath &inputPath
|
||||
, const TargetPhrase &targetPhrase
|
||||
, const StackVec *stackVec
|
||||
, ScoreComponentCollection &scoreBreakdown
|
||||
, ScoreComponentCollection *estimatedFutureScore) const
|
||||
{}
|
||||
|
||||
FFState* BilingualLM::EvaluateWhenApplied(
|
||||
const Hypothesis& cur_hypo,
|
||||
const FFState* prev_state,
|
||||
ScoreComponentCollection* accumulator) const
|
||||
{
|
||||
// dense scores
|
||||
vector<float> newScores(m_numScoreComponents);
|
||||
newScores[0] = 1.5;
|
||||
newScores[1] = 0.3;
|
||||
newScores[2] = 0.4;
|
||||
accumulator->PlusEquals(this, newScores);
|
||||
|
||||
// int targetLen = cur_hypo.GetCurrTargetPhrase().GetSize(); // ??? [UG]
|
||||
return new BilingualLMState(0);
|
||||
}
|
||||
|
||||
FFState* BilingualLM::EvaluateWhenApplied(
|
||||
const ChartHypothesis& /* cur_hypo */,
|
||||
int /* featureID - used to index the state in the previous hypotheses */,
|
||||
ScoreComponentCollection* accumulator) const
|
||||
{
|
||||
return new BilingualLMState(0);
|
||||
}
|
||||
|
||||
void BilingualLM::SetParameter(const std::string& key, const std::string& value)
|
||||
{
|
||||
if (key == "arg") {
|
||||
// set value here
|
||||
} else {
|
||||
StatefulFeatureFunction::SetParameter(key, value);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
58
moses/FF/bilingual-lm/BilingualLM.h
Normal file
58
moses/FF/bilingual-lm/BilingualLM.h
Normal file
@ -0,0 +1,58 @@
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include "moses/FF/StatefulFeatureFunction.h"
|
||||
#include "moses/FF/FFState.h"
|
||||
|
||||
namespace Moses
|
||||
{
|
||||
|
||||
class BilingualLMState : public FFState
|
||||
{
|
||||
int m_targetLen;
|
||||
public:
|
||||
BilingualLMState(int targetLen)
|
||||
:m_targetLen(targetLen)
|
||||
{}
|
||||
|
||||
int Compare(const FFState& other) const;
|
||||
};
|
||||
|
||||
class BilingualLM : public StatefulFeatureFunction
|
||||
{
|
||||
public:
|
||||
BilingualLM(const std::string &line);
|
||||
|
||||
bool IsUseable(const FactorMask &mask) const {
|
||||
return true;
|
||||
}
|
||||
virtual const FFState* EmptyHypothesisState(const InputType &input) const {
|
||||
return new BilingualLMState(0);
|
||||
}
|
||||
|
||||
void EvaluateInIsolation(const Phrase &source
|
||||
, const TargetPhrase &targetPhrase
|
||||
, ScoreComponentCollection &scoreBreakdown
|
||||
, ScoreComponentCollection &estimatedFutureScore) const;
|
||||
void EvaluateWithSourceContext(const InputType &input
|
||||
, const InputPath &inputPath
|
||||
, const TargetPhrase &targetPhrase
|
||||
, const StackVec *stackVec
|
||||
, ScoreComponentCollection &scoreBreakdown
|
||||
, ScoreComponentCollection *estimatedFutureScore = NULL) const;
|
||||
FFState* EvaluateWhenApplied(
|
||||
const Hypothesis& cur_hypo,
|
||||
const FFState* prev_state,
|
||||
ScoreComponentCollection* accumulator) const;
|
||||
FFState* EvaluateWhenApplied(
|
||||
const ChartHypothesis& /* cur_hypo */,
|
||||
int /* featureID - used to index the state in the previous hypotheses */,
|
||||
ScoreComponentCollection* accumulator) const;
|
||||
|
||||
void SetParameter(const std::string& key, const std::string& value);
|
||||
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user