|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once |
|
|
|
#include "ChartTranslationOptions.h" |
|
#include "ChartParserCallback.h" |
|
#include "StackVec.h" |
|
|
|
#include <vector> |
|
|
|
namespace Moses |
|
{ |
|
|
|
class TargetPhraseCollection; |
|
class Range; |
|
class InputType; |
|
class InputPath; |
|
class ChartCellLabel; |
|
|
|
|
|
class ChartTranslationOptionList : public ChartParserCallback |
|
{ |
|
friend std::ostream& operator<<(std::ostream&, const ChartTranslationOptionList&); |
|
|
|
public: |
|
ChartTranslationOptionList(size_t ruleLimit, const InputType &input); |
|
~ChartTranslationOptionList(); |
|
|
|
const ChartTranslationOptions &Get(size_t i) const { |
|
return *m_collection[i]; |
|
} |
|
|
|
|
|
size_t GetSize() const { |
|
return m_size; |
|
} |
|
|
|
void Add(const TargetPhraseCollection &, const StackVec &, |
|
const Range &); |
|
|
|
void AddPhraseOOV(TargetPhrase &phrase, std::list<TargetPhraseCollection::shared_ptr > &waste_memory, const Range &range); |
|
|
|
bool Empty() const { |
|
return m_size == 0; |
|
} |
|
|
|
float GetBestScore(const ChartCellLabel *chartCell) const; |
|
|
|
void Clear(); |
|
void ApplyThreshold(float threshold); |
|
void EvaluateWithSourceContext(const InputType &input, const InputPath &inputPath); |
|
|
|
private: |
|
typedef std::vector<ChartTranslationOptions*> CollType; |
|
|
|
struct ScoreThresholdPred { |
|
ScoreThresholdPred(float threshold) : m_thresholdScore(threshold) {} |
|
bool operator()(const ChartTranslationOptions *option) { |
|
return option->GetEstimateOfBestScore() >= m_thresholdScore; |
|
} |
|
float m_thresholdScore; |
|
}; |
|
|
|
void SwapTranslationOptions(size_t a, size_t b); |
|
|
|
CollType m_collection; |
|
size_t m_size; |
|
float m_scoreThreshold; |
|
const size_t m_ruleLimit; |
|
|
|
}; |
|
|
|
} |
|
|