|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef moses_PhraseDictionaryCompact_h |
|
|
#define moses_PhraseDictionaryCompact_h |
|
|
|
|
|
#include <boost/unordered_map.hpp> |
|
|
|
|
|
#ifdef WITH_THREADS |
|
|
#ifdef BOOST_HAS_PTHREADS |
|
|
#include <boost/thread/mutex.hpp> |
|
|
#endif |
|
|
#endif |
|
|
|
|
|
#include "moses/TranslationModel/PhraseDictionary.h" |
|
|
#include "moses/ThreadPool.h" |
|
|
|
|
|
#include "BlockHashIndex.h" |
|
|
#include "StringVector.h" |
|
|
#include "PhraseDecoder.h" |
|
|
#include "TargetPhraseCollectionCache.h" |
|
|
|
|
|
namespace Moses |
|
|
{ |
|
|
|
|
|
class PhraseDecoder; |
|
|
|
|
|
class PhraseDictionaryCompact : public PhraseDictionary |
|
|
{ |
|
|
protected: |
|
|
friend class PhraseDecoder; |
|
|
|
|
|
static bool s_inMemoryByDefault; |
|
|
bool m_inMemory; |
|
|
bool m_useAlignmentInfo; |
|
|
|
|
|
typedef std::vector<TargetPhraseCollection::shared_ptr > PhraseCache; |
|
|
typedef boost::thread_specific_ptr<PhraseCache> SentenceCache; |
|
|
static SentenceCache m_sentenceCache; |
|
|
|
|
|
BlockHashIndex m_hash; |
|
|
PhraseDecoder* m_phraseDecoder; |
|
|
|
|
|
StringVector<unsigned char, size_t, MmapAllocator> m_targetPhrasesMapped; |
|
|
StringVector<unsigned char, size_t, std::allocator> m_targetPhrasesMemory; |
|
|
|
|
|
public: |
|
|
PhraseDictionaryCompact(const std::string &line); |
|
|
|
|
|
~PhraseDictionaryCompact(); |
|
|
|
|
|
void Load(AllOptions::ptr const& opts); |
|
|
|
|
|
TargetPhraseCollection::shared_ptr GetTargetPhraseCollectionNonCacheLEGACY(const Phrase &source) const; |
|
|
TargetPhraseVectorPtr GetTargetPhraseCollectionRaw(const Phrase &source) const; |
|
|
|
|
|
void AddEquivPhrase(const Phrase &source, const TargetPhrase &targetPhrase); |
|
|
|
|
|
void CacheForCleanup(TargetPhraseCollection::shared_ptr tpc); |
|
|
void CleanUpAfterSentenceProcessing(const InputType &source); |
|
|
static void SetStaticDefaultParameters(Parameter const& param); |
|
|
|
|
|
virtual ChartRuleLookupManager *CreateRuleLookupManager( |
|
|
const ChartParser &, |
|
|
const ChartCellCollectionBase &, |
|
|
std::size_t) { |
|
|
assert(false); |
|
|
return 0; |
|
|
} |
|
|
|
|
|
TO_STRING(); |
|
|
|
|
|
}; |
|
|
|
|
|
} |
|
|
#endif |
|
|
|