|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once |
|
|
|
|
|
#include <map> |
|
|
#include <vector> |
|
|
#include <string> |
|
|
#include "moses/TranslationModel/PhraseDictionary.h" |
|
|
#include "OnDiskPt/OnDiskWrapper.h" |
|
|
#include "OnDiskPt/Word.h" |
|
|
#include "OnDiskPt/PhraseNode.h" |
|
|
|
|
|
#ifdef WITH_THREADS |
|
|
#include <boost/thread/tss.hpp> |
|
|
#else |
|
|
#include <boost/scoped_ptr.hpp> |
|
|
#endif |
|
|
|
|
|
namespace Moses |
|
|
{ |
|
|
class TargetPhraseCollection; |
|
|
class DottedRuleStackOnDisk; |
|
|
class InputPath; |
|
|
class ChartParser; |
|
|
|
|
|
|
|
|
|
|
|
class PhraseDictionaryOnDisk : public PhraseDictionary |
|
|
{ |
|
|
typedef PhraseDictionary MyBase; |
|
|
friend std::ostream& operator<<(std::ostream&, const PhraseDictionaryOnDisk&); |
|
|
friend class ChartRuleLookupManagerOnDisk; |
|
|
|
|
|
protected: |
|
|
#ifdef WITH_THREADS |
|
|
boost::thread_specific_ptr<OnDiskPt::OnDiskWrapper> m_implementation; |
|
|
#else |
|
|
boost::scoped_ptr<OnDiskPt::OnDiskWrapper> m_implementation; |
|
|
#endif |
|
|
|
|
|
size_t m_maxSpanDefault, m_maxSpanLabelled; |
|
|
|
|
|
OnDiskPt::OnDiskWrapper &GetImplementation(); |
|
|
const OnDiskPt::OnDiskWrapper &GetImplementation() const; |
|
|
|
|
|
void GetTargetPhraseCollectionBatch(InputPath &inputPath) const; |
|
|
|
|
|
Moses::TargetPhrase *ConvertToMoses(const OnDiskPt::TargetPhrase &targetPhraseOnDisk |
|
|
, const std::vector<Moses::FactorType> &inputFactors |
|
|
, const std::vector<Moses::FactorType> &outputFactors |
|
|
, const OnDiskPt::Vocab &vocab |
|
|
, const Moses::PhraseDictionary &phraseDict |
|
|
, const std::vector<float> &weightT |
|
|
, bool isSyntax) const; |
|
|
|
|
|
void ConvertToMoses(const OnDiskPt::Word &wordOnDisk, |
|
|
const std::vector<Moses::FactorType> &outputFactorsVec, |
|
|
const OnDiskPt::Vocab &vocab, |
|
|
Moses::Word &overwrite) const; |
|
|
|
|
|
public: |
|
|
PhraseDictionaryOnDisk(const std::string &line); |
|
|
~PhraseDictionaryOnDisk(); |
|
|
void Load(AllOptions::ptr const& opts); |
|
|
|
|
|
|
|
|
virtual ChartRuleLookupManager *CreateRuleLookupManager( |
|
|
const ChartParser &parser, |
|
|
const ChartCellCollectionBase &, |
|
|
std::size_t); |
|
|
|
|
|
virtual void InitializeForInput(ttasksptr const& ttask); |
|
|
void GetTargetPhraseCollectionBatch(const InputPathList &inputPathQueue) const; |
|
|
|
|
|
TargetPhraseCollection::shared_ptr |
|
|
GetTargetPhraseCollection(const OnDiskPt::PhraseNode *ptNode) const; |
|
|
|
|
|
TargetPhraseCollection::shared_ptr |
|
|
GetTargetPhraseCollectionNonCache(const OnDiskPt::PhraseNode *ptNode) const; |
|
|
|
|
|
Moses::TargetPhraseCollection::shared_ptr |
|
|
ConvertToMoses( |
|
|
const OnDiskPt::TargetPhraseCollection::shared_ptr targetPhrasesOnDisk |
|
|
, const std::vector<Moses::FactorType> &inputFactors |
|
|
, const std::vector<Moses::FactorType> &outputFactors |
|
|
, const Moses::PhraseDictionary &phraseDict |
|
|
, const std::vector<float> &weightT |
|
|
, OnDiskPt::Vocab &vocab |
|
|
, bool isSyntax) const; |
|
|
|
|
|
OnDiskPt::Word *ConvertFromMoses(OnDiskPt::OnDiskWrapper &wrapper, const std::vector<Moses::FactorType> &factorsVec |
|
|
, const Moses::Word &origWord) const; |
|
|
|
|
|
void SetParameter(const std::string& key, const std::string& value); |
|
|
|
|
|
}; |
|
|
|
|
|
} |
|
|
|