コード例 #1
0
void PhrasePenalty::EvaluateInIsolation(const Phrase &source
                             , const TargetPhrase &targetPhrase
                             , ScoreComponentCollection &scoreBreakdown
                             , ScoreComponentCollection &estimatedFutureScore) const
{
  if (m_perPhraseTable) {
	  const PhraseDictionary *pt = targetPhrase.GetContainer();
	  if (pt) {
		  size_t ptId = pt->GetId();
		  UTIL_THROW_IF2(ptId >= m_numScoreComponents, "Wrong number of scores");

		  vector<float> scores(m_numScoreComponents, 0);
		  scores[ptId] = 1.0f;

		  scoreBreakdown.Assign(this, scores);
	  }

  }
  else {
	  scoreBreakdown.Assign(this, 1.0f);
  }
}