Skip to content

Commit

Permalink
add OutputSearchGraphHypergraph() to API framework. Move m_source to …
Browse files Browse the repository at this point in the history
…BaseManager
  • Loading branch information
hieuhoang committed Dec 5, 2014
1 parent 6a77fd0 commit 4b10c59
Show file tree
Hide file tree
Showing 18 changed files with 84 additions and 85 deletions.
4 changes: 2 additions & 2 deletions OnDiskPt/Jamfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
fakelib OnDiskPt : OnDiskWrapper.cpp SourcePhrase.cpp TargetPhrase.cpp Word.cpp Phrase.cpp PhraseNode.cpp TargetPhraseCollection.cpp Vocab.cpp OnDiskQuery.cpp ../moses//headers ;

exe CreateOnDiskPt : Main.cpp ../moses//moses OnDiskPt ;
exe queryOnDiskPt : queryOnDiskPt.cpp ../moses//moses OnDiskPt ;
exe CreateOnDiskPt : Main.cpp ..//boost_filesystem ../moses//moses OnDiskPt ;
exe queryOnDiskPt : queryOnDiskPt.cpp ..//boost_filesystem ../moses//moses OnDiskPt ;

26 changes: 13 additions & 13 deletions misc/Jamfile
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
exe processPhraseTable : GenerateTuples.cpp processPhraseTable.cpp ../moses//moses ;
exe processPhraseTable : GenerateTuples.cpp processPhraseTable.cpp ..//boost_filesystem ../moses//moses ;

exe processLexicalTable : processLexicalTable.cpp ../moses//moses ;
exe processLexicalTable : processLexicalTable.cpp ..//boost_filesystem ../moses//moses ;

exe queryPhraseTable : queryPhraseTable.cpp ../moses//moses ;
exe queryPhraseTable : queryPhraseTable.cpp ..//boost_filesystem ../moses//moses ;

exe queryLexicalTable : queryLexicalTable.cpp ../moses//moses ;
exe queryLexicalTable : queryLexicalTable.cpp ..//boost_filesystem ../moses//moses ;

exe generateSequences : GenerateSequences.cpp ../moses//moses ;
exe generateSequences : GenerateSequences.cpp ..//boost_filesystem ../moses//moses ;

exe TMining : TransliterationMining.cpp ../moses//moses ;
exe TMining : TransliterationMining.cpp ..//boost_filesystem ../moses//moses ;

exe 1-1-Extraction : 1-1-Extraction.cpp ../moses//moses ;
exe 1-1-Extraction : 1-1-Extraction.cpp ..//boost_filesystem ../moses//moses ;

exe prunePhraseTable : prunePhraseTable.cpp ../moses//moses ..//boost_program_options ;
exe prunePhraseTable : prunePhraseTable.cpp ..//boost_filesystem ../moses//moses ..//boost_program_options ;

local with-cmph = [ option.get "with-cmph" ] ;
if $(with-cmph) {
exe processPhraseTableMin : processPhraseTableMin.cpp ../moses//moses ;
exe processLexicalTableMin : processLexicalTableMin.cpp ../moses//moses ;
exe queryPhraseTableMin : queryPhraseTableMin.cpp ../moses//moses ;
exe processPhraseTableMin : processPhraseTableMin.cpp ..//boost_filesystem ../moses//moses ;
exe processLexicalTableMin : processLexicalTableMin.cpp ..//boost_filesystem ../moses//moses ;
exe queryPhraseTableMin : queryPhraseTableMin.cpp ..//boost_filesystem ../moses//moses ;

alias programsMin : processPhraseTableMin processLexicalTableMin queryPhraseTableMin ;
# alias programsMin : processPhraseTableMin processLexicalTableMin ;
Expand All @@ -29,8 +29,8 @@ else {

if [ option.get "with-probing-pt" : : "yes" ]
{
exe CreateProbingPT : CreateProbingPT.cpp ../moses//moses ;
exe QueryProbingPT : QueryProbingPT.cpp ../moses//moses ;
exe CreateProbingPT : CreateProbingPT.cpp ..//boost_filesystem ../moses//moses ;
exe QueryProbingPT : QueryProbingPT.cpp ..//boost_filesystem ../moses//moses ;

alias programsProbing : CreateProbingPT QueryProbingPT ;
}
Expand Down
18 changes: 2 additions & 16 deletions moses-cmd/Main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

#include "moses/IOWrapper.h"
#include "moses/Hypothesis.h"
#include "moses/HypergraphOutput.h"
#include "moses/Manager.h"
#include "moses/StaticData.h"
#include "moses/TypeDef.h"
Expand Down Expand Up @@ -139,18 +138,6 @@ int main(int argc, char** argv)
TRACE_ERR("\n");
}

boost::shared_ptr<HypergraphOutput<Manager> > hypergraphOutput;
boost::shared_ptr<HypergraphOutput<ChartManager> > hypergraphOutputChart;

if (staticData.GetOutputSearchGraphHypergraph()) {
if (staticData.IsChart()) {
hypergraphOutputChart.reset(new HypergraphOutput<ChartManager>(PRECISION));
}
else {
hypergraphOutput.reset(new HypergraphOutput<Manager>(PRECISION));
}
}

#ifdef WITH_THREADS
ThreadPool pool(staticData.ThreadCount());
#endif
Expand All @@ -170,12 +157,11 @@ int main(int argc, char** argv)
TranslationTask* task;
if (staticData.IsChart()) {
// scfg
task = new TranslationTask(source, *ioWrapper, hypergraphOutputChart);
task = new TranslationTask(source, *ioWrapper, 2);
}
else {
// pb
task = new TranslationTask(source, *ioWrapper,
hypergraphOutput);
task = new TranslationTask(source, *ioWrapper, 1);
}

// execute task
Expand Down
12 changes: 12 additions & 0 deletions moses/BaseManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
#include <iostream>
#include <string>
#include "ScoreComponentCollection.h"
#include "InputType.h"

namespace Moses
{
Expand All @@ -13,6 +14,11 @@ class OutputCollector;
class BaseManager
{
protected:
const InputType &m_source; /**< source sentence to be translated */

BaseManager(const InputType &source)
:m_source(source)
{}

// output
typedef std::vector<std::pair<Moses::Word, Moses::WordsRange> > ApplicationContext;
Expand Down Expand Up @@ -46,6 +52,11 @@ class BaseManager
}

public:
//! the input sentence being decoded
const InputType& GetSource() const {
return m_source;
}

virtual void Decode() = 0;
// outputs
virtual void OutputNBest(OutputCollector *collector) const = 0;
Expand All @@ -56,6 +67,7 @@ class BaseManager
virtual void OutputWordGraph(OutputCollector *collector) const = 0;
virtual void OutputSearchGraph(OutputCollector *collector) const = 0;
virtual void OutputSearchGraphSLF() const = 0;
virtual void OutputSearchGraphHypergraph() const = 0;


};
Expand Down
12 changes: 11 additions & 1 deletion moses/ChartManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
#include "moses/FF/WordPenaltyProducer.h"
#include "moses/OutputCollector.h"
#include "moses/ChartKBestExtractor.h"
#include "moses/HypergraphOutput.h"

using namespace std;

Expand All @@ -45,7 +46,7 @@ extern bool g_mosesDebug;
* \param system which particular set of models to use.
*/
ChartManager::ChartManager(InputType const& source)
:m_source(source)
:BaseManager(source)
,m_hypoStackColl(source, *this)
,m_start(clock())
,m_hypothesisId(0)
Expand Down Expand Up @@ -797,4 +798,13 @@ void ChartManager::OutputDetailedAllTranslationReport(
collector->Write(translationId, out.str());
}

void ChartManager::OutputSearchGraphHypergraph() const
{
const StaticData &staticData = StaticData::Instance();
if (staticData.GetOutputSearchGraphHypergraph()) {
HypergraphOutput<ChartManager> hypergraphOutputChart(PRECISION);
hypergraphOutputChart.Write(*this);
}
}

} // namespace Moses
9 changes: 1 addition & 8 deletions moses/ChartManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
#include <boost/unordered_map.hpp>
#include "ChartCell.h"
#include "ChartCellCollection.h"
#include "InputType.h"
#include "WordsRange.h"
#include "SentenceStats.h"
#include "ChartTranslationOptionList.h"
Expand All @@ -47,7 +46,6 @@ class ChartSearchGraphWriter;
class ChartManager : public BaseManager
{
private:
InputType const& m_source; /**< source sentence to be translated */
ChartCellCollection m_hypoStackColl;
std::auto_ptr<SentenceStats> m_sentenceStats;
clock_t m_start; /**< starting time, used for logging */
Expand Down Expand Up @@ -116,12 +114,6 @@ class ChartManager : public BaseManager
/** Output in (modified) Kenneth hypergraph format */
void OutputSearchGraphAsHypergraph(std::ostream &outputSearchGraphStream) const;


//! the input sentence being decoded
const InputType& GetSource() const {
return m_source;
}

//! debug data collected when decoding sentence
SentenceStats& GetSentenceStats() const {
return *m_sentenceStats;
Expand Down Expand Up @@ -163,6 +155,7 @@ class ChartManager : public BaseManager
void OutputSearchGraph(OutputCollector *collector) const;
void OutputSearchGraphSLF() const
{}
void OutputSearchGraphHypergraph() const;

};

Expand Down
2 changes: 1 addition & 1 deletion moses/Hypothesis.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ ObjectPool<Hypothesis> Hypothesis::s_objectPool("Hypothesis", 300000);

Hypothesis::Hypothesis(Manager& manager, InputType const& source, const TranslationOption &initialTransOpt)
: m_prevHypo(NULL)
, m_sourceCompleted(source.GetSize(), manager.m_source.m_sourceCompleted)
, m_sourceCompleted(source.GetSize(), manager.GetSource().m_sourceCompleted)
, m_sourceInput(source)
, m_currSourceWordsRange(
m_sourceCompleted.GetFirstGapPos()>0 ? 0 : NOT_FOUND,
Expand Down
14 changes: 7 additions & 7 deletions moses/Incremental.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ struct ChartCellBaseFactory {
} // namespace

Manager::Manager(const InputType &source) :
source_(source),
BaseManager(source),
cells_(source, ChartCellBaseFactory()),
parser_(source, cells_),
n_best_(search::NBestConfig(StaticData::Instance().GetNBestSize())) {}
Expand All @@ -221,7 +221,7 @@ template <class Model, class Best> search::History Manager::PopulateBest(const M
search::Config config(abstract.GetWeight() * M_LN10, data.GetCubePruningPopLimit(), search::NBestConfig(data.GetNBestSize()));
search::Context<Model> context(config, model);

size_t size = source_.GetSize();
size_t size = m_source.GetSize();
boost::object_pool<search::Vertex> vertex_pool(std::max<size_t>(size * size / 2, 32));

for (int startPos = size-1; startPos >= 0; --startPos) {
Expand Down Expand Up @@ -289,7 +289,7 @@ void Manager::OutputNBest(OutputCollector *collector) const
return;
}

OutputNBestList(collector, *completed_nbest_, source_.GetTranslationId());
OutputNBestList(collector, *completed_nbest_, m_source.GetTranslationId());
}

void Manager::OutputNBestList(OutputCollector *collector, const std::vector<search::Applied> &nbest, long translationId) const
Expand Down Expand Up @@ -329,8 +329,8 @@ void Manager::OutputDetailedTranslationReport(OutputCollector *collector) const
const search::Applied &applied = completed_nbest_->at(0);
OutputDetailedTranslationReport(collector,
&applied,
static_cast<const Sentence&>(source_),
source_.GetTranslationId());
static_cast<const Sentence&>(m_source),
m_source.GetTranslationId());
}

}
Expand Down Expand Up @@ -422,8 +422,8 @@ void Manager::OutputDetailedTreeFragmentsTranslationReport(OutputCollector *coll
}

const search::Applied *applied = &Completed()[0];
const Sentence &sentence = dynamic_cast<const Sentence &>(source_);
const size_t translationId = source_.GetTranslationId();
const Sentence &sentence = dynamic_cast<const Sentence &>(m_source);
const size_t translationId = m_source.GetTranslationId();

std::ostringstream out;
ApplicationContext applicationContext;
Expand Down
3 changes: 2 additions & 1 deletion moses/Incremental.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,12 +54,13 @@ class Manager : public BaseManager
{}
void OutputSearchGraphSLF() const
{}
void OutputSearchGraphHypergraph() const
{}


private:
template <class Model, class Best> search::History PopulateBest(const Model &model, const std::vector<lm::WordIndex> &words, Best &out);

const InputType &source_;
ChartCellCollectionBase cells_;
ChartParser parser_;

Expand Down
4 changes: 2 additions & 2 deletions moses/Jamfile
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ lib moses :
headers FF_Factory.o LM//LM TranslationModel/CompactPT//CompactPT TranslationModel/ProbingPT//ProbingPT synlm ThreadPool

..//search ../util/double-conversion//double-conversion ..//z ../OnDiskPt//OnDiskPt
$(TOP)//boost_iostreams mmlib
$(TOP)//boost_filesystem $(TOP)//boost_iostreams mmlib
:
<threading>single:<source>../util//rt
;
Expand All @@ -99,5 +99,5 @@ alias headers-to-install : [ glob-tree *.h ] ;

