| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| #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; |
|
|
| }; |
|
|
| } |
|
|