当前位置: 首页>>代码示例>>C++>>正文


C++ Token::IsOptional方法代码示例

本文整理汇总了C++中Token::IsOptional方法的典型用法代码示例。如果您正苦于以下问题:C++ Token::IsOptional方法的具体用法?C++ Token::IsOptional怎么用?C++ Token::IsOptional使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Token的用法示例。


在下文中一共展示了Token::IsOptional方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: GetTransitionCostGenericWordBased

/** returns the cost between 2 coordinates generic way to compute */
int Graph::GetTransitionCostGenericWordBased(size_t* coordcurr, size_t* coordprev)
{
	size_t nbrchange = 0;
	vector<Token*> vectToken;
	vector<int> vectCounts;
	bool found, deletable;
	size_t index = 0;
	
	deletable = false;
	
	for(size_t i=0; i<GetDimension(); ++i)
	{
		if(coordcurr[i] != coordprev[i])
		{
			Token* aToken = m_TabVecHypRef[i][coordcurr[i]];
			deletable = aToken->IsOptional();
			
			found = false;
			
			for(size_t j=0; j<vectToken.size(); ++j)
			{
				if(aToken->IsEquivalentTo(vectToken[j]))
				{
					found = true;
					index = j;
				}
			}
			
			if(!found)
			{
				vectToken.push_back(aToken);
				vectCounts.push_back(1);
			}
			else
			{
				++(vectCounts[index]);
			}
			
			++nbrchange;
		}
	}
	
	vectToken.clear();
	
	int nbroccur = 0;
	
	for(size_t j=0; j<vectCounts.size(); ++j)
		if(vectCounts[j] > nbroccur)
			nbroccur = vectCounts[j];
	
	vectCounts.clear();
	
	return( GetCostInsertion(deletable)*( GetDimension() - nbrchange ) + GetCostTransition()*( nbrchange - nbroccur ) );
}
开发者ID:usnistgov,项目名称:SCTK,代码行数:55,代码来源:graph.cpp

示例2: GetTransitionCostGenericTimeBased

int Graph::GetTransitionCostGenericTimeBased(size_t* coordcurr, size_t* coordprev)
{
	bool deletable = false;
	int mintime = -1;
	int maxtime = -1;
	int deletioncost = 0;
	int transitioncost = 0;
	
	for(size_t i=0; i<GetDimension(); ++i)
	{
		if(coordcurr[i] != coordprev[i])
		{
			Token* aToken = m_TabVecHypRef[i][coordcurr[i]];
			deletable = aToken->IsOptional();
			
			if( (mintime == -1) || (aToken->GetStartTime() < mintime) )
				mintime = aToken->GetStartTime();
			
			if( (maxtime == -1) || (aToken->GetEndTime() > maxtime) )
				maxtime = aToken->GetEndTime();
		}
	}

	for(size_t i=0; i<GetDimension(); ++i)
	{
		if(coordcurr[i] != coordprev[i])
		{
			Token* aToken = m_TabVecHypRef[i][coordcurr[i]];
			transitioncost = maxtime - aToken->GetEndTime() + aToken->GetStartTime() - mintime;
		}
		else
			deletioncost += maxtime - mintime;
	}
	
	return( (GetCostInsertion(deletable)*deletioncost + GetCostTransition()*transitioncost)/m_TimeBasedSafeDivider );
}		
开发者ID:usnistgov,项目名称:SCTK,代码行数:36,代码来源:graph.cpp

示例3: TestText

