mirror of
https://github.com/moses-smt/mosesdecoder.git
synced 2024-12-28 14:32:38 +03:00
port Options framework
This commit is contained in:
parent
75bdad21ba
commit
6bc6403b9d
@ -72,7 +72,7 @@ Hypotheses &HypothesisColl::GetSortedAndPruneHypos(const ManagerBase &mgr,
|
|||||||
void HypothesisColl::SortAndPruneHypos(const ManagerBase &mgr,
|
void HypothesisColl::SortAndPruneHypos(const ManagerBase &mgr,
|
||||||
ArcLists &arcLists) const
|
ArcLists &arcLists) const
|
||||||
{
|
{
|
||||||
size_t stackSize = mgr.system.stackSize;
|
size_t stackSize = mgr.system.options.search.stack_size;
|
||||||
Recycler<HypothesisBase*> &recycler = mgr.GetHypoRecycle();
|
Recycler<HypothesisBase*> &recycler = mgr.GetHypoRecycle();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -77,7 +77,7 @@ void QueueItem::CreateHypothesis(Manager &mgr)
|
|||||||
hypo->Init(mgr, *prevHypo, edge->path, tp, edge->newBitmap,
|
hypo->Init(mgr, *prevHypo, edge->path, tp, edge->newBitmap,
|
||||||
edge->estimatedScore);
|
edge->estimatedScore);
|
||||||
|
|
||||||
if (!mgr.system.cubePruningLazyScoring) {
|
if (!mgr.system.options.cube.lazy_scoring) {
|
||||||
hypo->EvaluateWhenApplied();
|
hypo->EvaluateWhenApplied();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -118,7 +118,7 @@ void Search::Decode(size_t stackInd)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
size_t pops = 0;
|
size_t pops = 0;
|
||||||
while (!m_queue.empty() && pops < mgr.system.popLimit) {
|
while (!m_queue.empty() && pops < mgr.system.options.cube.pop_limit) {
|
||||||
// get best hypo from queue, add to stack
|
// get best hypo from queue, add to stack
|
||||||
//cerr << "queue=" << queue.size() << endl;
|
//cerr << "queue=" << queue.size() << endl;
|
||||||
QueueItem *item = m_queue.top();
|
QueueItem *item = m_queue.top();
|
||||||
@ -129,7 +129,7 @@ void Search::Decode(size_t stackInd)
|
|||||||
// add hypo to stack
|
// add hypo to stack
|
||||||
Hypothesis *hypo = item->hypo;
|
Hypothesis *hypo = item->hypo;
|
||||||
|
|
||||||
if (mgr.system.cubePruningLazyScoring) {
|
if (mgr.system.options.cube.lazy_scoring) {
|
||||||
hypo->EvaluateWhenApplied();
|
hypo->EvaluateWhenApplied();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -142,7 +142,7 @@ void Search::Decode(size_t stackInd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// create hypo from every edge. Increase diversity
|
// create hypo from every edge. Increase diversity
|
||||||
if (mgr.system.cubePruningDiversity) {
|
if (mgr.system.options.cube.diversity) {
|
||||||
while (!m_queue.empty()) {
|
while (!m_queue.empty()) {
|
||||||
QueueItem *item = m_queue.top();
|
QueueItem *item = m_queue.top();
|
||||||
m_queue.pop();
|
m_queue.pop();
|
||||||
|
@ -21,7 +21,7 @@ void InputPaths::Init(const Sentence &input, const ManagerBase &mgr)
|
|||||||
MemPool &pool = mgr.GetPool();
|
MemPool &pool = mgr.GetPool();
|
||||||
size_t numPt = mgr.system.mappings.size();
|
size_t numPt = mgr.system.mappings.size();
|
||||||
size_t size = input.GetSize();
|
size_t size = input.GetSize();
|
||||||
size_t maxLength = min(size, mgr.system.maxPhraseLength);
|
size_t maxLength = min(size, mgr.system.options.search.max_phrase_length);
|
||||||
|
|
||||||
m_matrix = new (pool.Allocate<Matrix<InputPath*> >()) Matrix<InputPath*>(pool,
|
m_matrix = new (pool.Allocate<Matrix<InputPath*> >()) Matrix<InputPath*>(pool,
|
||||||
size, maxLength);
|
size, maxLength);
|
||||||
|
@ -70,7 +70,7 @@ void Manager::Init()
|
|||||||
|
|
||||||
m_bitmaps->Init(m_input->GetSize(), vector<bool>(0));
|
m_bitmaps->Init(m_input->GetSize(), vector<bool>(0));
|
||||||
|
|
||||||
switch (system.searchAlgorithm) {
|
switch (system.options.search.algo) {
|
||||||
case Normal:
|
case Normal:
|
||||||
m_search = new SearchNormal(*this);
|
m_search = new SearchNormal(*this);
|
||||||
break;
|
break;
|
||||||
|
@ -39,11 +39,11 @@ bool Search::CanExtend(const Bitmap &hypoBitmap, size_t hypoRangeEndPos,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mgr.system.maxDistortion >= 0) {
|
if (mgr.system.options.reordering.max_distortion >= 0) {
|
||||||
// distortion limit
|
// distortion limit
|
||||||
int distortion = ComputeDistortionDistance(hypoRangeEndPos,
|
int distortion = ComputeDistortionDistance(hypoRangeEndPos,
|
||||||
pathRange.GetStartPos());
|
pathRange.GetStartPos());
|
||||||
if (distortion > mgr.system.maxDistortion) {
|
if (distortion > mgr.system.options.reordering.max_distortion) {
|
||||||
//cerr << " NO" << endl;
|
//cerr << " NO" << endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -97,7 +97,7 @@ bool Search::CanExtend(const Bitmap &hypoBitmap, size_t hypoRangeEndPos,
|
|||||||
Range bestNextExtension(hypoFirstGapPos, hypoFirstGapPos);
|
Range bestNextExtension(hypoFirstGapPos, hypoFirstGapPos);
|
||||||
|
|
||||||
if (ComputeDistortionDistance(pathRange.GetEndPos(),
|
if (ComputeDistortionDistance(pathRange.GetEndPos(),
|
||||||
bestNextExtension.GetStartPos()) > mgr.system.maxDistortion) {
|
bestNextExtension.GetStartPos()) > mgr.system.options.reordering.max_distortion) {
|
||||||
//cerr << " NO" << endl;
|
//cerr << " NO" << endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,7 @@ void InputPaths::Init(const Sentence &input, const ManagerBase &mgr)
|
|||||||
MemPool &pool = mgr.GetPool();
|
MemPool &pool = mgr.GetPool();
|
||||||
size_t numPt = mgr.system.mappings.size();
|
size_t numPt = mgr.system.mappings.size();
|
||||||
size_t size = input.GetSize();
|
size_t size = input.GetSize();
|
||||||
size_t maxLength = min(size, mgr.system.maxPhraseLength);
|
size_t maxLength = min(size, mgr.system.options.search.max_phrase_length);
|
||||||
|
|
||||||
m_matrix = new (pool.Allocate<Matrix<InputPath*> >()) Matrix<InputPath*>(pool,
|
m_matrix = new (pool.Allocate<Matrix<InputPath*> >()) Matrix<InputPath*>(pool,
|
||||||
size, maxLength);
|
size, maxLength);
|
||||||
|
@ -23,21 +23,11 @@ namespace Moses2
|
|||||||
System::System(const Parameter ¶msArg) :
|
System::System(const Parameter ¶msArg) :
|
||||||
params(paramsArg), featureFunctions(*this)
|
params(paramsArg), featureFunctions(*this)
|
||||||
{
|
{
|
||||||
|
options.init(paramsArg);
|
||||||
|
|
||||||
bestCollector.reset(new OutputCollector());
|
bestCollector.reset(new OutputCollector());
|
||||||
|
|
||||||
ini_performance_options();
|
ini_performance_options();
|
||||||
params.SetParameter(stackSize, "stack", DEFAULT_MAX_HYPOSTACK_SIZE);
|
|
||||||
params.SetParameter(maxDistortion, "distortion-limit", -1);
|
|
||||||
params.SetParameter(maxPhraseLength, "max-phrase-length",
|
|
||||||
DEFAULT_MAX_PHRASE_LENGTH);
|
|
||||||
params.SetParameter(searchAlgorithm, "search-algorithm", Normal);
|
|
||||||
params.SetParameter(popLimit, "cube-pruning-pop-limit",
|
|
||||||
DEFAULT_CUBE_PRUNING_POP_LIMIT);
|
|
||||||
params.SetParameter(cubePruningDiversity, "cube-pruning-diversity",
|
|
||||||
(size_t) 0);
|
|
||||||
params.SetParameter(cubePruningLazyScoring, "cube-pruning-lazy-scoring",
|
|
||||||
false);
|
|
||||||
|
|
||||||
params.SetParameter(cpuAffinityOffset, "cpu-affinity-offset", 0);
|
params.SetParameter(cpuAffinityOffset, "cpu-affinity-offset", 0);
|
||||||
params.SetParameter(cpuAffinityOffsetIncr, "cpu-affinity-increment", 1);
|
params.SetParameter(cpuAffinityOffsetIncr, "cpu-affinity-increment", 1);
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
#include "TypeDef.h"
|
#include "TypeDef.h"
|
||||||
#include "legacy/Bitmaps.h"
|
#include "legacy/Bitmaps.h"
|
||||||
#include "legacy/OutputCollector.h"
|
#include "legacy/OutputCollector.h"
|
||||||
|
#include "parameters/AllOptions.h"
|
||||||
|
|
||||||
namespace Moses2
|
namespace Moses2
|
||||||
{
|
{
|
||||||
@ -37,6 +38,7 @@ class System
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
const Parameter ¶ms;
|
const Parameter ¶ms;
|
||||||
|
AllOptions options;
|
||||||
FeatureFunctions featureFunctions;
|
FeatureFunctions featureFunctions;
|
||||||
Weights weights;
|
Weights weights;
|
||||||
std::vector<const PhraseTable*> mappings;
|
std::vector<const PhraseTable*> mappings;
|
||||||
@ -44,16 +46,8 @@ public:
|
|||||||
mutable boost::shared_ptr<OutputCollector> bestCollector, nbestCollector;
|
mutable boost::shared_ptr<OutputCollector> bestCollector, nbestCollector;
|
||||||
|
|
||||||
// moses.ini params
|
// moses.ini params
|
||||||
size_t stackSize;
|
|
||||||
int maxDistortion;
|
|
||||||
size_t maxPhraseLength;
|
|
||||||
int numThreads;
|
int numThreads;
|
||||||
|
|
||||||
SearchAlgorithm searchAlgorithm;
|
|
||||||
size_t popLimit;
|
|
||||||
size_t cubePruningDiversity;
|
|
||||||
bool cubePruningLazyScoring;
|
|
||||||
|
|
||||||
size_t nbestSize;
|
size_t nbestSize;
|
||||||
bool distinctNBest;
|
bool distinctNBest;
|
||||||
|
|
||||||
|
@ -140,7 +140,7 @@ void PhraseTableMemory::Load(System &system)
|
|||||||
Phrase *source;
|
Phrase *source;
|
||||||
TargetPhrase *target;
|
TargetPhrase *target;
|
||||||
|
|
||||||
switch (system.searchAlgorithm) {
|
switch (system.options.search.algo) {
|
||||||
case Normal:
|
case Normal:
|
||||||
case CubePruning:
|
case CubePruning:
|
||||||
case CubePruningPerMiniStack:
|
case CubePruningPerMiniStack:
|
||||||
|
@ -11,7 +11,7 @@ namespace Moses2
|
|||||||
TranslationTask::TranslationTask(System &system, const std::string &line,
|
TranslationTask::TranslationTask(System &system, const std::string &line,
|
||||||
long translationId)
|
long translationId)
|
||||||
{
|
{
|
||||||
if (system.searchAlgorithm == CYKPlus) {
|
if (system.options.search.algo == CYKPlus) {
|
||||||
m_mgr = new SCFG::Manager(system, *this, line, translationId);
|
m_mgr = new SCFG::Manager(system, *this, line, translationId);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
Loading…
Reference in New Issue
Block a user