move checking of legacy phrase-table to StaticData

This commit is contained in:
Hieu Hoang 2013-10-02 20:02:05 +01:00
parent 6e32bd3e19
commit f2d218f8ee
11 changed files with 34 additions and 47 deletions

View File

@ -5,7 +5,6 @@
#include "FactorCollection.h"
#include "Util.h"
#include "moses/TranslationModel/PhraseDictionaryTreeAdaptor.h"
#include "TranslationOptionCollectionConfusionNet.h"
#include "StaticData.h"
#include "Sentence.h"

View File

@ -76,6 +76,7 @@ public:
return m_defaultLabelSet;
}
};
std::ostream& operator<<(std::ostream& out,const ConfusionNet& cn);

View File

@ -24,6 +24,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#include "InputType.h"
#include "ChartTranslationOptions.h"
#include "StaticData.h"
namespace Moses
{

View File

@ -41,7 +41,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#include "InputFileStream.h"
#include "ScoreComponentCollection.h"
#include "DecodeGraph.h"
#include "moses/TranslationModel/PhraseDictionary.h"
#include "TranslationModel/PhraseDictionary.h"
#include "TranslationModel/PhraseDictionaryTreeAdaptor.h"
#ifdef WITH_THREADS
#include <boost/thread.hpp>
@ -915,6 +916,7 @@ void StaticData::LoadFeatureFunctions()
pt->Load();
}
CheckLEGACYPT();
}
bool StaticData::CheckWeights() const
@ -1065,5 +1067,20 @@ void StaticData::OverrideFeatures()
}
// check whether we should be using the old code to support binary phrase-table.
// eventually, we'll stop support the binary phrase-table and delete this legacy code
void StaticData::CheckLEGACYPT()
{
for (size_t i = 0; i < m_phraseDictionary.size(); ++i) {
const PhraseDictionary *phraseDictionary = m_phraseDictionary[i];
if (dynamic_cast<const PhraseDictionaryTreeAdaptor*>(phraseDictionary) != NULL) {
m_useLegacyPT = true;
return;
}
}
m_useLegacyPT = false;
}
} // namespace

View File

@ -208,6 +208,7 @@ protected:
std::map< std::string, std::set< size_t > > m_weightSettingIgnoreDP; // decoding path
FactorType m_placeHolderFactor;
bool m_useLegacyPT;
StaticData();
@ -223,6 +224,7 @@ protected:
bool m_continuePartialTranslation;
std::string m_binPath;
public:
bool IsAlwaysCreateDirectTranslationOption() const {
@ -751,6 +753,11 @@ public:
FactorType GetPlaceholderFactor() const {
return m_placeHolderFactor;
}
void CheckLEGACYPT();
bool GetUseLegacyPT() const
{ return m_useLegacyPT; }
};
}

View File

