00001
00002 #pragma once
00003
00004 #include "lm/word_index.hh"
00005 #include "search/applied.hh"
00006 #include "search/nbest.hh"
00007
00008 #include "moses/ChartCellCollection.h"
00009 #include "moses/ChartParser.h"
00010
00011 #include "BaseManager.h"
00012
00013 #include <vector>
00014 #include <string>
00015
00016 namespace Moses
00017 {
00018 class ScoreComponentCollection;
00019 class InputType;
00020 class LanguageModel;
00021
00022 namespace Incremental
00023 {
00024
00025 class Manager : public BaseManager
00026 {
00027 public:
00028 Manager(ttasksptr const& ttask);
00029
00030 ~Manager();
00031
00032 template <class Model> void LMCallback(const Model &model, const std::vector<lm::WordIndex> &words);
00033
00034 void Decode();
00035
00036 const std::vector<search::Applied> &GetNBest() const;
00037
00038
00039 const std::vector<search::Applied> &Completed() const {
00040 return *completed_nbest_;
00041 }
00042
00043
00044 void OutputBest(OutputCollector *collector) const;
00045 void OutputNBest(OutputCollector *collector) const;
00046 void OutputDetailedTranslationReport(OutputCollector *collector) const;
00047 void OutputNBestList(OutputCollector *collector, const std::vector<search::Applied> &nbest, long translationId) const;
00048 void OutputLatticeSamples(OutputCollector *collector) const {
00049 }
00050 void OutputAlignment(OutputCollector *collector) const {
00051 }
00052 void OutputDetailedTreeFragmentsTranslationReport(OutputCollector *collector) const;
00053 void OutputWordGraph(OutputCollector *collector) const {
00054 }
00055 void OutputSearchGraph(OutputCollector *collector) const {
00056 }
00057 void OutputSearchGraphSLF() const {
00058 }
00059
00060 void
00061 OutputSearchGraphAsHypergraph
00062 ( std::string const& fname, size_t const precision ) const
00063 { }
00064
00065
00066 private:
00067 template <class Model, class Best> search::History PopulateBest(const Model &model, const std::vector<lm::WordIndex> &words, Best &out);
00068
00069 ChartCellCollectionBase cells_;
00070 ChartParser parser_;
00071
00072
00073 search::SingleBest single_best_;
00074
00075
00076 std::vector<search::Applied> backing_for_single_;
00077
00078 search::NBest n_best_;
00079
00080 const std::vector<search::Applied> *completed_nbest_;
00081
00082
00083 void OutputDetailedTranslationReport(
00084 OutputCollector *collector,
00085 const search::Applied *applied,
00086 const Sentence &sentence,
00087 long translationId) const;
00088 void OutputTranslationOptions(std::ostream &out,
00089 ApplicationContext &applicationContext,
00090 const search::Applied *applied,
00091 const Sentence &sentence,
00092 long translationId) const;
00093 void OutputTranslationOption(std::ostream &out,
00094 ApplicationContext &applicationContext,
00095 const search::Applied *applied,
00096 const Sentence &sentence,
00097 long translationId) const;
00098 void ReconstructApplicationContext(const search::Applied *applied,
00099 const Sentence &sentence,
00100 ApplicationContext &context) const;
00101 void OutputTreeFragmentsTranslationOptions(std::ostream &out,
00102 ApplicationContext &applicationContext,
00103 const search::Applied *applied,
00104 const Sentence &sentence,
00105 long translationId) const;
00106 void OutputBestHypo(OutputCollector *collector, search::Applied applied, long translationId) const;
00107 void OutputBestNone(OutputCollector *collector, long translationId) const;
00108
00109 void OutputUnknowns(OutputCollector *collector) const {
00110 }
00111 void CalcDecoderStatistics() const {
00112 }
00113
00114 };
00115
00116
00117 void ToPhrase(const search::Applied final, Phrase &out);
00118
00119 void PhraseAndFeatures(const search::Applied final, Phrase &phrase, ScoreComponentCollection &features);
00120
00121
00122 }
00123 }
00124