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:
-rw-r--r--moses-cmd/Main.cpp8
-rw-r--r--moses/IOWrapper.cpp21
-rw-r--r--moses/IOWrapper.h9
-rw-r--r--moses/TranslationTask.cpp8
-rw-r--r--moses/TranslationTask.h3
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;