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

📄 word.cpp.svn-base

📁 moses开源的机器翻译系统
💻 SVN-BASE
字号:
// $Id$// vim::tabstop=2/***********************************************************************Moses - factored phrase-based language decoderCopyright (C) 2006 University of EdinburghThis library is free software; you can redistribute it and/ormodify it under the terms of the GNU Lesser General PublicLicense as published by the Free Software Foundation; eitherversion 2.1 of the License, or (at your option) any later version.This library is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNULesser General Public License for more details.You should have received a copy of the GNU Lesser General PublicLicense along with this library; if not, write to the Free SoftwareFoundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA***********************************************************************/#include <sstream>#include "memory.h"#include "Word.h"#include "TypeDef.h"#include "StaticData.h"  // needed to determine the FactorDelimiterusing namespace std;// staticint Word::Compare(const Word &targetWord, const Word &sourceWord){	for (size_t factorType = 0 ; factorType < MAX_NUM_FACTORS ; factorType++)	{		const Factor *targetFactor		= targetWord[factorType]								,*sourceFactor	= sourceWord[factorType];		if (targetFactor == NULL || sourceFactor == NULL)			continue;		if (targetFactor == sourceFactor)			continue;				return (targetFactor<sourceFactor) ? -1 : +1;	}	return 0;}void Word::Merge(const Word &sourceWord){	for (unsigned int currFactor = 0 ; currFactor < MAX_NUM_FACTORS ; currFactor++)	{		const Factor *sourcefactor		= sourceWord.m_factorArray[currFactor]								,*targetFactor		= this     ->m_factorArray[currFactor];		if (targetFactor == NULL && sourcefactor != NULL)		{			m_factorArray[currFactor] = sourcefactor;		}	}}std::string Word::GetString(const vector<FactorType> factorType,bool endWithBlank) const{	stringstream strme;	assert(factorType.size() <= MAX_NUM_FACTORS);	const std::string& factorDelimiter = StaticData::Instance().GetFactorDelimiter();	bool firstPass = true;	for (unsigned int i = 0 ; i < factorType.size() ; i++)	{		const Factor *factor = m_factorArray[factorType[i]];		if (factor != NULL)		{			if (firstPass) { firstPass = false; } else { strme << factorDelimiter; }			strme << factor->GetString();		}	}	if(endWithBlank) strme << " ";	return strme.str();}TO_STRING_BODY(Word);// friendostream& operator<<(ostream& out, const Word& word){		stringstream strme;	const std::string& factorDelimiter = StaticData::Instance().GetFactorDelimiter();	bool firstPass = true;	for (unsigned int currFactor = 0 ; currFactor < MAX_NUM_FACTORS ; currFactor++)	{		FactorType factorType = static_cast<FactorType>(currFactor);		const Factor *factor = word.GetFactor(factorType);		if (factor != NULL)		{			if (firstPass) { firstPass = false; } else { strme << factorDelimiter; }			strme << *factor;		}	}	out << strme.str() << " ";	return out;}

⌨️ 快捷键说明

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