init moses2

This commit is contained in:
Hieu Hoang 2015-10-25 11:47:47 +00:00
parent f9de39ca4c
commit fb233b50e0
9 changed files with 102 additions and 7 deletions

View File

@ -9,8 +9,9 @@
#include "Manager.h"
#include "StaticData.h"
Hypothesis::Hypothesis(const Manager &mgr)
Hypothesis::Hypothesis(const Manager &mgr, const Moses::WordsBitmap &bitmap)
:m_mgr(mgr)
,m_bitmap(bitmap)
{
util::Pool &pool = mgr.GetPool();
size_t numStatefulFFs = mgr.GetStaticData().GetStatefulFeatureFunctions().size();

View File

@ -10,12 +10,13 @@
#include <cstddef>
#include "moses/FF/FFState.h"
#include "moses/WordsBitmap.h"
class Manager;
class Hypothesis {
public:
Hypothesis(const Manager &mgr);
Hypothesis(const Manager &mgr, const Moses::WordsBitmap &bitmap);
virtual ~Hypothesis();
size_t hash() const;
@ -23,6 +24,8 @@ public:
protected:
const Manager &m_mgr;
const Moses::WordsBitmap &m_bitmap;
Moses::FFState **m_ffStates;
};

View File

@ -8,6 +8,9 @@
#include "Manager.h"
#include "PhraseTable.h"
#include "StaticData.h"
#include "SearchNormal.h"
using namespace std;
Manager::Manager(const StaticData &staticData, const std::string &inputStr)
:m_staticData(staticData)
@ -22,14 +25,22 @@ Manager::Manager(const StaticData &staticData, const std::string &inputStr)
}
m_stacks.resize(m_input->GetSize());
m_bitmaps = new Moses::Bitmaps(m_input->GetSize(), vector<bool>(0));
m_search = new SearchNormal(*this, m_stacks);
}
void Manager::Decode()
{
const Moses::WordsBitmap &initBitmap = m_bitmaps->GetInitialBitmap();
Hypothesis *iniHypo = new (GetPool().Allocate<Hypothesis>()) Hypothesis(*this, initBitmap);
for (size_t i = 0; i < m_stacks.size(); ++i) {
m_search->Decode(i);
}
}
Manager::~Manager() {
// TODO Auto-generated destructor stub
delete m_bitmaps;
delete m_search;
}

View File

@ -9,12 +9,15 @@
#include <cstddef>
#include <string>
#include <vector>
#include "InputPaths.h"
#include "Stack.h"
#include "moses/Bitmaps.h"
#include "util/pool.hh"
class StaticData;
class Phrase;
class SearchNormal;
class Manager {
public:
@ -24,16 +27,22 @@ public:
const StaticData &GetStaticData() const
{ return m_staticData; }
const Moses::Bitmaps &GetBitmaps() const
{ return *m_bitmaps; }
util::Pool &GetPool() const
{ return m_pool; }
void Decode();
protected:
mutable util::Pool m_pool;
const StaticData &m_staticData;
Phrase *m_input;
InputPaths m_inputPaths;
mutable util::Pool m_pool;
Moses::Bitmaps *m_bitmaps;
std::vector<Stack> m_stacks;
SearchNormal *m_search;
};

View File

@ -0,0 +1,39 @@
/*
* SearchNormal.cpp
*
* Created on: 25 Oct 2015
* Author: hieu
*/
#include "SearchNormal.h"
#include "Stack.h"
SearchNormal::SearchNormal(const Manager &mgr, std::vector<Stack> &stacks)
:m_mgr(mgr)
,m_stacks(stacks)
{
// TODO Auto-generated constructor stub
}
SearchNormal::~SearchNormal() {
// TODO Auto-generated destructor stub
}
void SearchNormal::Decode(size_t stackInd)
{
Stack &stack = m_stacks[stackInd];
Stack::const_iterator iter;
for (iter = stack.begin(); iter != stack.end(); ++iter) {
const Hypothesis &hypo = **iter;
Extend(hypo);
}
}
void SearchNormal::Extend(const Hypothesis &hypo)
{
}

View File

@ -0,0 +1,30 @@
/*
* SearchNormal.h
*
* Created on: 25 Oct 2015
* Author: hieu
*/
#ifndef SEARCHNORMAL_H_
#define SEARCHNORMAL_H_
#include <vector>
class Manager;
class Stack;
class Hypothesis;
class SearchNormal {
public:
SearchNormal(const Manager &mgr, std::vector<Stack> &stacks);
virtual ~SearchNormal();
void Decode(size_t stackInd);
protected:
const Manager &m_mgr;
std::vector<Stack> &m_stacks;
void Extend(const Hypothesis &hypo);
};
#endif /* SEARCHNORMAL_H_ */

View File

@ -18,6 +18,7 @@ Stack::~Stack() {
bool Stack::AddPrune(Hypothesis *hypo)
{
std::pair<iterator, bool> ret = m_hypos.insert(hypo);
std::pair<iterator, bool> ret = m_hypos.insert(hypo);
return ret.second;
}

View File

@ -9,6 +9,7 @@ g++ -I../../.. -I../../../boost/include -L../../../lib -lmoses -lz -o moses2 \
Phrase.cpp \
PhraseTable.cpp \
Scores.cpp \
SearchNormal.cpp \
Stack.cpp \
StatefulFeatureFunction.cpp \
StatelessFeatureFunction.cpp \

View File

@ -26,9 +26,9 @@ class Pool {
}
template<typename T>
void *Allocate(size_t num = 1) {
T *Allocate(size_t num = 1) {
void *ret = Allocate(sizeof(T) * num);
return ret;
return (T*) ret;
}
void FreeAll();