⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 phrasedictionarytreeadaptor.cpp.svn-base

📁 moses开源的机器翻译系统
💻 SVN-BASE
字号:
// $Id$#include "PhraseDictionaryTreeAdaptor.h"#include <sys/stat.h>#include <algorithm>#include "PhraseDictionaryTree.h"#include "Phrase.h"#include "FactorCollection.h"#include "InputFileStream.h"#include "InputType.h"#include "ConfusionNet.h"#include "Sentence.h"#include "StaticData.h"#include "UniqueObject.h"#include "PDTAimp.h"#include "UserMessage.h"/*************************************************************	function definitions of the interface class	virtually everything is forwarded to the implementation class*************************************************************/PhraseDictionaryTreeAdaptor::PhraseDictionaryTreeAdaptor(size_t numScoreComponent,unsigned numInputScores)	: MyBase(numScoreComponent),imp(new PDTAimp(this,numInputScores)) {}PhraseDictionaryTreeAdaptor::~PhraseDictionaryTreeAdaptor() {	imp->CleanUp();	delete imp;}void PhraseDictionaryTreeAdaptor::CleanUp() {	imp->CleanUp();	MyBase::CleanUp();}void PhraseDictionaryTreeAdaptor::InitializeForInput(InputType const& source){	// caching only required for confusion net	if(ConfusionNet const* cn=dynamic_cast<ConfusionNet const*>(&source))		imp->CacheSource(*cn);	//else if(Sentence const* s=dynamic_cast<Sentence const*>(&source))	// following removed by phi, not helpful	//	imp->CacheSource(ConfusionNet(*s));}bool PhraseDictionaryTreeAdaptor::Load(const std::vector<FactorType> &input																				 , const std::vector<FactorType> &output																				 , const std::string &filePath																				 , const std::vector<float> &weight																				 , size_t tableLimit																				 , const LMList &languageModels																				 , float weightWP																				 ){	FactorCollection &factorCollection = FactorCollection::Instance();	if(m_numScoreComponent!=weight.size()) {		stringstream strme;		strme << "ERROR: mismatch of number of scaling factors: "<<weight.size()						 <<" "<<m_numScoreComponent<<"\n";		UserMessage::Add(strme.str());		return false;	}	m_filePath = filePath;	// set Dictionary members	m_inputFactors = FactorMask(input);	m_outputFactors = FactorMask(output);	VERBOSE(2,"PhraseDictionaryTreeAdaptor: input=" << m_inputFactors << "  output=" << m_outputFactors << std::endl);	// set PhraseDictionary members	m_tableLimit=tableLimit;	imp->Create(input,output,filePath,							weight,languageModels,weightWP);	return true;}TargetPhraseCollection const* PhraseDictionaryTreeAdaptor::GetTargetPhraseCollection(Phrase const &src) const{	return imp->GetTargetPhraseCollection(src);}TargetPhraseCollection const* PhraseDictionaryTreeAdaptor::GetTargetPhraseCollection(InputType const& src,WordsRange const &range) const{	if(imp->m_rangeCache.empty())	{		return imp->GetTargetPhraseCollection(src.GetSubString(range));	}	else	{		return imp->m_rangeCache[range.GetStartPos()][range.GetEndPos()];	}}void PhraseDictionaryTreeAdaptor::SetWeightTransModel(const std::vector<float> &weightT){	CleanUp();	imp->m_weights=weightT;}void PhraseDictionaryTreeAdaptor::AddEquivPhrase(const Phrase &source, const TargetPhrase &targetPhrase) {	imp->AddEquivPhrase(source,targetPhrase);}void PhraseDictionaryTreeAdaptor::EnableCache(){	imp->useCache=1;}void PhraseDictionaryTreeAdaptor::DisableCache(){	imp->useCache=0;}size_t PhraseDictionaryTreeAdaptor::GetNumInputScores() const {	return imp->GetNumInputScores();}std::string PhraseDictionaryTreeAdaptor::GetScoreProducerDescription() const{	return "Translation score, file=" + m_filePath;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -