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

📄 languagemodel.cpp.svn-base

📁 moses开源的机器翻译系统
💻 SVN-BASE
字号:
// $Id$/***********************************************************************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 <cassert>#include <limits>#include <iostream>#include <sstream>#include "LanguageModel.h"#include "TypeDef.h"#include "Util.h"#include "FactorCollection.h"#include "Phrase.h"#include "StaticData.h"using namespace std;LanguageModel::LanguageModel(bool registerScore, ScoreIndexManager &scoreIndexManager) {	if (registerScore)		scoreIndexManager.AddScoreProducer(this);}LanguageModel::~LanguageModel() {}// don't inline virtual funcs...size_t LanguageModel::GetNumScoreComponents() const{	return 1;}void LanguageModel::CalcScore(const Phrase &phrase														, float &fullScore														, float &ngramScore) const{	fullScore	= 0;	ngramScore	= 0;	size_t phraseSize = phrase.GetSize();	vector<const Word*> contextFactor;	contextFactor.reserve(m_nGramOrder);	// start of sentence	for (size_t currPos = 0 ; currPos < m_nGramOrder - 1 && currPos < phraseSize ; currPos++)	{		contextFactor.push_back(&phrase.GetWord(currPos));				fullScore += GetValue(contextFactor);	}		if (phraseSize >= m_nGramOrder)	{		contextFactor.push_back(&phrase.GetWord(m_nGramOrder - 1));		ngramScore = GetValue(contextFactor);	}		// main loop	for (size_t currPos = m_nGramOrder; currPos < phraseSize ; currPos++)	{ // used by hypo to speed up lm score calc		for (size_t currNGramOrder = 0 ; currNGramOrder < m_nGramOrder - 1 ; currNGramOrder++)		{			contextFactor[currNGramOrder] = contextFactor[currNGramOrder + 1];		}		contextFactor[m_nGramOrder - 1] = &phrase.GetWord(currPos);		float partScore = GetValue(contextFactor);				ngramScore += partScore;			}	fullScore += ngramScore;	}LanguageModel::State LanguageModel::GetState(const std::vector<const Word*> &contextFactor, unsigned int* len) const{  State state;	unsigned int dummy;  if (!len) len = &dummy;  GetValue(contextFactor,&state,len);  return state;}

⌨️ 快捷键说明

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