|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once |
|
|
|
|
|
#include <vector> |
|
|
#include <boost/unordered_map.hpp> |
|
|
#include "ChartCell.h" |
|
|
#include "ChartCellCollection.h" |
|
|
#include "Range.h" |
|
|
#include "SentenceStats.h" |
|
|
#include "ChartTranslationOptionList.h" |
|
|
#include "ChartParser.h" |
|
|
#include "ChartKBestExtractor.h" |
|
|
#include "BaseManager.h" |
|
|
#include "moses/Syntax/KBestExtractor.h" |
|
|
|
|
|
namespace Moses |
|
|
{ |
|
|
|
|
|
class ChartHypothesis; |
|
|
class ChartSearchGraphWriter; |
|
|
|
|
|
|
|
|
|
|
|
class ChartManager : public BaseManager |
|
|
{ |
|
|
private: |
|
|
ChartCellCollection m_hypoStackColl; |
|
|
std::auto_ptr<SentenceStats> m_sentenceStats; |
|
|
clock_t m_start; |
|
|
unsigned m_hypothesisId; |
|
|
|
|
|
ChartParser m_parser; |
|
|
|
|
|
ChartTranslationOptionList m_translationOptionList; |
|
|
|
|
|
|
|
|
void FindReachableHypotheses( |
|
|
const ChartHypothesis *hypo, std::map<unsigned,bool> &reachable , size_t* winners, size_t* losers) const; |
|
|
void WriteSearchGraph(const ChartSearchGraphWriter& writer) const; |
|
|
|
|
|
|
|
|
void OutputNBestList(OutputCollector *collector, |
|
|
const ChartKBestExtractor::KBestVec &nBestList, |
|
|
long translationId) const; |
|
|
size_t CalcSourceSize(const Moses::ChartHypothesis *hypo) const; |
|
|
size_t OutputAlignmentNBest(Alignments &retAlign, |
|
|
const Moses::ChartKBestExtractor::Derivation &derivation, |
|
|
size_t startTarget) const; |
|
|
size_t OutputAlignment(Alignments &retAlign, |
|
|
const Moses::ChartHypothesis *hypo, |
|
|
size_t startTarget) const; |
|
|
void OutputDetailedTranslationReport( |
|
|
OutputCollector *collector, |
|
|
const ChartHypothesis *hypo, |
|
|
const Sentence &sentence, |
|
|
long translationId) const; |
|
|
void OutputTranslationOptions(std::ostream &out, |
|
|
ApplicationContext &applicationContext, |
|
|
const ChartHypothesis *hypo, |
|
|
const Sentence &sentence, |
|
|
long translationId) const; |
|
|
void OutputTranslationOption(std::ostream &out, |
|
|
ApplicationContext &applicationContext, |
|
|
const ChartHypothesis *hypo, |
|
|
const Sentence &sentence, |
|
|
long translationId) const; |
|
|
void ReconstructApplicationContext(const ChartHypothesis &hypo, |
|
|
const Sentence &sentence, |
|
|
ApplicationContext &context) const; |
|
|
void OutputTreeFragmentsTranslationOptions(std::ostream &out, |
|
|
ApplicationContext &applicationContext, |
|
|
const ChartHypothesis *hypo, |
|
|
const Sentence &sentence, |
|
|
long translationId) const; |
|
|
void OutputDetailedAllTranslationReport( |
|
|
OutputCollector *collector, |
|
|
const std::vector<boost::shared_ptr<Moses::ChartKBestExtractor::Derivation> > &nBestList, |
|
|
const Sentence &sentence, |
|
|
long translationId) const; |
|
|
void OutputBestHypo(OutputCollector *collector, const ChartHypothesis *hypo, long translationId) const; |
|
|
void Backtrack(const ChartHypothesis *hypo) const; |
|
|
|
|
|
public: |
|
|
ChartManager(ttasksptr const& ttask); |
|
|
~ChartManager(); |
|
|
void Decode(); |
|
|
void AddXmlChartOptions(); |
|
|
const ChartHypothesis *GetBestHypothesis() const; |
|
|
void CalcNBest(size_t n, std::vector<boost::shared_ptr<ChartKBestExtractor::Derivation> > &nBestList, bool onlyDistinct=false) const; |
|
|
|
|
|
|
|
|
void OutputSearchGraphMoses(std::ostream &outputSearchGraphStream) const; |
|
|
|
|
|
|
|
|
void OutputSearchGraphAsHypergraph(std::ostream &outputSearchGraphStream) const; |
|
|
|
|
|
|
|
|
SentenceStats& GetSentenceStats() const { |
|
|
return *m_sentenceStats; |
|
|
} |
|
|
|
|
|
|
|
|
const ChartCellCollection& GetChartCellCollection() const { |
|
|
return m_hypoStackColl; |
|
|
} |
|
|
|
|
|
void CalcDecoderStatistics() const { |
|
|
} |
|
|
|
|
|
void ResetSentenceStats(const InputType& source) { |
|
|
m_sentenceStats = std::auto_ptr<SentenceStats>(new SentenceStats(source)); |
|
|
} |
|
|
|
|
|
|
|
|
unsigned GetNextHypoId() { |
|
|
return m_hypothesisId++; |
|
|
} |
|
|
|
|
|
const ChartParser &GetParser() const { |
|
|
return m_parser; |
|
|
} |
|
|
|
|
|
|
|
|
void OutputBest(OutputCollector *collector) const; |
|
|
void OutputNBest(OutputCollector *collector) const; |
|
|
void OutputLatticeSamples(OutputCollector *collector) const { |
|
|
} |
|
|
void OutputAlignment(OutputCollector *collector) const; |
|
|
void OutputDetailedTranslationReport(OutputCollector *collector) const; |
|
|
void OutputUnknowns(OutputCollector *collector) const; |
|
|
void OutputDetailedTreeFragmentsTranslationReport(OutputCollector *collector) const; |
|
|
void OutputWordGraph(OutputCollector *collector) const { |
|
|
} |
|
|
void OutputSearchGraph(OutputCollector *collector) const; |
|
|
void OutputSearchGraphSLF() const { |
|
|
} |
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
} |
|
|
|
|
|
|