void TestToken::TestText()
{
	SpeechSet* speechSet = new SpeechSet();
	Speech* speech = new Speech(speechSet);
	Segment* segment = Segment::CreateWithDuration(0, 10000, speech);
	Token* token = Token::CreateWithDuration(0, 0, segment);
	token->SetSourceText("hop");
	assert(token->GetText() == "hop");

	//JGF Note: I only added the full test cases for optional frags for the SetProperty("align.optionally", "both") test
	Properties::SetProperty("align.optionally", "both");
		// (hop)
	token->SetSourceText("(hop)");
	assert(token->GetSourceText() == "(hop)");
	assert(token->GetText() == "hop");
	assert(token->GetFragmentStatus() == Token::NOT_FRAGMENT);
	assert(token->IsOptional());
	Properties::SetProperty("align.fragment_are_correct", "true");
	assert(token->GetText() == "hop");
	Properties::SetProperty("align.fragment_are_correct", "false");
	assert(token->GetText() == "hop");
		// hop-
	Properties::SetProperty("align.fragment_are_correct", "false");
	token->SetSourceText("hop-");
	assert(token->GetSourceText() == "hop-");
	Properties::SetProperty("align.fragment_are_correct", "true");
	assert(token->GetText() == "hop");
	assert(token->GetFragmentStatus() == Token::BEGIN_FRAGMENT);
	Properties::SetProperty("align.fragment_are_correct", "false");
	assert(token->GetText() == "hop-");
	assert(token->GetFragmentStatus() == Token::NOT_FRAGMENT);
		// (hop-)
	Properties::SetProperty("align.fragment_are_correct", "false");
	token->SetSourceText("(hop-)");
	assert(token->GetSourceText() == "(hop-)");
	Properties::SetProperty("align.fragment_are_correct", "true");
	assert(token->GetText() == "hop");
	assert(token->GetFragmentStatus() == Token::BEGIN_FRAGMENT);
	Properties::SetProperty("align.fragment_are_correct", "false");
	assert(token->GetText() == "hop-");
	assert(token->GetFragmentStatus() == Token::NOT_FRAGMENT);
		// -hop
	Properties::SetProperty("align.fragment_are_correct", "false");
	token->SetSourceText("-hop");
	assert(token->GetSourceText() == "-hop");
	Properties::SetProperty("align.fragment_are_correct", "true");
	assert(token->GetText() == "hop");
	assert(token->GetFragmentStatus() == Token::END_FRAGMENT);
	Properties::SetProperty("align.fragment_are_correct", "false");
	assert(token->GetText() == "-hop");
	assert(token->GetFragmentStatus() == Token::NOT_FRAGMENT);
		// (-hop)
	Properties::SetProperty("align.fragment_are_correct", "false");
	token->SetSourceText("(-hop)");
	assert(token->GetSourceText() == "(-hop)");
	Properties::SetProperty("align.fragment_are_correct", "true");
		cout << "Get " << token->GetText() << endl;
	assert(token->GetText() == "hop");
	assert(token->GetFragmentStatus() == Token::END_FRAGMENT);
	Properties::SetProperty("align.fragment_are_correct", "false");
	assert(token->GetText() == "-hop");
	assert(token->GetFragmentStatus() == Token::NOT_FRAGMENT);

	Properties::SetProperty("align.optionally", "ref");
	speechSet->SetOrigin("ref");
	token->SetSourceText("(hop)");
	assert(token->GetSourceText() == "(hop)");
	assert(token->GetText() == "hop");
	assert(token->IsOptional());
	assert(token->GetFragmentStatus() == Token::NOT_FRAGMENT);
	Properties::SetProperty("align.fragment_are_correct", "true");
	assert(token->GetText() == "hop");
	Properties::SetProperty("align.fragment_are_correct", "false");
	assert(token->GetText() == "hop");
	token->SetSourceText("(hop-)");
	assert(token->GetSourceText() == "(hop-)");
	Properties::SetProperty("align.fragment_are_correct", "true");
	assert(token->GetText() == "hop");
	assert(token->GetFragmentStatus() == Token::BEGIN_FRAGMENT);
	Properties::SetProperty("align.fragment_are_correct", "false");
	assert(token->GetText() == "hop-");
	assert(token->GetFragmentStatus() == Token::NOT_FRAGMENT);

	Properties::SetProperty("align.optionally", "ref");
	speechSet->SetOrigin("hyp");
	token->SetSourceText("(hop)");
	assert(token->GetSourceText() == "(hop)");
	assert(token->GetText() == "(hop)");
	assert(!token->IsOptional());
	assert(token->GetFragmentStatus() == Token::NOT_FRAGMENT);
	Properties::SetProperty("align.fragment_are_correct", "true");
	assert(token->GetText() == "(hop)");
	Properties::SetProperty("align.fragment_are_correct", "false");
	assert(token->GetText() == "(hop)");
	token->SetSourceText("(hop-)");
	assert(token->GetSourceText() == "(hop-)");
	Properties::SetProperty("align.fragment_are_correct", "true");
	assert(token->GetText() == "(hop-)");
	assert(token->GetFragmentStatus() == Token::NOT_FRAGMENT);
	Properties::SetProperty("align.fragment_are_correct", "false");
//.........这里部分代码省略.........
开发者ID:AIDman,项目名称:Kaldi,代码行数:101,代码来源:test_token.cpp


注:本文中的Token::IsOptional方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。