@ -126,10 +126,6 @@ TranslationOptionCollectionConfusionNet::TranslationOptionCollectionConfusionNet
} // for (iterPath = prevPaths.begin(); iterPath != prevPaths.end(); ++iterPath) {
}
}
// check whether we should be using the old code to supportbinary phrase-table.
// eventually, we'll stop support the binary phrase-table and delete this legacy code
CheckLEGACY();
}
InputPathList &TranslationOptionCollectionConfusionNet::GetInputPathList(size_t startPos, size_t endPos)
@ -166,7 +162,7 @@ void TranslationOptionCollectionConfusionNet::ProcessUnknownWord(size_t sourcePo
void TranslationOptionCollectionConfusionNet::CreateTranslationOptions()
{
if (!m_useLegacy) {
if (!StaticData::Instance().GetUseLegacyPT()) {
GetTargetPhraseCollectionBatch();
}
TranslationOptionCollection::CreateTranslationOptions();
@ -188,7 +184,7 @@ void TranslationOptionCollectionConfusionNet::CreateTranslationOptionsForRange(
, bool adhereTableLimit
, size_t graphInd)
{
if (m_useLegacy) {
if (StaticData::Instance().GetUseLegacyPT()) {
CreateTranslationOptionsForRangeLEGACY(decodeGraph, startPos, endPos, adhereTableLimit, graphInd);
} else {
CreateTranslationOptionsForRangeNew(decodeGraph, startPos, endPos, adhereTableLimit, graphInd);
@ -300,19 +296,6 @@ void TranslationOptionCollectionConfusionNet::CreateTranslationOptionsForRangeLE
}
}
void TranslationOptionCollectionConfusionNet::CheckLEGACY()
{
const std::vector<PhraseDictionary*> &pts = StaticData::Instance().GetPhraseDictionaries();
for (size_t i = 0; i < pts.size(); ++i) {
const PhraseDictionary *phraseDictionary = pts[i];
if (dynamic_cast<const PhraseDictionaryTreeAdaptor*>(phraseDictionary) != NULL) {
m_useLegacy = true;
return;
}
}
m_useLegacy = false;
}
}

View File

@ -19,8 +19,6 @@ public:
typedef std::vector< std::vector<InputPathList> > InputPathMatrix;
protected:
bool m_useLegacy;
InputPathMatrix m_inputPathMatrix; /*< contains translation options */
InputPathList &GetInputPathList(size_t startPos, size_t endPos);
@ -30,7 +28,6 @@ protected:
, bool adhereTableLimit
, size_t graphInd);
void CheckLEGACY();
void CreateTranslationOptionsForRangeLEGACY(const DecodeGraph &decodeStepList
, size_t startPosition
, size_t endPosition

View File

@ -126,10 +126,6 @@ TranslationOptionCollectionLattice::TranslationOptionCollectionLattice(
} // for (iterPath = prevPaths.begin(); iterPath != prevPaths.end(); ++iterPath) {
}
}
// check whether we should be using the old code to supportbinary phrase-table.
// eventually, we'll stop support the binary phrase-table and delete this legacy code
CheckLEGACY();
}
InputPathList &TranslationOptionCollectionLattice::GetInputPathList(size_t startPos, size_t endPos)
@ -166,7 +162,7 @@ void TranslationOptionCollectionLattice::ProcessUnknownWord(size_t sourcePos)
void TranslationOptionCollectionLattice::CreateTranslationOptions()
{
if (!m_useLegacy) {
if (!StaticData::Instance().GetUseLegacyPT()) {
GetTargetPhraseCollectionBatch();
}
TranslationOptionCollection::CreateTranslationOptions();
@ -188,7 +184,7 @@ void TranslationOptionCollectionLattice::CreateTranslationOptionsForRange(
, bool adhereTableLimit
, size_t graphInd)
{
if (m_useLegacy) {
if (StaticData::Instance().GetUseLegacyPT()) {
CreateTranslationOptionsForRangeLEGACY(decodeGraph, startPos, endPos, adhereTableLimit, graphInd);
} else {
CreateTranslationOptionsForRangeNew(decodeGraph, startPos, endPos, adhereTableLimit, graphInd);
@ -300,20 +296,7 @@ void TranslationOptionCollectionLattice::CreateTranslationOptionsForRangeLEGACY(
}
}
void TranslationOptionCollectionLattice::CheckLEGACY()
{
const std::vector<PhraseDictionary*> &pts = StaticData::Instance().GetPhraseDictionaries();
for (size_t i = 0; i < pts.size(); ++i) {
const PhraseDictionary *phraseDictionary = pts[i];
if (dynamic_cast<const PhraseDictionaryTreeAdaptor*>(phraseDictionary) != NULL) {
m_useLegacy = true;
return;
}
}
m_useLegacy = false;
}
}
} // namespace

View File

@ -18,7 +18,6 @@ public:
typedef std::vector< std::vector<InputPathList> > InputPathMatrix;
protected:
bool m_useLegacy;
InputPathMatrix m_inputPathMatrix; /*< contains translation options */
@ -29,7 +28,6 @@ protected:
, bool adhereTableLimit
, size_t graphInd);
void CheckLEGACY();
void CreateTranslationOptionsForRangeLEGACY(const DecodeGraph &decodeStepList
, size_t startPosition
, size_t endPosition

View File

@ -5,6 +5,7 @@
#include "Util.h"
#include "FloydWarshall.h"
#include "TranslationOptionCollectionLattice.h"
#include "TranslationOptionCollectionConfusionNet.h"
#include "moses/FF/InputFeature.h"
#include "util/check.hh"
@ -214,6 +215,7 @@ WordLattice::CreateTranslationOptionCollection() const
return rv;
}
std::ostream& operator<<(std::ostream &out, const WordLattice &obj)
{
out << "next_nodes=";

View File

@ -46,7 +46,6 @@ public:
{ return next_nodes[pos]; }
TranslationOptionCollection *CreateTranslationOptionCollection() const;
};
}