diff options
-rw-r--r-- | moses-cmd/Main.cpp | 8 | ||||
-rw-r--r-- | moses/IOWrapper.cpp | 21 | ||||
-rw-r--r-- | moses/IOWrapper.h | 9 | ||||
-rw-r--r-- | moses/TranslationTask.cpp | 8 | ||||
-rw-r--r-- | moses/TranslationTask.h | 3 |
5 files changed, 27 insertions, 22 deletions
diff --git a/moses-cmd/Main.cpp b/moses-cmd/Main.cpp index e00e1ee29..4cb507610 100644 --- a/moses-cmd/Main.cpp +++ b/moses-cmd/Main.cpp @@ -179,13 +179,6 @@ int main(int argc, char** argv) wordGraphCollector.reset(new OutputCollector(&(ioWrapper->GetOutputWordGraphStream()))); } - // initialize stream for search graph - // note: this is essentially the same as above, but in a different format - auto_ptr<OutputCollector> searchGraphCollector; - if (staticData.GetOutputSearchGraph()) { - searchGraphCollector.reset(new OutputCollector(&(ioWrapper->GetOutputSearchGraphStream()))); - } - // initialize stram for details about the decoder run auto_ptr<OutputCollector> detailedTranslationCollector; if (staticData.IsDetailedTranslationReportingEnabled()) { @@ -211,7 +204,6 @@ int main(int argc, char** argv) new TranslationTask(lineCount,source, *ioWrapper, latticeSamplesCollector.get(), wordGraphCollector.get(), - searchGraphCollector.get(), detailedTranslationCollector.get(), staticData.GetOutputSearchGraphSLF(), hypergraphOutput); diff --git a/moses/IOWrapper.cpp b/moses/IOWrapper.cpp index 1053ece5d..3186daad2 100644 --- a/moses/IOWrapper.cpp +++ b/moses/IOWrapper.cpp @@ -89,15 +89,18 @@ IOWrapper::IOWrapper(const std::vector<FactorType> &inputFactorOrder ,m_inputFilePath(inputFilePath) ,m_inputFile(new InputFileStream(inputFilePath)) ,m_nBestStream(NULL) + ,m_outputWordGraphStream(NULL) ,m_outputSearchGraphStream(NULL) ,m_detailedTranslationReportingStream(NULL) ,m_unknownsStream(NULL) ,m_alignmentInfoStream(NULL) + ,m_singleBestOutputCollector(NULL) ,m_nBestOutputCollector(NULL) ,m_unknownsCollector(NULL) ,m_alignmentInfoCollector(NULL) + ,m_searchGraphOutputCollector(NULL) { const StaticData &staticData = StaticData::Instance(); @@ -138,6 +141,14 @@ IOWrapper::IOWrapper(const std::vector<FactorType> &inputFactorOrder "File for alignment output could not be opened: " << staticData.GetAlignmentOutputFile()); } + if (staticData.GetOutputSearchGraph()) { + string fileName = staticData.GetParam("output-search-graph")[0]; + std::ofstream *file = new std::ofstream; + m_outputSearchGraphStream = file; + file->open(fileName.c_str()); + m_searchGraphOutputCollector = new Moses::OutputCollector(m_outputSearchGraphStream); + } + } IOWrapper::~IOWrapper() @@ -148,19 +159,17 @@ IOWrapper::~IOWrapper() // outputting n-best to file, rather than stdout. need to close file and delete obj delete m_nBestStream; } - if (m_outputWordGraphStream != NULL) { - delete m_outputWordGraphStream; - } - if (m_outputSearchGraphStream != NULL) { - delete m_outputSearchGraphStream; - } + delete m_detailedTranslationReportingStream; delete m_alignmentInfoStream; delete m_unknownsStream; + delete m_outputSearchGraphStream; + delete m_outputWordGraphStream; delete m_singleBestOutputCollector; delete m_nBestOutputCollector; delete m_alignmentInfoCollector; + delete m_searchGraphOutputCollector; } diff --git a/moses/IOWrapper.h b/moses/IOWrapper.h index fcdd9f1c1..edaca9f8d 100644 --- a/moses/IOWrapper.h +++ b/moses/IOWrapper.h @@ -76,10 +76,11 @@ protected: Moses::InputFileStream *m_inputFile; std::istream *m_inputStream; std::ostream *m_nBestStream - ,*m_outputWordGraphStream,*m_outputSearchGraphStream; + ,*m_outputWordGraphStream; std::ostream *m_detailedTranslationReportingStream; std::ofstream *m_alignmentInfoStream; - std::ostream *m_unknownsStream; + std::ostream *m_unknownsStream; + std::ostream *m_outputSearchGraphStream; bool m_surpressSingleBestOutput; @@ -87,6 +88,7 @@ protected: Moses::OutputCollector *m_nBestOutputCollector; Moses::OutputCollector *m_unknownsCollector; Moses::OutputCollector *m_alignmentInfoCollector; + Moses::OutputCollector *m_searchGraphOutputCollector; void Initialization(const std::vector<Moses::FactorType> &inputFactorOrder , const std::vector<Moses::FactorType> &outputFactorOrder @@ -148,6 +150,9 @@ public: return m_alignmentInfoCollector; } + Moses::OutputCollector *GetSearchGraphOutputCollector() { + return m_searchGraphOutputCollector; + } }; diff --git a/moses/TranslationTask.cpp b/moses/TranslationTask.cpp index 44f74e4fc..9b22ab344 100644 --- a/moses/TranslationTask.cpp +++ b/moses/TranslationTask.cpp @@ -17,14 +17,14 @@ namespace MosesCmd TranslationTask::TranslationTask(size_t lineNumber, InputType* source, MosesCmd::IOWrapper &ioWrapper, OutputCollector* latticeSamplesCollector, - OutputCollector* wordGraphCollector, OutputCollector* searchGraphCollector, + OutputCollector* wordGraphCollector, OutputCollector* detailedTranslationCollector, bool outputSearchGraphSLF, boost::shared_ptr<HypergraphOutput<Manager> > hypergraphOutput) : m_source(source), m_lineNumber(lineNumber), m_ioWrapper(ioWrapper), m_latticeSamplesCollector(latticeSamplesCollector), - m_wordGraphCollector(wordGraphCollector), m_searchGraphCollector(searchGraphCollector), + m_wordGraphCollector(wordGraphCollector), m_detailedTranslationCollector(detailedTranslationCollector), m_outputSearchGraphSLF(outputSearchGraphSLF), m_hypergraphOutput(hypergraphOutput) @@ -73,11 +73,11 @@ void TranslationTask::Run() { } // output search graph - if (m_searchGraphCollector) { + if (m_ioWrapper.GetSearchGraphOutputCollector()) { ostringstream out; fix(out,PRECISION); manager.OutputSearchGraph(m_lineNumber, out); - m_searchGraphCollector->Write(m_lineNumber, out.str()); + m_ioWrapper.GetSearchGraphOutputCollector()->Write(m_lineNumber, out.str()); #ifdef HAVE_PROTOBUF if (staticData.GetOutputSearchGraphPB()) { diff --git a/moses/TranslationTask.h b/moses/TranslationTask.h index f787b0a84..db642705b 100644 --- a/moses/TranslationTask.h +++ b/moses/TranslationTask.h @@ -28,7 +28,7 @@ public: TranslationTask(size_t lineNumber, Moses::InputType* source, MosesCmd::IOWrapper &ioWrapper, Moses::OutputCollector* latticeSamplesCollector, - Moses::OutputCollector* wordGraphCollector, Moses::OutputCollector* searchGraphCollector, + Moses::OutputCollector* wordGraphCollector, Moses::OutputCollector* detailedTranslationCollector, bool outputSearchGraphSLF, boost::shared_ptr<Moses::HypergraphOutput<Moses::Manager> > hypergraphOutput); @@ -47,7 +47,6 @@ private: Moses::OutputCollector* m_latticeSamplesCollector; Moses::OutputCollector* m_wordGraphCollector; - Moses::OutputCollector* m_searchGraphCollector; Moses::OutputCollector* m_detailedTranslationCollector; bool m_outputSearchGraphSLF; boost::shared_ptr<Moses::HypergraphOutput<Moses::Manager> > m_hypergraphOutput; |