diff options
author | Hieu Hoang <hieuhoang@gmail.com> | 2014-10-01 22:24:58 +0400 |
---|---|---|
committer | Hieu Hoang <hieuhoang@gmail.com> | 2014-10-01 22:24:58 +0400 |
commit | 00365257faadb9573fb97f113a83615fc7f99e70 (patch) | |
tree | e2943452561f8c598243f4d1c36e36170bd0c9d6 | |
parent | 8611dc8cdf2a0a0395c09dc511f86a0267f46554 (diff) |
merge TranslationTask and IOWrapper. Move m_unknownsStream into IOWrapper
-rw-r--r-- | moses-cmd/Main.cpp | 13 | ||||
-rw-r--r-- | moses/IOWrapper.cpp | 12 | ||||
-rw-r--r-- | moses/IOWrapper.h | 6 | ||||
-rw-r--r-- | moses/TranslationTask.cpp | 6 | ||||
-rw-r--r-- | moses/TranslationTask.h | 2 |
5 files changed, 20 insertions, 19 deletions
diff --git a/moses-cmd/Main.cpp b/moses-cmd/Main.cpp index 249b69704..f5382bb4d 100644 --- a/moses-cmd/Main.cpp +++ b/moses-cmd/Main.cpp @@ -198,18 +198,6 @@ int main(int argc, char** argv) alignmentInfoCollector.reset(new OutputCollector(ioWrapper->GetAlignmentOutputStream())); } - //initialise stream for unknown (oov) words - auto_ptr<OutputCollector> unknownsCollector; - auto_ptr<ofstream> unknownsStream; - if (!staticData.GetOutputUnknownsFile().empty()) { - unknownsStream.reset(new ofstream(staticData.GetOutputUnknownsFile().c_str())); - if (!unknownsStream->good()) { - TRACE_ERR("Unable to open " << staticData.GetOutputUnknownsFile() << " for unknowns"); - exit(1); - } - unknownsCollector.reset(new OutputCollector(unknownsStream.get())); - } - #ifdef WITH_THREADS ThreadPool pool(staticData.ThreadCount()); #endif @@ -232,7 +220,6 @@ int main(int argc, char** argv) searchGraphCollector.get(), detailedTranslationCollector.get(), alignmentInfoCollector.get(), - unknownsCollector.get(), staticData.GetOutputSearchGraphSLF(), hypergraphOutput); // execute task diff --git a/moses/IOWrapper.cpp b/moses/IOWrapper.cpp index 26d22a576..a153ac10c 100644 --- a/moses/IOWrapper.cpp +++ b/moses/IOWrapper.cpp @@ -94,9 +94,13 @@ IOWrapper::IOWrapper(const std::vector<FactorType> &inputFactorOrder ,m_outputSearchGraphStream(NULL) ,m_detailedTranslationReportingStream(NULL) ,m_alignmentOutputStream(NULL) + ,m_unknownsStream(NULL) ,m_singleBestOutputCollector(NULL) ,m_nBestOutputCollector(NULL) + ,m_unknownsCollector(NULL) { + const StaticData &staticData = StaticData::Instance(); + Initialization(inputFactorOrder, outputFactorOrder , inputFactorUsed , nBestSize, nBestFilePath); @@ -119,6 +123,14 @@ IOWrapper::IOWrapper(const std::vector<FactorType> &inputFactorOrder m_singleBestOutputCollector = new Moses::OutputCollector(&std::cout); } + if (!staticData.GetOutputUnknownsFile().empty()) { + m_unknownsStream = new std::ofstream(staticData.GetOutputUnknownsFile().c_str()); + m_unknownsCollector = new Moses::OutputCollector(m_unknownsStream); + UTIL_THROW_IF2(!m_unknownsStream->good(), + "File for unknowns words could not be opened: " << + staticData.GetOutputUnknownsFile()); + } + } IOWrapper::~IOWrapper() diff --git a/moses/IOWrapper.h b/moses/IOWrapper.h index ceb7c6a34..98e4305eb 100644 --- a/moses/IOWrapper.h +++ b/moses/IOWrapper.h @@ -79,10 +79,13 @@ protected: ,*m_outputWordGraphStream,*m_outputSearchGraphStream; std::ostream *m_detailedTranslationReportingStream; std::ofstream *m_alignmentOutputStream; + std::ostream *m_unknownsStream; + bool m_surpressSingleBestOutput; Moses::OutputCollector *m_singleBestOutputCollector; Moses::OutputCollector *m_nBestOutputCollector; + Moses::OutputCollector *m_unknownsCollector; void Initialization(const std::vector<Moses::FactorType> &inputFactorOrder , const std::vector<Moses::FactorType> &outputFactorOrder @@ -140,6 +143,9 @@ public: return m_nBestOutputCollector; } + Moses::OutputCollector *GetUnknownsCollector() { + return m_unknownsCollector; + } }; IOWrapper *GetIOWrapper(const Moses::StaticData &staticData); diff --git a/moses/TranslationTask.cpp b/moses/TranslationTask.cpp index b0f257ce0..cc3f576fd 100644 --- a/moses/TranslationTask.cpp +++ b/moses/TranslationTask.cpp @@ -20,7 +20,6 @@ TranslationTask::TranslationTask(size_t lineNumber, InputType* source, MosesCmd: OutputCollector* wordGraphCollector, OutputCollector* searchGraphCollector, OutputCollector* detailedTranslationCollector, OutputCollector* alignmentInfoCollector, - OutputCollector* unknownsCollector, bool outputSearchGraphSLF, boost::shared_ptr<HypergraphOutput<Manager> > hypergraphOutput) : m_source(source), m_lineNumber(lineNumber), @@ -29,7 +28,6 @@ TranslationTask::TranslationTask(size_t lineNumber, InputType* source, MosesCmd: m_wordGraphCollector(wordGraphCollector), m_searchGraphCollector(searchGraphCollector), m_detailedTranslationCollector(detailedTranslationCollector), m_alignmentInfoCollector(alignmentInfoCollector), - m_unknownsCollector(unknownsCollector), m_outputSearchGraphSLF(outputSearchGraphSLF), m_hypergraphOutput(hypergraphOutput) {} @@ -276,14 +274,14 @@ void TranslationTask::Run() { } //list of unknown words - if (m_unknownsCollector) { + if (m_ioWrapper.GetUnknownsCollector()) { const vector<const Phrase*>& unknowns = manager.getSntTranslationOptions()->GetUnknownSources(); ostringstream out; for (size_t i = 0; i < unknowns.size(); ++i) { out << *(unknowns[i]); } out << endl; - m_unknownsCollector->Write(m_lineNumber, out.str()); + m_ioWrapper.GetUnknownsCollector()->Write(m_lineNumber, out.str()); } // report additional statistics diff --git a/moses/TranslationTask.h b/moses/TranslationTask.h index d9f03d62b..40853e6a7 100644 --- a/moses/TranslationTask.h +++ b/moses/TranslationTask.h @@ -31,7 +31,6 @@ public: Moses::OutputCollector* wordGraphCollector, Moses::OutputCollector* searchGraphCollector, Moses::OutputCollector* detailedTranslationCollector, Moses::OutputCollector* alignmentInfoCollector, - Moses::OutputCollector* unknownsCollector, bool outputSearchGraphSLF, boost::shared_ptr<Moses::HypergraphOutput<Moses::Manager> > hypergraphOutput); @@ -52,7 +51,6 @@ private: Moses::OutputCollector* m_searchGraphCollector; Moses::OutputCollector* m_detailedTranslationCollector; Moses::OutputCollector* m_alignmentInfoCollector; - Moses::OutputCollector* m_unknownsCollector; bool m_outputSearchGraphSLF; boost::shared_ptr<Moses::HypergraphOutput<Moses::Manager> > m_hypergraphOutput; std::ofstream *m_alignmentStream; |