void PhraseDictionaryOnDisk::InitializeForInput(InputType const& source) { const StaticData &staticData = StaticData::Instance(); ReduceCache(); OnDiskPt::OnDiskWrapper *obj = new OnDiskPt::OnDiskWrapper(); obj->BeginLoad(m_filePath); UTIL_THROW_IF2(obj->GetMisc("Version") != OnDiskPt::OnDiskWrapper::VERSION_NUM, "On-disk phrase table is version " << obj->GetMisc("Version") << ". It is not compatible with version " << OnDiskPt::OnDiskWrapper::VERSION_NUM); UTIL_THROW_IF2(obj->GetMisc("NumSourceFactors") != m_input.size(), "On-disk phrase table has " << obj->GetMisc("NumSourceFactors") << " source factors." << ". The ini file specified " << m_input.size() << " source factors"); UTIL_THROW_IF2(obj->GetMisc("NumTargetFactors") != m_output.size(), "On-disk phrase table has " << obj->GetMisc("NumTargetFactors") << " target factors." << ". The ini file specified " << m_output.size() << " target factors"); UTIL_THROW_IF2(obj->GetMisc("NumScores") != m_numScoreComponents, "On-disk phrase table has " << obj->GetMisc("NumScores") << " scores." << ". The ini file specified " << m_numScoreComponents << " scores"); m_implementation.reset(obj); }
void PhraseDictionaryTreeAdaptor::InitializeForInput(InputType const& source) { const StaticData &staticData = StaticData::Instance(); ReduceCache(); PDTAimp *obj = new PDTAimp(this); vector<float> weight = staticData.GetWeights(this); if(m_numScoreComponents!=weight.size()) { std::stringstream strme; strme << "ERROR: mismatch of number of scaling factors: "<<weight.size() <<" "<<m_numScoreComponents<<"\n"; UserMessage::Add(strme.str()); abort(); } obj->Create(m_input, m_output, m_filePath, weight); obj->CleanUp(); // caching only required for confusion net if(ConfusionNet const* cn=dynamic_cast<ConfusionNet const*>(&source)) obj->CacheSource(*cn); m_implementation.reset(obj); }
void PhraseDictionaryOnDisk::InitializeForInput(InputType const& source) { const StaticData &staticData = StaticData::Instance(); ReduceCache(); OnDiskPt::OnDiskWrapper *obj = new OnDiskPt::OnDiskWrapper(); if (!obj->BeginLoad(m_filePath)) return; CHECK(obj->GetMisc("Version") == OnDiskPt::OnDiskWrapper::VERSION_NUM); CHECK(obj->GetMisc("NumSourceFactors") == m_input.size()); CHECK(obj->GetMisc("NumTargetFactors") == m_output.size()); CHECK(obj->GetMisc("NumScores") == m_numScoreComponents); m_implementation.reset(obj); }
void PhraseDictionaryCompact::CleanUpAfterSentenceProcessing(const InputType &source) { if(!m_inMemory) m_hash.KeepNLastRanges(0.01, 0.2); m_phraseDecoder->PruneCache(); #ifdef WITH_THREADS boost::mutex::scoped_lock lock(m_sentenceMutex); PhraseCache &ref = m_sentenceCache[boost::this_thread::get_id()]; #else PhraseCache &ref = m_sentenceCache; #endif for(PhraseCache::iterator it = ref.begin(); it != ref.end(); it++) delete *it; PhraseCache temp; temp.swap(ref); ReduceCache(); }
void PhraseDictionaryTransliteration::CleanUpAfterSentenceProcessing(const InputType& source) { ReduceCache(); }