Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/moses-smt/mosesdecoder.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHieu Hoang <hieuhoang@gmail.com>2014-10-01 22:24:58 +0400
committerHieu Hoang <hieuhoang@gmail.com>2014-10-01 22:24:58 +0400
commit00365257faadb9573fb97f113a83615fc7f99e70 (patch)
treee2943452561f8c598243f4d1c36e36170bd0c9d6
parent8611dc8cdf2a0a0395c09dc511f86a0267f46554 (diff)
merge TranslationTask and IOWrapper. Move m_unknownsStream into IOWrapper
-rw-r--r--moses-cmd/Main.cpp13
-rw-r--r--moses/IOWrapper.cpp12
-rw-r--r--moses/IOWrapper.h6
-rw-r--r--moses/TranslationTask.cpp6
-rw-r--r--moses/TranslationTask.h2
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;