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--contrib/other-builds/moses-chart-cmd/.project10
-rw-r--r--moses-chart-cmd/Jamfile2
-rw-r--r--moses-chart-cmd/Main.cpp127
-rw-r--r--moses-chart-cmd/TranslationTask.cpp118
-rw-r--r--moses-chart-cmd/TranslationTask.h41
-rw-r--r--moses-cmd/TranslationTask.cpp4
-rw-r--r--moses-cmd/TranslationTask.h4
7 files changed, 178 insertions, 128 deletions
diff --git a/contrib/other-builds/moses-chart-cmd/.project b/contrib/other-builds/moses-chart-cmd/.project
index 16eb28b21..8ef6c9b35 100644
--- a/contrib/other-builds/moses-chart-cmd/.project
+++ b/contrib/other-builds/moses-chart-cmd/.project
@@ -102,6 +102,16 @@
<locationURI>PARENT-3-PROJECT_LOC/moses-chart-cmd/Main.h</locationURI>
</link>
<link>
+ <name>TranslationTask.cpp</name>
+ <type>1</type>
+ <locationURI>PARENT-3-PROJECT_LOC/moses-chart-cmd/TranslationTask.cpp</locationURI>
+ </link>
+ <link>
+ <name>TranslationTask.h</name>
+ <type>1</type>
+ <locationURI>PARENT-3-PROJECT_LOC/moses-chart-cmd/TranslationTask.h</locationURI>
+ </link>
+ <link>
<name>mbr.cpp</name>
<type>1</type>
<locationURI>PARENT-3-PROJECT_LOC/moses-chart-cmd/mbr.cpp</locationURI>
diff --git a/moses-chart-cmd/Jamfile b/moses-chart-cmd/Jamfile
index fe84871c7..2c4909ef8 100644
--- a/moses-chart-cmd/Jamfile
+++ b/moses-chart-cmd/Jamfile
@@ -1,2 +1,2 @@
-exe moses_chart : Main.cpp mbr.cpp ../moses//moses $(TOP)//boost_iostreams ..//boost_filesystem ..//z ;
+exe moses_chart : Main.cpp mbr.cpp TranslationTask.cpp ../moses//moses $(TOP)//boost_iostreams ..//boost_filesystem ..//z ;
diff --git a/moses-chart-cmd/Main.cpp b/moses-chart-cmd/Main.cpp
index 5291738d5..9d10f7b52 100644
--- a/moses-chart-cmd/Main.cpp
+++ b/moses-chart-cmd/Main.cpp
@@ -57,140 +57,19 @@ POSSIBILITY OF SUCH DAMAGE.
#include "moses/ThreadPool.h"
#include "moses/ChartManager.h"
#include "moses/ChartHypothesis.h"
-#include "moses/Incremental.h"
#include "moses/FF/StatefulFeatureFunction.h"
#include "moses/FF/StatelessFeatureFunction.h"
#include "util/usage.hh"
#include "util/exception.hh"
+#include "TranslationTask.h"
+
+
using namespace std;
using namespace Moses;
using namespace MosesChartCmd;
-/**
- * Translates a sentence.
- **/
-class TranslationTask : public Task
-{
-public:
- TranslationTask(InputType *source, IOWrapperChart &ioWrapper,
- boost::shared_ptr<HypergraphOutput<ChartManager> > hypergraphOutput)
- : m_source(source)
- , m_ioWrapper(ioWrapper)
- , m_hypergraphOutput(hypergraphOutput) {
- }
-
- ~TranslationTask() {
- delete m_source;
- }
-
- void Run() {
- const StaticData &staticData = StaticData::Instance();
- const size_t translationId = m_source->GetTranslationId();
-
- VERBOSE(2,"\nTRANSLATING(" << translationId << "): " << *m_source);
-
- if (staticData.GetSearchAlgorithm() == ChartIncremental) {
- Incremental::Manager manager(*m_source);
- const std::vector<search::Applied> &nbest = manager.ProcessSentence();
- if (!nbest.empty()) {
- m_ioWrapper.OutputBestHypo(nbest[0], translationId);
- if (staticData.IsDetailedTranslationReportingEnabled()) {
- const Sentence &sentence = dynamic_cast<const Sentence &>(*m_source);
- m_ioWrapper.OutputDetailedTranslationReport(&nbest[0], sentence, translationId);
- }
- if (staticData.IsDetailedTreeFragmentsTranslationReportingEnabled()) {
- const Sentence &sentence = dynamic_cast<const Sentence &>(*m_source);
- m_ioWrapper.OutputDetailedTreeFragmentsTranslationReport(&nbest[0], sentence, translationId);
- }
- } else {
- m_ioWrapper.OutputBestNone(translationId);
- }
- if (staticData.GetNBestSize() > 0)
- m_ioWrapper.OutputNBestList(nbest, translationId);
- return;
- }
-
- ChartManager manager(translationId,*m_source);
- manager.ProcessSentence();
-
- UTIL_THROW_IF2(staticData.UseMBR(), "Cannot use MBR");
-
- // Output search graph in hypergraph format for Kenneth Heafield's lazy hypergraph decoder
- if (m_hypergraphOutput.get()) {
- m_hypergraphOutput->Write(manager);
- }
-
-
- // 1-best
- const ChartHypothesis *bestHypo = manager.GetBestHypothesis();
- m_ioWrapper.OutputBestHypo(bestHypo, translationId);
- IFVERBOSE(2) {
- PrintUserTime("Best Hypothesis Generation Time:");
- }
-
- if (!staticData.GetAlignmentOutputFile().empty()) {
- m_ioWrapper.OutputAlignment(translationId, bestHypo);
- }
-
- if (staticData.IsDetailedTranslationReportingEnabled()) {
- const Sentence &sentence = dynamic_cast<const Sentence &>(*m_source);
- m_ioWrapper.OutputDetailedTranslationReport(bestHypo, sentence, translationId);
- }
- if (staticData.IsDetailedTreeFragmentsTranslationReportingEnabled()) {
- const Sentence &sentence = dynamic_cast<const Sentence &>(*m_source);
- m_ioWrapper.OutputDetailedTreeFragmentsTranslationReport(bestHypo, sentence, translationId);
- }
- if (!staticData.GetOutputUnknownsFile().empty()) {
- m_ioWrapper.OutputUnknowns(manager.GetParser().GetUnknownSources(),
- translationId);
- }
-
- //DIMw
- if (staticData.IsDetailedAllTranslationReportingEnabled()) {
- const Sentence &sentence = dynamic_cast<const Sentence &>(*m_source);
- size_t nBestSize = staticData.GetNBestSize();
- std::vector<boost::shared_ptr<ChartKBestExtractor::Derivation> > nBestList;
- manager.CalcNBest(nBestSize, nBestList, staticData.GetDistinctNBest());
- m_ioWrapper.OutputDetailedAllTranslationReport(nBestList, manager, sentence, translationId);
- }
-
- // n-best
- size_t nBestSize = staticData.GetNBestSize();
- if (nBestSize > 0) {
- VERBOSE(2,"WRITING " << nBestSize << " TRANSLATION ALTERNATIVES TO " << staticData.GetNBestFilePath() << endl);
- std::vector<boost::shared_ptr<ChartKBestExtractor::Derivation> > nBestList;
- manager.CalcNBest(nBestSize, nBestList,staticData.GetDistinctNBest());
- m_ioWrapper.OutputNBestList(nBestList, translationId);
- IFVERBOSE(2) {
- PrintUserTime("N-Best Hypotheses Generation Time:");
- }
- }
-
- if (staticData.GetOutputSearchGraph()) {
- std::ostringstream out;
- manager.OutputSearchGraphMoses( out);
- OutputCollector *oc = m_ioWrapper.GetSearchGraphOutputCollector();
- UTIL_THROW_IF2(oc == NULL, "File for search graph output not specified");
- oc->Write(translationId, out.str());
- }
-
- IFVERBOSE(2) {
- PrintUserTime("Sentence Decoding Time:");
- }
- manager.CalcDecoderStatistics();
- }
-
-private:
- // Non-copyable: copy constructor and assignment operator not implemented.
- TranslationTask(const TranslationTask &);
- TranslationTask &operator=(const TranslationTask &);
-
- InputType *m_source;
- IOWrapperChart &m_ioWrapper;
- boost::shared_ptr<HypergraphOutput<ChartManager> > m_hypergraphOutput;
-};
bool ReadInput(IOWrapperChart &ioWrapper, InputTypeEnum inputType, InputType*& source)
{
diff --git a/moses-chart-cmd/TranslationTask.cpp b/moses-chart-cmd/TranslationTask.cpp
new file mode 100644
index 000000000..331288fb3
--- /dev/null
+++ b/moses-chart-cmd/TranslationTask.cpp
@@ -0,0 +1,118 @@
+#include "TranslationTask.h"
+#include "moses/Sentence.h"
+#include "moses/StaticData.h"
+#include "moses/Incremental.h"
+#include "moses/IOWrapperChart.h"
+#include "moses/OutputCollector.h"
+
+using namespace std;
+using namespace Moses;
+using namespace MosesChartCmd;
+
+TranslationTask::TranslationTask(InputType *source, IOWrapperChart &ioWrapper,
+boost::shared_ptr<HypergraphOutput<ChartManager> > hypergraphOutput)
+: m_source(source)
+, m_ioWrapper(ioWrapper)
+, m_hypergraphOutput(hypergraphOutput)
+{}
+
+TranslationTask::~TranslationTask() {
+ delete m_source;
+}
+
+void TranslationTask::Run() {
+const StaticData &staticData = StaticData::Instance();
+const size_t translationId = m_source->GetTranslationId();
+
+VERBOSE(2,"\nTRANSLATING(" << translationId << "): " << *m_source);
+
+if (staticData.GetSearchAlgorithm() == ChartIncremental) {
+ Incremental::Manager manager(*m_source);
+ const std::vector<search::Applied> &nbest = manager.ProcessSentence();
+ if (!nbest.empty()) {
+ m_ioWrapper.OutputBestHypo(nbest[0], translationId);
+ if (staticData.IsDetailedTranslationReportingEnabled()) {
+ const Sentence &sentence = dynamic_cast<const Sentence &>(*m_source);
+ m_ioWrapper.OutputDetailedTranslationReport(&nbest[0], sentence, translationId);
+ }
+ if (staticData.IsDetailedTreeFragmentsTranslationReportingEnabled()) {
+ const Sentence &sentence = dynamic_cast<const Sentence &>(*m_source);
+ m_ioWrapper.OutputDetailedTreeFragmentsTranslationReport(&nbest[0], sentence, translationId);
+ }
+ } else {
+ m_ioWrapper.OutputBestNone(translationId);
+ }
+ if (staticData.GetNBestSize() > 0)
+ m_ioWrapper.OutputNBestList(nbest, translationId);
+ return;
+}
+
+ChartManager manager(translationId,*m_source);
+manager.ProcessSentence();
+
+UTIL_THROW_IF2(staticData.UseMBR(), "Cannot use MBR");
+
+// Output search graph in hypergraph format for Kenneth Heafield's lazy hypergraph decoder
+if (m_hypergraphOutput.get()) {
+ m_hypergraphOutput->Write(manager);
+}
+
+
+// 1-best
+const ChartHypothesis *bestHypo = manager.GetBestHypothesis();
+m_ioWrapper.OutputBestHypo(bestHypo, translationId);
+IFVERBOSE(2) {
+ PrintUserTime("Best Hypothesis Generation Time:");
+}
+
+if (!staticData.GetAlignmentOutputFile().empty()) {
+ m_ioWrapper.OutputAlignment(translationId, bestHypo);
+}
+
+if (staticData.IsDetailedTranslationReportingEnabled()) {
+ const Sentence &sentence = dynamic_cast<const Sentence &>(*m_source);
+ m_ioWrapper.OutputDetailedTranslationReport(bestHypo, sentence, translationId);
+}
+if (staticData.IsDetailedTreeFragmentsTranslationReportingEnabled()) {
+ const Sentence &sentence = dynamic_cast<const Sentence &>(*m_source);
+ m_ioWrapper.OutputDetailedTreeFragmentsTranslationReport(bestHypo, sentence, translationId);
+}
+if (!staticData.GetOutputUnknownsFile().empty()) {
+ m_ioWrapper.OutputUnknowns(manager.GetParser().GetUnknownSources(),
+ translationId);
+}
+
+//DIMw
+if (staticData.IsDetailedAllTranslationReportingEnabled()) {
+ const Sentence &sentence = dynamic_cast<const Sentence &>(*m_source);
+ size_t nBestSize = staticData.GetNBestSize();
+ std::vector<boost::shared_ptr<ChartKBestExtractor::Derivation> > nBestList;
+ manager.CalcNBest(nBestSize, nBestList, staticData.GetDistinctNBest());
+ m_ioWrapper.OutputDetailedAllTranslationReport(nBestList, manager, sentence, translationId);
+}
+
+// n-best
+size_t nBestSize = staticData.GetNBestSize();
+if (nBestSize > 0) {
+ VERBOSE(2,"WRITING " << nBestSize << " TRANSLATION ALTERNATIVES TO " << staticData.GetNBestFilePath() << endl);
+ std::vector<boost::shared_ptr<ChartKBestExtractor::Derivation> > nBestList;
+ manager.CalcNBest(nBestSize, nBestList,staticData.GetDistinctNBest());
+ m_ioWrapper.OutputNBestList(nBestList, translationId);
+ IFVERBOSE(2) {
+ PrintUserTime("N-Best Hypotheses Generation Time:");
+ }
+}
+
+if (staticData.GetOutputSearchGraph()) {
+ std::ostringstream out;
+ manager.OutputSearchGraphMoses( out);
+ OutputCollector *oc = m_ioWrapper.GetSearchGraphOutputCollector();
+ UTIL_THROW_IF2(oc == NULL, "File for search graph output not specified");
+ oc->Write(translationId, out.str());
+}
+
+IFVERBOSE(2) {
+ PrintUserTime("Sentence Decoding Time:");
+}
+manager.CalcDecoderStatistics();
+}
diff --git a/moses-chart-cmd/TranslationTask.h b/moses-chart-cmd/TranslationTask.h
new file mode 100644
index 000000000..aefc8b9eb
--- /dev/null
+++ b/moses-chart-cmd/TranslationTask.h
@@ -0,0 +1,41 @@
+#pragma once
+
+#include <boost/smart_ptr/shared_ptr.hpp>
+#include "moses/ThreadPool.h"
+#include "moses/ChartManager.h"
+#include "moses/HypergraphOutput.h"
+
+namespace Moses
+{
+ class InputType;
+ class OutputCollector;
+}
+
+namespace MosesChartCmd
+{
+ class IOWrapperChart;
+}
+
+/**
+ * Translates a sentence.
+ **/
+class TranslationTask : public Moses::Task
+{
+public:
+ TranslationTask(Moses::InputType *source, MosesChartCmd::IOWrapperChart &ioWrapper,
+ boost::shared_ptr<Moses::HypergraphOutput<Moses::ChartManager> > hypergraphOutput);
+
+ ~TranslationTask();
+
+ void Run();
+
+private:
+ // Non-copyable: copy constructor and assignment operator not implemented.
+ TranslationTask(const TranslationTask &);
+ TranslationTask &operator=(const TranslationTask &);
+
+ Moses::InputType *m_source;
+ MosesChartCmd::IOWrapperChart &m_ioWrapper;
+ boost::shared_ptr<Moses::HypergraphOutput<Moses::ChartManager> > m_hypergraphOutput;
+};
+
diff --git a/moses-cmd/TranslationTask.cpp b/moses-cmd/TranslationTask.cpp
index f5864f75e..65e7e08bc 100644
--- a/moses-cmd/TranslationTask.cpp
+++ b/moses-cmd/TranslationTask.cpp
@@ -35,6 +35,10 @@ TranslationTask::TranslationTask(size_t lineNumber,
m_hypergraphOutput(hypergraphOutput)
{}
+TranslationTask::~TranslationTask() {
+ delete m_source;
+}
+
void TranslationTask::Run() {
// shorthand for "global data"
const StaticData &staticData = StaticData::Instance();
diff --git a/moses-cmd/TranslationTask.h b/moses-cmd/TranslationTask.h
index 84a6a8bf5..05b257a6a 100644
--- a/moses-cmd/TranslationTask.h
+++ b/moses-cmd/TranslationTask.h
@@ -34,9 +34,7 @@ public:
bool outputSearchGraphSLF,
boost::shared_ptr<Moses::HypergraphOutput<Moses::Manager> > hypergraphOutput);
- ~TranslationTask() {
- delete m_source;
- }
+ ~TranslationTask();
/** Translate one sentence
* gets called by main function implemented at end of this source file */