void PhraseDictionaryMultiModelCounts::CollectSufficientStatistics(const Phrase& src, vector<float> &fs, map<string,multiModelCountsStatistics*>* allStats) const //fill fs and allStats with statistics from models { for(size_t i = 0; i < m_numModels; ++i) { const PhraseDictionary &pd = *m_pd[i]; TargetPhraseCollection *ret_raw = (TargetPhraseCollection*) pd.GetTargetPhraseCollection( src); if (ret_raw != NULL) { TargetPhraseCollection::iterator iterTargetPhrase; for (iterTargetPhrase = ret_raw->begin(); iterTargetPhrase != ret_raw->end(); ++iterTargetPhrase) { TargetPhrase * targetPhrase = *iterTargetPhrase; vector<float> raw_scores = targetPhrase->GetScoreBreakdown().GetScoresForProducer(&pd); string targetString = targetPhrase->GetStringRep(m_output); if (allStats->find(targetString) == allStats->end()) { multiModelCountsStatistics * statistics = new multiModelCountsStatistics; statistics->targetPhrase = new TargetPhrase(*targetPhrase); //make a copy so that we don't overwrite the original phrase table info // zero out scores from original phrase table statistics->targetPhrase->GetScoreBreakdown().ZeroDenseFeatures(&pd); statistics->fst.resize(m_numModels); statistics->ft.resize(m_numModels); Scores scoreVector(5); scoreVector[0] = -raw_scores[0]; scoreVector[1] = -raw_scores[1]; scoreVector[2] = -raw_scores[2]; statistics->targetPhrase->GetScoreBreakdown().Assign(this, scoreVector); // set scores to 0 statistics->targetPhrase->Evaluate(src, GetFeaturesToApply()); (*allStats)[targetString] = statistics; } multiModelCountsStatistics * statistics = (*allStats)[targetString]; statistics->fst[i] = UntransformScore(raw_scores[0]); statistics->ft[i] = UntransformScore(raw_scores[1]); fs[i] = UntransformScore(raw_scores[2]); (*allStats)[targetString] = statistics; } } } // get target phrase frequency for models which have not seen the phrase pair for ( map< string, multiModelCountsStatistics*>::const_iterator iter = allStats->begin(); iter != allStats->end(); ++iter ) { multiModelCountsStatistics * statistics = iter->second; for (size_t i = 0; i < m_numModels; ++i) { if (!statistics->ft[i]) { statistics->ft[i] = GetTargetCount(static_cast<const Phrase&>(*statistics->targetPhrase), i); } } } }
int CMidiTargetDlg::FindTargetByCtrlID(int CtrlID) const { ASSERT(m_TargetInfo != NULL); int nTargets = GetTargetCount(); for (int iTarg = 0; iTarg < nTargets; iTarg++) { // for each target if (m_TargetInfo[iTarg].CtrlID == CtrlID) // if control ID found return(iTarg); } return(-1); }
BOOL CMidiTargetDlg::OnInitDialog() { CChildDlg::OnInitDialog(); m_List.CreateColumns(m_ColInfo, COLUMNS); m_List.LoadColumnWidths(REG_SETTINGS, m_RegKey + RK_COLUMN_WIDTHS); m_List.SetItemCountEx(GetTargetCount()); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }
bool StageInformation::HasNextTarget() {//다음 타겟이 있는지 검사 if (m_currentTargetIndex < GetTargetCount()) { m_currentTarget = m_targetInfoList.at(m_currentTargetIndex); m_currentTargetIndex++; return true; } else { return false; } }