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

📄 sentpair.cpp

📁 解码器是基于短语的统计机器翻译系统的核心模块
💻 CPP
字号:
/** SentPair.cpp  -  Chinese sentence and its English candidate translations** Copyright (C) 2006 by Zhongjun He <zjhe@ict.ac.cn> Multilingual Interaction Technology and Evaluation Laboratory, ICT, CAS* Begin       : 04/13/2006* Last Change : 04/13/2006** This program is free software; you can redistribute it and/or* modify it under the terms of the GNU Lesser General Public* License as published by the Free Software Foundation; either* version 2.1 of the License, or (at your option) any later version.** This program is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the* GNU General Public License for more details.** You should have received a copy of the GNU Lesser General Public* License along with this program; if not, write to the Free Software* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.*/#include "SentPair.h"/************************************************************************/
/* construction function                                                */
/************************************************************************/
SentPair::SentPair(const string &s)
{
  istrstream buffer(s.c_str());
  string temp;
  while (buffer>>temp)
  {
	  ChineseWord.push_back(temp);
  }
}

/************************************************************************/
/* print translation options                                            */
/************************************************************************/
void SentPair::ShowTransOption(ostream &out)
{
	out << "<TransOption num=\"" << transoption.size() << "\">" << endl;
	map<pair<int,int>,TransMap>::iterator it;
	for (it=transoption.begin(); it!=transoption.end(); it++)
	{
		int beg = (*it).first.first, end = (*it).first.second;
		string s;
		for (int i=beg; i<=end; i++)
			s += ChineseWord[i];
		out << "<src phrase=\"" << s << "\" beg=\"" << beg << "\" end=\"" << end << "\">" << endl;

		TransMap::iterator it2;
		for (it2=(*it).second.begin(); it2!=(*it).second.end(); it2++)
		{
			out << "<trans lex=\"" << (*it2).first << "\"> ";
			for (int j=1; j<(int)(*it2).second.size(); j++)
			{
				if (j == (*it2).second.size()-1)
				    out << (*it2).second[j] << " ";
				else
					out << (*it2).second[j] << " | ";
			}
			out << "</trans>" << endl;
		}
		out << "</src>" << endl;
	}
	out << "</TransOption>" << endl;
}

/************************************************************************/
/*Print Future Cost                                                     */
/************************************************************************/
void SentPair::ShowFutureCost(ostream &out)
{
	out << "\n<FutureCost>" << endl;
	map<pair<int,int>,double >::iterator it;
	for (it=FutureCost.begin(); it!=FutureCost.end(); it++)
	{	
		out << "<cost beg=\"" << (*it).first.first << "\" end=\"" << (*it).first.second << "\"> ";
		out << (*it).second << "</cost>" << endl;
	}
	out << "</FutureCost>" << endl;
}

⌨️ 快捷键说明

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