本文整理汇总了C++中Hypothesis::Update方法的典型用法代码示例。如果您正苦于以下问题:C++ Hypothesis::Update方法的具体用法?C++ Hypothesis::Update怎么用?C++ Hypothesis::Update使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Hypothesis
的用法示例。
在下文中一共展示了Hypothesis::Update方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: generate_hypotheses
void generate_hypotheses(const int order, const Hypothesis & h,
const vector<ME_Model> & vme,
list<Hypothesis> & vh)
{
int n = h.vt.size();
int pred_position = -1;
double min_ent = 999999;
string pred = "";
double pred_prob = 0;
for (int j = 0; j < n; j++) {
if (h.vt[j].cprd != "") continue;
double ent = h.vent[j];
if (ent < min_ent) {
// pred = h.vvp[j].begin()->first;
// pred_prob = h.vvp[j].begin()->second;
min_ent = ent;
pred_position = j;
}
}
assert(pred_position >= 0 && pred_position < n);
for (vector<pair<string, double> >::const_iterator k = h.vvp[pred_position].begin();
k != h.vvp[pred_position].end(); k++) {
Hypothesis newh = h;
newh.vt[pred_position].cprd = k->first;
newh.order[pred_position] = order + 1;
newh.prob = h.prob * k->second;
// if (newh.IsErroneous()) {
// cout << "*errorneous" << endl;
// newh.Print();
// continue;
// }
// update the neighboring predictions
for (int j = pred_position - TAG_WINDOW_SIZE; j <= pred_position + TAG_WINDOW_SIZE; j++) {
if (j < 0 || j > n-1) continue;
if (newh.vt[j].cprd == "") newh.Update(j, vme);
}
vh.push_back(newh);
}
}