import testing ;

unit-test moses_test : [ glob *Test.cpp Mock*.cpp FF/*Test.cpp ] moses headers ..//z ../OnDiskPt//OnDiskPt ..//boost_unit_test_framework ;
unit-test moses_test : [ glob *Test.cpp Mock*.cpp FF/*Test.cpp ] ..//boost_filesystem moses headers ..//z ../OnDiskPt//OnDiskPt ..//boost_unit_test_framework ;

14 changes: 12 additions & 2 deletions moses/Manager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#include "moses/LM/Base.h"
#include "moses/TranslationModel/PhraseDictionary.h"
#include "moses/TranslationAnalysis.h"
#include "moses/HypergraphOutput.h"

#ifdef HAVE_PROTOBUF
#include "hypergraph.pb.h"
Expand All @@ -57,11 +58,11 @@ using namespace std;
namespace Moses
{
Manager::Manager(InputType const& source, SearchAlgorithm searchAlgorithm)
:m_transOptColl(source.CreateTranslationOptionCollection())
:BaseManager(source)
,m_transOptColl(source.CreateTranslationOptionCollection())
,m_search(Search::CreateSearch(*this, source, searchAlgorithm, *m_transOptColl))
,interrupted_flag(0)
,m_hypoId(0)
,m_source(source)
{
StaticData::Instance().InitializeForInput(m_source);
}
Expand Down Expand Up @@ -1810,4 +1811,13 @@ void Manager::OutputSearchGraphSLF() const

}

void Manager::OutputSearchGraphHypergraph() const
{
const StaticData &staticData = StaticData::Instance();
if (staticData.GetOutputSearchGraphHypergraph()) {
HypergraphOutput<Manager> hypergraphOutput(PRECISION);
hypergraphOutput.Write(*this);
}
}

} // namespace
3 changes: 1 addition & 2 deletions moses/Manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,6 @@ class Manager : public BaseManager

protected:
// data
// InputType const& m_source; /**< source sentence to be translated */
TranslationOptionCollection *m_transOptColl; /**< pre-computed list of translation options for the phrases in this sentence */
Search *m_search;

Expand Down Expand Up @@ -146,7 +145,6 @@ class Manager : public BaseManager
void OutputWordGraph(std::ostream &outputWordGraphStream, const Hypothesis *hypo, size_t &linkId) const;

public:
InputType const& m_source; /**< source sentence to be translated */
Manager(InputType const& source, SearchAlgorithm searchAlgorithm);
~Manager();
const TranslationOptionCollection* getSntTranslationOptions();
Expand Down Expand Up @@ -199,6 +197,7 @@ class Manager : public BaseManager
void OutputWordGraph(OutputCollector *collector) const;
void OutputSearchGraph(OutputCollector *collector) const;
void OutputSearchGraphSLF() const;
void OutputSearchGraphHypergraph() const;

};

Expand Down
2 changes: 1 addition & 1 deletion moses/Syntax/S2T/Manager-inl.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ namespace S2T

template<typename Parser>
Manager<Parser>::Manager(const InputType &source)
: m_source(source)
: BaseManager(source)
, m_pchart(source.GetSize(), Parser::RequiresCompressedChart())
, m_schart(source.GetSize())
{
Expand Down
3 changes: 2 additions & 1 deletion moses/Syntax/S2T/Manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ class Manager : public BaseManager
{}
void OutputSearchGraphSLF() const
{}
void OutputSearchGraphHypergraph() const
{}

private:
void FindOovs(const PChart &, std::set<Word> &, std::size_t);
Expand All @@ -70,7 +72,6 @@ class Manager : public BaseManager

void PrunePChart(const SChart::Cell &, PChart::Cell &);

const InputType &m_source;
PChart m_pchart;
SChart m_schart;
std::set<Word> m_oovs;
Expand Down
Loading

0 comments on commit 4b10c59

Please sign in to comment.